[server] 유닉스 소켓과 TCP / IP 소켓의 차이점은 무엇입니까?



답변

UNIX 소켓 동일한 시스템에서 실행되는 프로세스들 사이의 양방향 데이터 교환을 허용하는 프로세스 간 통신 메커니즘이다.

IP 소켓 (특히 TCP / IP 소켓)은 네트워크를 통해 프로세스 간 통신을 허용하는 메커니즘입니다. 경우에 따라 TCP / IP 소켓을 사용하여 루프백 인터페이스를 사용하여 동일한 컴퓨터에서 실행중인 프로세스와 통신 할 수 있습니다.

UNIX 도메인 소켓은 동일한 시스템에서 실행 중임을 알고 있으므로 라우팅과 같은 일부 검사 및 작업을 피할 수 있습니다. IP 소켓보다 빠르고 가볍습니다. 따라서 동일한 호스트의 프로세스와 통신하려는 경우 IP 소켓보다 더 나은 옵션입니다.

편집 : Nils에 따르면 Toedtmann의 의견 : UNIX 도메인 소켓은 파일 시스템 권한이 적용되며 TCP 소켓은 패킷 필터 수준에서만 제어 할 수 있습니다.


답변

다음 명령을 사용하여 자신의 머신 로컬 유닉스 소켓을 나열 할 수 있습니다.

netstat -a -p --unix

즐기세요!


답변

유닉스 소켓과 TCP / IP 소켓의 차이점은 무엇입니까?

TCP / IP 소켓은 TCP / IP 네트워크를 통한 통신에 사용됩니다. 연결된 TCP 소켓은 로컬 IP, 로컬 포트, 원격 IP 및 원격 포트의 조합으로 식별됩니다. 수신 TCP 소켓은 로컬 포트 ​​및 가능하면 로컬 IP로 식별됩니다. 클라이언트와 서버가 동일한 시스템에 있더라도 적어도 Linux TCP / IP 소켓의 AIUI는 항상 TCP / IP 패킷을 생성하고 디코딩합니다.

반면 유닉스 도메인 소켓 (때로는 유닉스 소켓으로 단축 됨)은 단일 머신에서 작동합니다. 청취 소켓은 파일 시스템 계층 구조에 있으며 파일 시스템 권한으로 액세스 할 수 있습니다.

또한 Unix 소켓에서 연결을 수락하는 프로세스는 연결하는 프로세스의 사용자 ID를 결정할 수 있습니다. 인증 단계가 필요하지 않습니다. 데이터베이스 서버의 비밀번호를 생성하고 웹 애플리케이션의 코드에 비밀번호 사본을 포함시키는 대신 웹 애플리케이션을 실행하는 사용자가 데이터베이스의 해당 사용자 계정에 액세스 할 수 있음을 데이터베이스 서버에 알릴 수 있습니다.


TCP 소켓은 유닉스에서도 처리됩니까?

물론이야

TCP 소켓은 TCP 프로토콜 사양의 일부입니다

인터넷 프로토콜 사양은 유선에서 발생하는 문제에만 영향을 미치며 TCP 사양에는 Socket 정의가 포함되어 있지만 해당 정의는 “sockets API”에서 용어가 사용되는 방식과 동일하지 않습니다.

우리가 알고있는 “소켓 API”는 BSD에 의해 소개되었지만 나중에 모든 곳에서 복사되었으며 posix 표준의 일부로 포함되었습니다. TCP 및 UDP 소켓의 기본 기능은 다른 플랫폼에서 거의 동일하지만 OS의 다른 부분과 상호 작용하는 고급 기능 및 기능은 다릅니다. 예를 들어 유닉스 계열 시스템에서 소켓은 파일 핸들로 식별되며 파일 API에 의해 읽히거나 쓰여질 수 있지만, Windows에서는 그렇지 않습니다.

소켓 API에 대한 일부 확장은 rfcs에 문서화되어 있지만 RFC는 “정보”일뿐입니다.

또는 모든 프로토콜이 IP 소켓을 사용할 수 있습니까?

응용 프로그램이 “소켓”기능을 사용하여 소켓을 명시 적으로 작성하면 (소켓도 accept 기능으로 작성 됨) “도메인”, “유형”및 “프로토콜”의 세 매개 변수를 전달합니다. 이들 사이에서이 세 가지 매개 변수를 사용하여 다양한 유형의 소켓을 선택할 수 있습니다.

  • domain은 사용중인 프로토콜 / 주소 제품군을 선택합니다 (예 : ipv4의 경우 AF_INET, ipv6의 경우 AF_INET6, 유닉스 파일 시스템 경로의 경우 AF_Unix 등).
  • type은 통신 시맨틱을 선택합니다. 주요 의미는 데이터 그램 및 스트림이지만 더 특수한 유형도 있습니다.
  • 프로토콜은 사용할 프로토콜을 선택합니다. 프로토콜이 0으로 설정되면 도메인과 유형의 조합에 대한 기본 프로토콜이 사용됩니다.

답변


댓글 달기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다