Тайм-ауты и повторные передачи TCP

         

Алгоритм Карна



Алгоритм Карна

В процессе повторной передачи пакета могут возникнуть проблемы. Скажем, пакет передан, тайм-аут отработан, RTO экспотенциально увеличен, как показано в разделе "Простой пример использования тайм-аутов и повторных передач" этой главы, пакет передан повторно с большим RTO и получено подтверждение. Соответствует ли это подтверждение первой передаче или второй? Это называется проблемой двусмысленности повторной передачи (retransmission ambiguity problem) .

[Karn and Partridge 1987] указывает, что когда применяется тайм-аут и повторная передача, мы не можем обновить оценочные функции RTT, когда, в конце концов, прибывает подтверждение на повторно переданные данные. Это потому, что мы не знаем, которой передаче соответствует подтверждение (ACK). (Возможно, первая передача была задержана, но не была отброшена, или был задержан ACK на первую передачу.)

Так как данные были повторно переданы и к RTO было применено экспотенциальное наращивание, мы повторно используем экспотенциально увеличенный RTO для следующей передачи. Новый RTO не рассчитывается до тех пор, пока не будет получено подтверждение на сегмент, который не отправлялся повторно.



Содержание раздела