유닉스 도메인 소켓

유닉스 도메인 소켓(Unix domain socket)은 클라이언트-서버 컴퓨팅에서 동일한 유닉스 또는 유닉스 계열 호스트 컴퓨터에서 실행되는 두 프로세스 간에 데이터를 교환할 수 있게 해주는 버클리 소켓이다. 이는 서로 다른 호스트 컴퓨터에서 실행되는 두 프로세스 간에 데이터를 교환할 수 있는 인터넷 도메인 소켓과 유사하다.

통신 범위(동일 호스트 또는 다른 호스트)에 관계없이 소켓 통신을 수행하는 유닉스 컴퓨터 프로그램은 유사하다. 유일한 통신 차이점은 이름을 소켓 연결을 바인딩하는 데 필요한 주소 매개변수로 변환하는 방법이다. 유닉스 도메인 소켓의 경우 이름은 /path/filename이다. 인터넷 도메인 소켓의 경우 이름은 IP 주소:포트 번호이다. 두 경우 모두 이름을 주소라고 한다.

두 프로세스가 각각 소켓을 얻으면 서로 통신할 수 있다. 서버 프로세스는 해당 소켓을 주소에 바인딩하고 수신 채널을 연 다음 계속해서 루프를 반복한다. 루프 내에서 서버 프로세스는 클라이언트 연결 수락을 기다리는 동안 절전 모드로 전환된다. 클라이언트 연결을 수락하면 서버는 대기를 차단하는 읽기 시스템 호출을 실행한다. 클라이언트는 서버의 주소를 통해 서버의 소켓에 연결한다. 그런 다음 클라이언트 프로세스는 서버 프로세스가 읽을 메시지를 작성한다. 애플리케이션의 알고리즘에는 여러 읽기/쓰기 상호 작용이 수반될 수 있다. 알고리즘이 완료되면 클라이언트는 exit()를 실행하고 서버는 close()를 실행한다.

유닉스 도메인 소켓의 경우 소켓 주소는 /path/filename 식별자이다. 서버는 파일 시스템에 /path/filename을 생성하여 잠금 파일 세마포 역할을 한다. 클라이언트와 서버가 서로 메시지를 보낼 때 이 파일에서는 I/O가 발생하지 않는다.

 같이 보기 
 파이프 (유닉스)

 각주 

분류:유닉스
분류:네트워크 소켓