2013-05-20 2 views
0

Как показано ниже, на этапе 7, когда приемник отправляет ACK (16) отправителю, когда правильный ACK равен (18), отправитель принимает это как ACK для пакета (17)? Если нет, нужно ли повторить передачу SEQ: 17 в SEQ: 19?Поддерживает ли TCP дубликаты ACK правильный полученный пакет?

Sender    Receiver 

1: SEQ:15  -> 
2: SEQ:16  -> (dropped) 
3: SEQ:17  -> 
4: SEQ:18  -> 
5: SEQ:19  -> 
6:    <-  ACK:16  (for SEQ:15 packet) 
7:    <-  ACK:16 (for SEQ:17 packet) 
8:    <-  ACK:16 
9:    <-  ACK:16 
10: SEQ:16  -> 

ответ

0

Конечно, нет. Он принимает это как ACK для 16 и все, что предшествует it.

Принимая это как ACK для чего-то после того, что это ACKing, не имеет смысла.

Любые данные, которые не являются ACKed, должны быть повторно переданы.

+0

так, SEQ: 17, в SEQ: 19 также необходимо повторно передать? Кажется, это не так. Из того, что я понимаю, после повторной передачи SEQ: 16 приемник будет ACK с наивысшим сохраненным SEQ, который в этом случае будет ACK: 20 (для пакета SEQ: 19). Правильно ли я это понимаю? – moeseth