我捕获HTTP流量使用tcpdump和感兴趣的是TCP慢启动和如何窗口大小的增加:Wireshark的和tcpdump的-r:奇怪的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>
有没有办法在命令行上获得正常/绝对窗口大小?
首先,这是为什么呢?其次,有没有一种方法可以让'tcpdump'以Wireshark的方式查看转储文件时自动在输出中进行缩放? – 2010-07-16 14:14:10
@Robert:这样做是因为原始的TCP/IP规范为窗口大小提供了一个16位的字段;当发现这个不足时,窗口缩放机制允许它代表更大的数字,而不必改变字段大小。它似乎没有在'tcpdump'中显示缩放窗口大小的方法 - 你可以随时提交一个补丁;)你可以总是使用'tshark'(Wireshark的基于文本的版本)。 – caf 2010-07-17 06:09:04