linux系统使用tcpdump抓包问题


clipboard.png
如图是我用tcpdump抓包的全过程,采用tcp协议,包括建立连接和关闭连接。我在localhost.34781端发送字符串“abc”到localhost.http-alt,算上结尾的空字符,“abc”长度为4。(localhost.34781和localhost.http-alt都在同一台电脑上)
我的第一个问题是既然localhost.34781和localhost.http-alt的mss都是16396字节,那能不能在一个tcp分段里传送完字符串“abc”呢?
第二个问题是我画的第一条红线,那个区间是什么意思?从43到47刚好是五个序列号,假如一个序列号对应一个字符,那多出来的那个序列号是做什么的?
刚刚接触抓包,感觉有些问题不好理解,烦请不吝赐教!谢谢!

网络编程 socket

阿爸耕田去 10 years, 4 months ago

抓包建议使用 wireshark 阅读。

TCP 包序列号是按包长度增长的。也就是说某一个长度为 10 的包,如果序列号是 12,那么下一个包的序列号就是 22。你划线部分的范围是(大部分程序语言/库中使用的)前闭后开区间。所以它表示序列号增加了四而已。你看下一个包的序列号就是冒号后边的那个数字。

至于为什么会了多次传输,我也不知道。和你使用的应用程序有关。你的抓包也不完整。

幾千幾萬一夜華 answered 10 years, 4 months ago

Your Answer