유닉스 도메인 소켓

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

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

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

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

같이 보기

각주

  1. Kerrisk, Michael (2010). 《The Linux Programming Interface》. No Starch Press. 1149쪽. ISBN 978-1-59327-220-3. Sockets are a method of IPC that allow data to be exchanged between applications, either on the same host (computer) or on different hosts connected by a network. 
  2. Kerrisk, Michael (2010). 《The Linux Programming Interface》. No Starch Press. 1150쪽. ISBN 978-1-59327-220-3. 
  3. Kerrisk, Michael (2010). 《The Linux Programming Interface》. No Starch Press. 1150쪽. ISBN 978-1-59327-220-3. The server binds its socket to a well-known address (name) so that clients can locate it. 
  4. Stevens, Richard W.; Fenner, Bill; Rudoff, Andrew M. (2004). 《Unix Network Programming》 3판. Pearson Education. 14쪽. ISBN 81-297-0710-1. Normally, the server process is put to sleep in the call to accept, waiting for a client connection to arrive and be accepted. 
  5. Kerrisk, Michael (2010). 《The Linux Programming Interface》. No Starch Press. 1169쪽. ISBN 978-1-59327-220-3. 
  6. Kerrisk, Michael (2010). 《The Linux Programming Interface》. No Starch Press. 1159쪽. ISBN 978-1-59327-220-3. 
  7. Kerrisk, Michael (2010). 《The Linux Programming Interface》. No Starch Press. 1166쪽. ISBN 978-1-59327-220-3. 

Strategi Solo vs Squad di Free Fire: Cara Menang Mudah!