2013-04-01 2 views
0

누군가가 TCP에서 재전송 메커니즘을 간단하게 설명 할 수 있습니까? 이 상황에서 어떻게 처리되는지 알고 싶습니까?TCP 프로토콜의 재전송 메커니즘

A를 B로 패킷을 보내

  1. A는 패킷을 전송.
  2. B 수신 및 송신 ack이지만이 ack는 손실됩니다.
  3. 시간 초과 및 재전송.

이 상황에서 B는 2 개의 동일한 패킷을 수신합니다. B가 동일한 패킷을 다시 처리하지 않도록하려면 어떻게해야합니까?

감사합니다.

+0

이 링크는 유용 할 수 있습니다. http://www.eventhelix.com/RealtimeMantra/Networking/#.UVkBYRwgjL-. 여기에는 다양한 프로토콜 흐름이 포함됩니다. –

답변

2

각 패킷에는 연관된 일련 번호가 있습니다. 데이터가 전송 될 때 시퀀스 번호는 패킷의 원래 데이터 양만큼 증가합니다. 시퀀스 번호는 데이터 스트림의 시작부터 패킷의 첫 번째 바이트의 오프셋으로 생각할 수 있지만 0에서 시작하지는 않을 수도 있습니다. A가 재 시도를 전송하면 처음 사용한 것과 동일한 일련 번호가 사용됩니다. B는 데이터를 수신 할 때 시퀀스 번호를 추적하고 이전에 재 시도의 시퀀스 번호를 확인했다는 것을 알 수 있습니다. 이미 (상위 계층) 클라이언트에서 해당 데이터를 사용할 수 있도록 만든 경우 다시는 안됩니다.

+0

거의. 이전에 해당 데이터를 수신 한 경우 소켓 수신 버퍼에 있어도 아직 응용 프로그램에서 읽지 않은 경우에도 광고가 삭제 된 것으로 인식됩니다. – EJP