3-메시지 핸드셰이크란 매번 전송되는 데이터의 양을 추적 및 협상하고, 송수신 데이터 세그먼트의 동기화를 보장하고, 수신된 데이터의 양에 따라 데이터 전송을 확인하고, 수신 완료 후 연락을 언제 철회할지를 의미합니다. 가상 연결을 설정합니다.
소위 "3방향 핸드셰이크": 매번 전송되는 데이터의 양을 추적하고 협상하기 위해 데이터 세그먼트의 전송 및 수신이 동기화되었는지 확인하고 데이터 전송 및 수신을 확인합니다. 수신된 데이터의 양에 따라 연락을 철회하고 가상 연결을 설정할 시기입니다.
신뢰할 수 있는 전달을 제공하기 위해 TCP는 새 데이터를 보내기 전에 특정 순서로 데이터 패킷에 번호를 매기고 이러한 패킷이 대상 시스템에 전달된 후에 확인 메시지를 요구합니다. TCP는 항상 대량의 데이터를 전송하는 데 사용됩니다. TCP는 애플리케이션이 데이터 수신 후 확인이 필요한 경우에도 사용됩니다.
TCP 연결을 설정하려면 통신하는 두 당사자 모두 상대방으로부터 다음 정보를 알아야 합니다.
3방향 핸드셰이크
1. 상대방 메시지 전송의 시작 시퀀스 번호.
2. 상대방이 보낸 데이터의 버퍼 크기.
3. 수신할 수 있는 최대 메시지 세그먼트 길이, MSS.
4. 지원되는 TCP 옵션.
TCP 프로토콜에서 통신 당사자는 세 개의 TCP 메시지 세그먼트를 통해 위의 정보를 이해하고 이를 기반으로 통신 당사자 간에 세 개의 TCP 메시지 세그먼트를 교환하는 프로세스를 일반적으로 3개라고 합니다. -TCP 연결을 설정하는 방식의 핸드셰이크 프로세스가 언급됩니다.
연결이 설정되면 다음이 수행됩니다.
1. TCP 연결의 두 통신 당사자는 연결 시 상대방이 보낼 첫 번째 바이트의 시퀀스 번호(상대방에게 전송되는 확인 번호)를 알 수 있습니다. , A가 B에게 보낸 확인 번호는 B가 보낼 일련 번호이며 B도 마찬가지입니다)
2. 양측 모두 연결 시 전송할 수 있는 MSS를 알 수 있습니다. 핸드쉐이크 단계에서 양측이 교환한 SYN 메시지와 SYN+ACK 메시지에서 MSS를 선택합니다. 옵션 중 더 작은 값이 실제 값으로 사용됩니다.
3. 양측은 상대방의 수신 버퍼 크기를 알 수 있습니다.
4. 양측은 상대방이 SACK, 창 크기 조정 및 기타 옵션을 사용할 수 있는지 여부를 알 수 있습니다. 이 정보를 기반으로 양측은 TCP 연결(x, y)을 설정하고 이 연결을 기반으로 메시지 세그먼트 전송을 시작할 수 있습니다. TCP 연결을 설정하는 데에는 3방향 핸드셰이크 방법이 사용됩니다. 두 호스트가 동시에 동일한 소켓 간에 연결을 설정하려고 하면 하나의 연결만 설정됩니다. 즉, 두 연결은 동일한 것으로 간주됩니다. 동일한 연결의 경우) 모든 연결은 끝점으로 식별되기 때문입니다. 첫 번째 요청으로 인해 (x, y)로 식별되는 연결이 설정되고 두 번째 요청에서도 (X, y)로 식별되는 연결이 설정되면 TCP 엔터티 용어 내에 하나의 TCP 연결 테이블만 있게 됩니다. (x,y).Process
첫 번째첫 번째 핸드셰이크: 연결을 설정할 때 클라이언트는 syn 패킷(seq=j)을 서버에 보내고 SYN_SENT 상태로 들어가 서버의 확인을 기다립니다. 번호(시퀀스 번호 동기화). 두 번째 핸드셰이크: 서버는 syn 패킷을 수신하고 클라이언트의 SYN(ack=j+1)을 확인하는 동시에 SYN 패킷(seq=k), 즉 SYN+ACK 패킷도 보냅니다. 이 시점에서 서버는 SYN_RECV 상태로 들어갑니다. 세 번째세 번째 핸드쉐이크: 클라이언트는 서버로부터 SYN+ACK 패킷을 수신하고 확인 패킷 ACK(ack=k+1)를 서버로 보냅니다. 패킷이 전송된 후 클라이언트와 서버는 ESTABLISHED(TCP 연결 성공) 상태로 들어가면 3방향 핸드셰이크가 완료됩니다. 3방향 핸드셰이크가 완료되면 클라이언트와 서버가 데이터 전송을 시작합니다. 위 프로세스에는 몇 가지 중요한 개념이 있습니다. (1) 연결되지 않은 대기열3방향 핸드셰이크 프로토콜에서 서버는 연결되지 않은 큐. 큐는 각 클라이언트의 SYN 패킷(seq=j)에 대한 항목을 엽니다. 이는 서버가 SYN 패킷을 수신하고 클라이언트에 확인을 보냈으며 클라이언트의 확인 패킷을 기다리고 있음을 나타냅니다. 이러한 항목으로 식별되는 연결은 서버에서 Syn_RECV 상태입니다. 서버가 클라이언트의 확인 패킷을 받으면 항목이 삭제되고 서버는 ESTABLISHED 상태로 들어갑니다. (2) 백로그 매개변수 는 해당 소켓에 대해 커널이 대기 중인 최대 연결 수를 나타냅니다. SYN-ACK 재전송 횟수 서버가 SYN-ACK 패킷을 보낸 후 고객 확인 패킷을 받지 못한 경우 서버는 일정 시간 동안 기다렸다가 여전히 고객 확인 패킷을 받지 못한 후 첫 번째 재전송을 수행합니다. 두 번째 재전송을 수행합니다. 재전송 횟수가 시스템에서 지정한 최대 재전송 횟수를 초과하면 시스템은 세미 연결 대기열에서 연결 정보를 삭제합니다. 각 재전송에 대한 대기 시간이 반드시 동일할 필요는 없습니다. (3) 준 연결 생존 시간 은 세미 연결 큐의 진입이 생존할 수 있는 최대 시간, 즉 서버가 SYN 패킷을 수신한 후부터 해당 메시지가 유효하지 않음을 확인할 때까지의 가장 긴 시간을 의미합니다. 이 시간 값은 모든 재전송에 대한 최대 시간입니다. 요청 패킷에 대한 총 최대 대기 시간입니다. 때때로 우리는 반연결 생존 시간을 Timeout 시간과 SYN_RECV 생존 시간이라고 부르기도 합니다.위 내용은 세 개의 메시지에서 손가락을 누른다는 것은 무엇을 의미합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!