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