Я получаю трафик 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>
Существует ли способ стать нормальным / абсолютные размеры окна на командной строке?
Размеры окна правильные - они просто немасштабированы.
Инициатор соединения установил wscale
(коэффициент масштабирования окна) равным 7, поэтому его последующие значения win
должны быть умножены на 128, чтобы получить размер окна в байтах. Таким образом, win 46
указывает окно размером 5888 байт.
Получатель соединения установил wscale
равным 6, поэтому его значения win
необходимо умножить на 64. Таким образом, win 133
указывает окно размером 8512 байт. , а win 178
означает 11392 байта.