TCP соединение и номер подтверждения

В протоколе TCP есть что-то, чего я не понимаю. Если я сделаю следующее, просто простое соединение TCP, захваченное с помощью tcpdump:

22: 29: 20.185032 IP 172.10.10.11.43086> 172.10.10.21.http: Flags [S], seq 2173271328, победа 29200, варианты [mss 1460,sackOK,TS val 3615590 ecr 0,nop,wscale 7], длина 0

22: 29: 20.185090 IP 172.10.10.21.http> 172.10.10.11.43086: Flags [S.], seq 3246536796, ack 2173271329, победа 28960, опции [mss 1460,sackOK,TS val 3598763 ecr 3615590,nop,wscale 6], длина 0

22: 29: 20.186088 IP 172.10.10.11.43086> 172.10.10.21.http: Flags [.], Ack 1, win 229, опции [nop,nop,TS val 3615590 ecr 3598763], длина 0

Почему последний акк на 1? Разве это не должно быть в (3246536796+1)?

1 ответ

Решение

На самом деле это 3246536797. TCPDump поддерживает -S возможность использовать абсолютные, а не относительные числа. Вы можете проверить это с помощью -x или же -X возможность увидеть необработанные данные пакета.

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

Другие вопросы по тегам