IT이야기

UNIX 소켓, SOCK_SEQPACKET vs SOCK_DGRAM

cyworld 2022. 6. 30. 23:23
반응형

UNIX 소켓, SOCK_SEQPACKET vs SOCK_DGRAM

의 로컬타입이 것 .AF_UNIX ),SOCK_STREAM,SOCK_DGRAM ★★★★★★★★★★★★★★★★★」SOCK_SEQPACKET

그건 알면서도SOCK_STREAM하고, API를 합니다.TCP의 닉스 소소 ?이 이? ?? ???SOCK_DGRAM ★★★★★★★★★★★★★★★★★」SOCK_SEQPACKET무슨 일입니까?

것들은인 것이기 에, 가 이 제도를 시행할 낼 수 없다.SOCK_DGRAM패킷 순서를 변경할 수 있습니다.

ㄴ, ㄴ, ᄃ도 그래요?SOCK_DGRAM/SOCK_SEQPACKET흐름 제어를 채용하거나 느린 리더의 경우 메시지를 폐기할 수 있습니까?

여기서의 가장 큰 차이점은SOCK_SEQPACKETconneciton을 지향하는 반면SOCK_DGRAM렇지않않 않않않다다

이것은, 복수의 클라이언트프로세스가 통신하고 있는 경우, 접속의 서버측(UNIX 소켓을 리슨 하는 프로세스)에서 주로 문제가 됩니다.

★★★★★★★★★★★★★★★★ SOCK_DGRAM클라이언트 데이터그램은 리스닝 소켓에 직접 인터리브 됩니다.★★★★★★★★★★★★★★★★ SOCK_SEQPACKET를 사용하여 클라이언트별로 개별 클라이언트소켓을 생성합니다.accept따라서 각 클라이언트로부터 데이터그램을 개별적으로 수신합니다.

★★man 3 accept:

accept() 시스템콜은 접속 기반 소켓타입(SOCK_STREAM, SOCK_SEQPACKET)과 함께 사용됩니다.

다음은 용도의 사용 사례에 대한 좋은 기사입니다.SOCK_SEQPACKETIP 프로토콜 패밀리에서는 실제로 사용할 수 없다는 사실과 기존 TCP 의미론에서 동일한 정보를 얻을 수 있는 방법:

http://urchin.earth.li/ ~ twic / Sequenceed _ Packets _ Over _ Ordinary _ TCP . html

:SOCK_SEQPACKET이 훨씬 SOCK_STREAMSOCK_DGRAM.

참조된 웹사이트에서 인용:

SOCK_SEQPACKET 소켓타입은 SOCK_STREAM 타입과 비슷하며 커넥션 지향이기도 합니다.이들 유형의 유일한 차이점은 SOCK_SEQPACKET 유형을 사용하여 레코드 경계를 유지하는 것입니다.레코드는 1개 이상의 출력 조작을 사용하여 송신하고 1개 이상의 입력 조작을 사용하여 수신할 수 있지만, 1개의 조작으로 복수의 레코드의 일부가 전송되는 일은 없습니다.recvmsg() 함수에 의해 반환된 수신 메시지플래그 내의 MSG_EOR 플래그를 통해 레코드 경계를 수신자에게 표시할 수 있습니다.최대 레코드 크기를 적용할지 여부는 프로토콜에 따라 다릅니다.

SOCK_SEQPACKET은 SOCK_STREAM의 보증(주문 유지, 전달 보증, 복제 없음)을 제공하지만 SOCK_DGRAM과 마찬가지로 패킷 경계는 기술되어 있습니다.기본적으로 두 가지 프로토콜 유형이 혼합되어 있습니다.

TCP/IP 패밀리에서는 SCTP는 SOCK_STREAM(TCP 유사)과 SOCK_SEQPACKET를 모두 실장합니다.유감스럽게도 Windows에서는 재고가 없습니다.

socket (2) Linux 제공 manpage: "DGRAM: 데이터그램(연결 없음, 신뢰할 수 없는 메시지), SEQPACKET: 데이터그램에 대한 시퀀싱되고 신뢰할 수 있는 [양방향] 연결 기반 데이터 전송 경로"상당한 차이입니다.

unix(7) linux 제공 manpage에는 "SOCK_DGRAM, 메시지 경계를 보존하는 데이터그램 지향 소켓, 메시지 경계를 보존하고 전송된 순서대로 메시지를 전달하는 연결 지향 소켓용 SOCK_SEQPACKET"이라고 쓰여 있습니다.

표준에서는 SOCK_DGRAM을 사용하여 패킷 순서를 변경할 수 있습니다(즉, OS가 패킷을 순서대로 건네주는 경우, 이것은 실장 고유의 기능입니다).아니면 순전히 타이밍의 행운일 수도 있습니다.)

Linux의 af_file/af_unix 구현에는 흐름 제어가 있지만, 이는 표준 지정 동작과 전혀 상관할 필요가 없습니다.

TCP 및 UDP 소켓과 마찬가지로 엔드포인트 간에 (1 대 1) 및 (1 대 다)의 두 가지 형식을 가진 SCTP(Stream Control Transmission Protocol) 소켓이 있습니다.1 대 1은 SOCK_STREAM을 사용하고 1 대 다수는 SOCK_SEQPACKET을 사용합니다.

언급URL : https://stackoverflow.com/questions/10104082/unix-socket-sock-seqpacket-vs-sock-dgram

반응형