1. TCP 핸드셰이크 프로토콜
TCP/IP 프로토콜에서는 3자 핸드셰이크를 통해 연결을 구축함으로써 신뢰할 수 있는 연결 서비스를 제공합니다.
첫 번째 핸드셰이크: 연결을 설정할 때 클라이언트는 syn 패킷(syn=j)을 서버에 보내고 SYN_SEND 상태에 들어가 서버의 확인을 기다립니다.
두 번째 핸드셰이크: 서버가 SYN 패킷을 받으면 고객의 SYN (ack=j+1)를 확인하고, SYN 패킷(syn=k)도 보내야 하며, 이 경우 서버는 SYN_RECV 상태에 들어갑니다.
세 번째 핸드셰이크: 클라이언트는 서버로부터 SYN+ACK 패킷을 받고 확인 패킷 ACK (ack=k+1)를 서버에 전송합니다.
세 번의 핸드셰이크 후, 클라이언트와 서버가 데이터를 전송하기 시작하며, 위 과정에는 몇 가지 중요한 개념들이 있습니다:
연결 해제 큐: 3자 핸드셰이크 프로토콜에서 서버는 각 클라이언트의 SYN 패킷(syn=j)에 대해 서버가 SYN 패킷을 수신했음을 나타내는 비연결 큐를 유지하며, 고객에게 확인 메시지를 보내고 고객의 확인 패킷을 기다리게 합니다. 이 항목들로 식별된 연결은 서버에서 Syn_RECV 상태에 있으며, 서버가 고객으로부터 확인 패킷을 받으면 해당 항목은 삭제되고 서버는 ESTABLISHED 상태에 들어갑니다. 백로그 매개변수: 최대 연결되지 않은 큐 수를 나타냅니다.
SYN-ACK 재전송 시간 서버가 SYN-ACK 패킷을 전송했으나 고객 확인 패킷을 받지 못하면, 서버는 첫 번째 재전송을 수행하고, 일정 시간 고객 확인 패킷을 받지 않고 기다린 후 두 번째 재전송을 수행합니다. 각 재전송 대기 시간이 반드시 같지는 않다는 점에 유의하세요.
반연결 생존 시간: 반연결 대기열에 항목이 남아 있는 최대 시간을 의미하며, 즉 서비스가 SYN 패킷을 받은 시점부터 패킷이 유효하지 않음이 확인될 때까지의 최대 시간이며, 시간 값은 모든 재전송 요청 패킷의 최대 대기 시간의 합입니다. 때때로 반연결된 생존 시간(survival time)이라고도 부르며, SYN_RECV 생존 시간(survival time)이라고 부릅니다.
|