wireshark и tcpdump -r: странные размеры окна tcp - PullRequest
5 голосов
/ 15 июля 2010

Я перехватываю http-трафик с помощью tcpdump и заинтересован в медленном запуске TCP и увеличении размеров окна:

$ sudo tcpdump -i eth1 -w wget++.tcpdump tcp and port 80

При просмотре файла дампа с помощью Wireshark прогрессия размеров окон выглядит нормально, то есть 5840, 5888, 5888, 8576, 11264 и т. Д.

Но когда я просматриваю файл дампа через

$ tcpdump -r wget++.tcpdump -tnN | less

Я получаю то, что кажется бессмысленными размерами окон (для краткости IP-адреса опущены):

: S 1069713761:1069713761(0) win 5840 <mss 1460,sackOK,timestamp 24220583 0,nop,wscale 7>
: S 1198053215:1198053215(0) ack 1069713762 win 5672 <mss 1430,sackOK,timestamp 2485833728 24220583,nop,wscale 6>
: . ack 1 win 46 <nop,nop,timestamp 24220604 2485833728>
: . 1:1419(1418) ack 1 win 46 <nop,nop,timestamp 24220604 2485833728>
: P 1419:2002(583) ack 1 win 46 <nop,nop,timestamp 24220604 2485833728>
: . ack 1419 win 133 <nop,nop,timestamp 2485833824 24220604>
: . ack 2002 win 178 <nop,nop,timestamp 2485833830 24220604>

Есть ли способ получить нормальный / абсолютный размер окна в командной строке?

Ответы [ 2 ]

9 голосов
/ 16 июля 2010

Размеры окон правильные - они просто не масштабируются.

Инициатор соединения установил wscale (коэффициент масштабирования окна), равный 7, поэтому его последующие значения win должны быть умножены на 128получить размер окна в байтах.Таким образом, win 46 указывает на окно 5888 байт.

Получатель соединения установил wscale из 6, поэтому его значения win должны быть умножены на 64. Таким образом, win 133 указывает на окно8512 байтов, а win 178 указывает 11392 байта.

3 голосов
/ 24 июля 2012

Кроме того, если инструмент (wireshark или tcpdump, это не имеет значения) не видит syn, он должен напечатать немасштабированное значение, что может вас обмануть

...