1
마지막 ACK (TCP 연결을 시작하는 3 방향 핸드 쉐이크의 세 번째 세그먼트)을 보낸 후 연결 기능이 반환됩니다. 청취자가 서버에서 여전히 ACK를 기다리고 있지만 클라이언트에서 ACK를 다시 보낼 사람이 없기 때문에이 세 번째 세그먼트가 손실되면 어떻게됩니까?TCP 및 Unix 수신 기능에서 세 방향 핸드 쉐이크에 의심이 있음
마지막 ACK (TCP 연결을 시작하는 3 방향 핸드 쉐이크의 세 번째 세그먼트)을 보낸 후 연결 기능이 반환됩니다. 청취자가 서버에서 여전히 ACK를 기다리고 있지만 클라이언트에서 ACK를 다시 보낼 사람이 없기 때문에이 세 번째 세그먼트가 손실되면 어떻게됩니까?TCP 및 Unix 수신 기능에서 세 방향 핸드 쉐이크에 의심이 있음
클라이언트가 데이터 패킷과 함께 ACK를 보내고 손실되면 클라이언트는 서버가 데이터를 ACK하지 않은 것을 확인하고 패킷을 다시 보냅니다.
클라이언트가 ACK를 별도의 패킷으로 보내고 손실되면 서버는 SYN/ACK가 클라이언트에 의해 ACK되지 않았 음을 알게되고 패킷을 다시 보냅니다. 클라이언트는 ACK를 다시 보내 응답합니다.
ACK가 OS의 TCP/IP 구현에 의해 수행되기 때문에 응용 프로그램의 연결 호출이 그 시점에 여전히 차단 중인지 여부는 중요하지 않습니다.
당신은 ACK가 OS 구현으로 이루어졌지만 궁극적으로 연결하고 청취하는 기능은 3 방향 핸드 셰이크를 완료한다고 말했습니까? 핸드 셰이크를 완료 할 다른 것은 무엇입니까? – avd
aditya : OS 커널은 일종의 커널 타이머가 만료되었을 때이를 비동기식으로 처리합니다. – caf
wallenborn : 서버가 syncookies를 사용하지 않는 한 사실입니다.이 경우 syn/ack가 확인되지 않습니다 (전송 된 syn/ack에 대한 기록이 없으므로). – caf