카테고리 없음

SOCK_STREAM

 

SOCK_STREAM

 

이 세상에는 DARPA 인터넷 주소(Internet 접속자), 로컬 바이트의 경로명(Unx 라우팅), CCITT X25 주소 등 여러 종류의 문자(socket)가 있습니다.그러나 본 튜토리얼에서는 첫 번째 문자인 인터넷 연결자만을 말하고 있는데, 이것은 대표적인 것이며 가장 고전적인 것이다.나중에 우리가 세그먼트를 언급하는 것은 모두 Internet 세그먼트를 가리킵니다.

데이터의 전송 방식에 따라 Internet 세그먼트를 두 가지 유형으로 나눌 수 있습니다.socket() 함수를 통해 연결을 만들 때 어떤 데이터 전송 방식을 사용하는지 알려야 합니다.
인터넷 접속자는 사실 다른 데이터 전송 방식도 많이 있지만, 나는 당신을 놀라게 하고 싶지 않다.
스트림 라우팅(SOCK_STREAM)
스트림 소켓(Stream Sockets)도 "연결 지향 슬리브"라고 하며 코드에서 SOCK_STREAM을 사용하여 표시합니다.

SOCK_STREAM은 신뢰성 있고 양방향의 트래픽 흐름으로, 데이터를 오류 없이 다른 컴퓨터에 정확하게 도달할 수 있으며 손상되거나 분실되면 다시 보낼 수 있습니다.
유동식 덧글은 자신의 오류 메커니즘이 있으므로 여기에서 우리는 토론하지 않는다.
SOCK_STREAM에는 다음과 같은 몇 가지 특징이 있습니다.
데이터는 전송 과정에서 사라지지 않습니다;
데이터는 순서에 따라 전송됩니다;
데이터의 송신과 수신은 동기화되지 않습니다(어떤 튜토리얼은 "데이터 경계가 존재하지 않음"이라고도 함).

SOCK_STREAM을 하나의 컨베이어 벨트에 비유할 수 있으며, 컨베이어 벨트 자체에 문제가 없으면(망이 끊어지지 않음) 데이터가 손실되지 않도록 보장하고, 동시에 늦게 전송된 데이터가 먼저 도착하지 않고, 비교적 일찍 전송된 데이터가 늦게 도착하지 않도록 보장합니다.

연결 지향 세그먼트를 컨베이어 벨트에 비유

왜 유동식 스프레드시트는 고품질의 데이터 전송에 도달할 수 있을까요?이것은 그것이 TCP 프로토콜(The Transmission Control Protocol, 전송 제어 프로토콜)을 사용하므로 TCP 협의회가 당신의 데이터가 순서에 따라 도착하고 오류가 없도록 통제하기 때문입니다.

당신은 아마 TCP를 본 적이 있을 것이다. 왜냐하면 당신은 "TCP/IP"라는 말을 자주 듣기 때문이다.TCP 는 데이터의 정확성을 확보하기 위해, IP(Internet Protocol, 인터넷 프로토콜)는 데이터가 어떻게 소스로부터 목적지에 도달하는지, 즉, 흔히 말하는 라우팅을 제어하기 위해 사용된다.

그렇다면 "데이터의 송신과 수신이 동기화되지 않음"을 어떻게 이해해야 할까요?

컨베이어 벨트가 과일을 전송한다고 가정하면, 수신자는 100개를 모아 봉지에 담아야 하는데 컨베이어 벨트는 이 100개의 과일을 1차 전송 20개, 2차 전송 50개로 나누어 보낼 수 있습니다.수신자는 컨베이어 벨트와 동기를 유지할 필요가 없으며, 자신의 페이스로 패킷을 적재하기만 하면 되며, 컨베이어 벨트가 몇 번 전송되었는지 상관하지 않고 한 번에 한 번씩 패킷을 적재하지 않아도 되며, 100개의 과일을 모아 봉지를 재장할 때까지 기다릴 수 있습니다.

유동식 피쳐의 내부에는 버퍼 블록(즉, 바이트 수 그룹)이 있으며 소켓을 통해 전송되는 데이터는 이 버퍼 풀에 저장됩니다.수신단은 데이터가 수신되는 즉시 반드시 판독되는 것은 아니며, 데이터가 버퍼의 용량을 초과하지 않는 한 버퍼가 채워진 후에 한 번에 여러 번 읽을 수도 있고 여러 번 나누어 읽을 수도 있습니다.

즉, 데이터가 몇 차례에 걸쳐 전송되든 수신단은 자신의 요청에 따라 읽기만 해야 하며, 굳이 데이터가 도착할 때 바로 읽을 필요는 없습니다.전송단에는 자신만의 비트가 있고 수신단도 자체 비트가 있으며 그것들은 일치하지 않습니다.

유동식 덧글에 어떤 실제 응용 장면이 있습니까?브라우저에 사용되는 http 프로토콜은 바로 연결을 향한 스프레드쉬트에 기반하여, 데이터가 오류 없이 정확해야 하기 때문에, 그렇지 않으면 아카이브된 HTML을 해석할 수 없습니다.
데이터시트 형식 필드 문자(SOCK_DGRAM)
데이터 시트 형식 필드 문자(Datagram Sockets)도 "연결 없는 패키지"라고 하며 코드에서 SOCK_DGRAM을 사용하여 표시합니다.

컴퓨터가 데이터만 전송하고 데이터는 검사하지 않으며 데이터가 전송 중에 손상되었거나 다른 컴퓨터에 도착하지 않았다면 어쩔 수 없는 것입니다.데이터가 틀리면 틀리고 재전송이 안 된다는 것이다.

데이터 패킷 접자가 하는 교정 작업이 적기 때문에, 스트림 패킷 접자에 비해 전송 효율이 높다.

SOCK_DGRAM을 고속으로 이동하는 오토바이 택배에 비유할 수 있으며 다음과 같은 특징이 있습니다.
전송 순서가 아닌 빠른 전송을 강조합니다;
전송된 데이터는 분실될 수도 있고 훼손될 수도 있습니다;
매번 전송되는 데이터의 크기를 제한합니다;
데이터의 송신과 수신은 동기화됩니다(어떤 튜토리얼은 "데이터 경계가 존재한다"라고도 함).

스피드는 택배업계의 생명으로 알려져 있다.오토바이로 같은 장소로 보내는 소포 2건은 순서를 보증할 필요 없이 고객에게 가장 빠른 속도로 맡기기만 하면 된다.이러한 방식은 손상되거나 분실될 위험이 있으며 소포 크기에 일정한 제한이 있다.따라서 대량 소포를 전달하려면 발송을 할당해야 합니다.

무연결 세그먼트를 오토바이 퀵 릴리즈에 비유

또, 오토바이 2대로 각각 2건의 소포를 송신하면, 수신자도 2회에 걸쳐 수신해야 하기 때문에, "데이터의 송신과 수신은 동기화한다"라고 하고, 바꿔 말하면, 수신 횟수는 송신 횟수와 같아야 한다.

요컨대, 데이터 패킷 접자는 신뢰할 수 없고 순차적으로 전달되지 않는, 속도 추구를 목적으로 한 패킷입니다.

데이터 패킷 접두사도 IP 프로토콜을 라우팅하지만 TCP 프로토콜 대신 UDP 프로토콜(User Datagram Protocol, 사용자 데이터그램 프로토콜)을 사용합니다.

QQ 화상채팅과 음성채팅은 SOCK_DGRAM을 사용하여 데이터를 전송하는데, 우선 트래픽의 효율을 보장하고 지연을 최소화해야 하기 때문에 데이터의 정확성은 부차적이며, 매우 작은 일부 데이터를 잃어버리지 않고도 비디오와 오디오가