Механизм повторной отправки данных в TCP-протоколе работает следующим образом: 2
- Когда протокол TCP передаёт сегмент с данными, он помещает его копию в очередь повторной передачи и запускает таймер. 2
- Когда приходит подтверждение для этих данных, соответствующий сегмент удаляется из очереди. 2
- Если подтверждение не приходит до истечения срока, то сегмент посылается повторно. 2
К повторной передаче сегмента приводит любое из двух событий: 4
- Сегмент был испорчен при передаче, но доставлен получателю. 4 Контрольная сумма, включённая в сегмент, позволяет получателю обнаружить ошибку и отбросить такой сегмент. 4
- Сегмент просто не поступил к получателю. 4 В этом случае подтверждение ACK просто не формируется, что однозначно указывает на необходимость повторной передачи. 4
Для принятия решения о повторной передаче используется таймер, работающий с каждым посланным сегментом. 4 Если время таймера истекает до получения ACK для данного сегмента, отправитель должен выполнить повторную передачу. 4