유닉스 도메인 소켓(Unix Domain Socket, UDS), 또는 때로는 IPC 소켓(Inter-Process Communication Socket)이라고 불리는 기술은, 동일한 호스트(Host), 즉 단일 운영 체제(Operating System, OS) 커널 내에서 실행되는 두 개 이상의 프로세스(Process) 간에 데이터를 교환하기 위한 프로세스 간 통신(Inter-Process Communication, IPC) 메커니즘 중 하나입니다.
Tmux와 같은 로컬 서버 아키텍처에서 Tmux 클라이언트와 Tmux 서버 간에 통신하는 핵심 수단입니다.
/tmp/tmux-501/default와 같은 특정 경로에 특수 파일로 생성됩니다.| 구분 | 유닉스 도메인 소켓 (UDS) | TCP/IP 소켓 (Internet Domain Socket) |
|---|---|---|
| 통신 범위 | 동일 호스트(로컬) 내 프로세스 간 | 네트워크를 통한 원격 및 로컬 프로세스 간 |
| 주소 지정 | 파일 시스템 경로 (예: /tmp/socket_file) | IP 주소와 포트 번호 (예: 127.0.0.1:8080) |
| 기반 기술 | OS 커널 내 IPC 메커니즘 | 네트워크 스택 (TCP/IP) |
| 주요 장점 | 높은 성능, 파일 권한 기반 보안 | 광범위한 연결성, 원격 통신 |
Tmux의 아키텍처는 유닉스 소켓의 이상적인 활용 사례입니다.
tmux를 실행하면, tmux server 프로세스가 시작되고 유닉스 소켓 파일을 생성합니다. 이 소켓 파일은 Tmux 서버의 통신 채널(Communication Channel) 역할을 합니다.tmux attach를 실행할 때, 이 명령은 새로운 tmux client 프로세스를 시작합니다.tmux client는 이전에 생성된 유닉스 소켓 파일 경로를 통해 tmux server에 연결하여 통신을 시작합니다. 이 통신을 통해 클라이언트는 서버에게 세션 상태(Session State) 요청, 키 입력 전달, 화면 업데이트 수신 등을 수행합니다.이처럼 유닉스 소켓은 Tmux 서버와 Tmux 클라이언트가 로컬에서 안전하고 매우 빠르게 데이터를 주고받을 수 있도록 보장하여, SSH 연결이 끊어져도 세션을 즉시 재연결(Reattach)할 수 있는 기반 기술을 제공합니다.