代码之家  ›  专栏  ›  技术社区  ›  Robert S. Barnes Antoni

wireshark和tcpdump-r:奇怪的tcp窗口大小

  •  5
  • Robert S. Barnes Antoni  · 技术社区  · 14 年前

    $ 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 回复  |  直到 14 年前
        1
  •  10
  •   caf    14 年前

    连接启动器已设置 wscale (窗口比例因子)为7,因此 win 值必须乘以128才能得到以字节为单位的窗口大小。因此 win 46 表示5888字节的窗口。

    连接收件人已设置 值必须乘以64。因此 win 133 表示8512字节的窗口,以及 win 178 表示11392字节。

        2
  •  4
  •   Nik    12 年前