Этот вопрос касается протокола скользящего окна и того, как он работает с дублирующимися ACK.Это гипотетический вопрос, и я не знаю, может ли такая ситуация когда-либо возникнуть.Давайте рассмотрим размер окна 2 и пространство порядковых номеров от 0-3.
1) Отправитель отправляет пакеты 0 и 1.
2) ACK для пакета 1 получен, но перед тем, как ACK для пакета 0 может быть получен, для пакета 0 происходит тайм-аут, и он равен resent .
3) Затем отправитель получает оригинал ACK для пакета 0, и окно становится 2 и 3. Эти пакеты отправляются.
4) Линия передачисодержит дубликаты 0, 2 и 3.
5) Эти пакеты принимаются и ACK отправляются для всех трех пакетов.
6) В случае, если ACK для 2 получен отправителем перед ACK для дубликата 0,скользящее окно будет скользить и отправлять другой пакет 0 в соответствии с протоколом.
7) Если ACK для дубликата 0 достигает отправителя в этот момент, он будетошибочно принять подтверждение как для new 0.
Последний пункт, где я запутался.Это то, что произойдет?Есть ли способ избежать этого?