повторная передача потерянного сегмента TCP

Что произойдет в следующем сценарии (предположите, что соединение уже устанавливается):

  1. (стек A) отправляет 10-байтовые данные

  2. (стек B) отправляет ACK за 10-байтовыми данными

  3. (стек B) отправляет 200-байтовые данные

  4. (стек B) отправляет 100-байтовые данные

  5. (стек B) отправляет 50-байтовые данные

  6. (стек A) отправляет ACK за 350-байтовыми данными и также отправляет 70-байтовые данные
    Этот сегмент теряется и не достигает машины B.

  7. (стек B) ретранслирует 200-байтовые данные (шаг 3)

  8. (стек A) отправляет ACK за 200-байтовыми данными, и следующее ожидало seq число как то для 70-байтовых данных

Вопрос: 70-байтовые данные должны быть также переданы с ACK на шаге 8? Обратите внимание, что таймер повторной передачи для шага 6 еще не истек.

1
задан 19.11.2014, 13:43

1 ответ

Нет, 70 байтов не должны быть включены с непосредственным ACK для неисправного прибытия сегмента.

Почему? Шаг 7 является прибытием неисправного сегмента. TCP должен генерировать непосредственный ACK, дающий следующий ожидаемый байт (который будет 361 + независимо от того, что было отправлено перед Шагом 1) по получении неисправного сегмента. Но TCP не ретранслирует сегмент, содержащий 70 байтов данных с перевезенным по железной дороге ACK. Тот сегмент находится все еще на очереди повторной передачи, ожидающей таймера для истечения, или если быстро ретранслируют, включен, три дублирующихся ACKs прибывают, но ни одного еще не произошло. Неисправное прибытие является признаком перегрузки, таким образом, это имеет смысл, что TCP должен отправить самый маленький возможный ACK.

2
ответ дан 12.12.2019, 13:19

Теги

Похожие вопросы