유닉스 도메인 소켓 Unix Domain Socket, UDS

agnusdei·2025년 11월 7일

CTF

목록 보기
156/185

💻 유닉스 도메인 소켓 (Unix Domain Socket, UDS) 설명

유닉스 도메인 소켓(Unix Domain Socket, UDS), 또는 때로는 IPC 소켓(Inter-Process Communication Socket)이라고 불리는 기술은, 동일한 호스트(Host), 즉 단일 운영 체제(Operating System, OS) 커널 내에서 실행되는 두 개 이상의 프로세스(Process) 간에 데이터를 교환하기 위한 프로세스 간 통신(Inter-Process Communication, IPC) 메커니즘 중 하나입니다.

Tmux와 같은 로컬 서버 아키텍처에서 Tmux 클라이언트Tmux 서버 간에 통신하는 핵심 수단입니다.


1. 유닉스 소켓의 원리 및 특징

💡 통신 방식: 파일 시스템 기반 통신

  • 소켓 주소: 유닉스 소켓은 IP 주소포트 번호 대신, 파일 시스템 경로를 주소로 사용합니다. 소켓이 생성되면, /tmp/tmux-501/default와 같은 특정 경로에 특수 파일로 생성됩니다.
  • 커널 우회: 일반적인 TCP/IP 소켓(Internet Domain Socket) 통신은 데이터를 주고받기 위해 네트워크 스택(Network Stack)을 거쳐야 합니다. 그러나 유닉스 소켓은 데이터가 OS 커널(Kernel) 내에서 직접 전달되므로, 네트워크 인터페이스를 거치지 않습니다.

⚙️ 주요 특징 및 장점

  • 성능 우위 (Performance Advantage): 네트워크 스택 처리를 우회하고 데이터 복사 횟수가 줄어들어, 네트워크 오버헤드(Network Overhead)가 발생하지 않습니다. 따라서 로컬 IPC에서는 TCP/IP 소켓 통신보다 훨씬 빠릅니다.
  • 보안성 (Security): 통신이 로컬 시스템 내로 격리(Isolated)됩니다. 또한, 파일 시스템 권한(File System Permissions)을 사용하여 접근을 제어할 수 있습니다 (예: 특정 사용자 또는 그룹만 소켓 파일에 접근 허용). 이는 Tmux와 같이 로컬 사용자만 세션에 접근해야 하는 경우에 강력한 보안을 제공합니다.
  • 프로세스 식별: 파일 시스템 경로를 사용하기 때문에, 통신하려는 프로세스를 명확하게 식별할 수 있습니다.

2. TCP/IP 소켓과의 비교 (인터넷 도메인 소켓)

구분유닉스 도메인 소켓 (UDS)TCP/IP 소켓 (Internet Domain Socket)
통신 범위동일 호스트(로컬) 내 프로세스 간네트워크를 통한 원격 및 로컬 프로세스 간
주소 지정파일 시스템 경로 (예: /tmp/socket_file)IP 주소와 포트 번호 (예: 127.0.0.1:8080)
기반 기술OS 커널 내 IPC 메커니즘네트워크 스택 (TCP/IP)
주요 장점높은 성능, 파일 권한 기반 보안광범위한 연결성, 원격 통신

3. Tmux에서 유닉스 소켓의 활용

Tmux의 아키텍처는 유닉스 소켓의 이상적인 활용 사례입니다.

  1. Tmux 서버 시작: 사용자가 tmux를 실행하면, tmux server 프로세스가 시작되고 유닉스 소켓 파일을 생성합니다. 이 소켓 파일은 Tmux 서버의 통신 채널(Communication Channel) 역할을 합니다.
  2. 클라이언트 접속: 나중에 사용자가 tmux attach를 실행할 때, 이 명령은 새로운 tmux client 프로세스를 시작합니다.
  3. IPC 통신: tmux client는 이전에 생성된 유닉스 소켓 파일 경로를 통해 tmux server에 연결하여 통신을 시작합니다. 이 통신을 통해 클라이언트는 서버에게 세션 상태(Session State) 요청, 키 입력 전달, 화면 업데이트 수신 등을 수행합니다.

이처럼 유닉스 소켓은 Tmux 서버Tmux 클라이언트가 로컬에서 안전하고 매우 빠르게 데이터를 주고받을 수 있도록 보장하여, SSH 연결이 끊어져도 세션을 즉시 재연결(Reattach)할 수 있는 기반 기술을 제공합니다.

0개의 댓글