View

Unix Socket vs TCP Socket

rura6502 2021. 3. 2. 20:57

종종 소켓이라고 하면 tcp, udp 둘 중 하나의 타입을 가지고 0~65535번 중 하나로 열린 소켓을 생각하게 됨. 하지만 Unix Socket(이하 유닉스 소켓)이라고 부르는 소켓이 있음.

Network Socket

네트워크 상에서 처리되는 커뮤니케이션. TCP/UDP 프로토콜을 사용해서 통신하게 됨.

Unix Domain Socket

유닉스 소켓의 풀네임은 Unix Domain Socket. 머신 내부의 프로세스들끼리 통신만을 위해 사용되는 양방향 통신 소켓. IPC(Inter process communication) Socket 이라고도 부름. 소켓 타입은 3가지가 있음

  • SOCKET_STREAM : TCP와 비교되는 타입. stream 위주의 소켓.
  • SOCKET_DGRAM : UDP와 비교되는 타입. datagram 위주의 소켓.
  • SOCKET_SEQPACKET : SCTP와 비교되는 타입.

Difference

유닉스 소켓은 같은 머신 내의 프로세스간 통신이기 때문에 네트워크 소켓처럼 네트워킹을 위한 라우팅 작업이 필요없고 이때문에 발생할 수 있는 여러 문제나 딜레이를 피하고 훨씬 가볍게 통신할 수 있음.

네트워크 소켓은 방화벽, 필터링을 사용해 접근을 제어하지만 유닉스 소켓은 생성할 경우 파일 시스템 위에 유닉스 소켓을 관리하는 파일이 생성되고 이 파일에 대한 접근권한을 제어함으로써 접근을 제어할 수 있음.

Conslusion

리눅스 시스템상의 프로그램에서 프로세스간 로컬통신이 필요할 경우 유닉스 소켓을 사용하는 것도 속도 등에 유리한 이점을 가질 수 있음.

Reference

WIKIPEDIA - Unix domain socket
StackExchange:severfault - What is the difference between Unix sockets and TCP/IP sockets?
Linux Programmer's Manual - unix(7)
opensource.com - Inter-process communication in Linux: Sockets and signals

'infrastructure' 카테고리의 다른 글

Ubuntu iSCSI 연결  (0) 2021.02.23
DNS 개념, 용어 정리  (0) 2020.12.12
Share Link
reply