【博客193】抓取报文查看TCP连接MSS的大小

内容: 记录抓取TCP报文查看实际协商的MSS大小

前言:

MSS(Maximum Segment Size):报文数据段最大长度,每个连接方通常都在通信的第一个报文段
(也就是设置SYN标志为1的那个报文)中指明这个选项,它表示本端所能接受的最大报文段的长度,
应用数据被分割成TCP认为最适合发送的数据块。MSS选项占4byte

注意:只是数据部分的字段,不包括TCP的头部!!!!

MSS的值尤为重要,太小或太大都是不合适:
1、MSS太小,例如MSS值只有1byte,那么为了传输这1byte数据,至少要消耗20字节IP头部+20字节TCP
头部=40byte,显然这样的数据传输效率是很低的

2、MSS过大,导致数据包可以封装很大,那么在IP传输中分片的可能性就会增大,接受方在处理分片包所
消耗的资源和处理时间都会增大,如果分片在传输中还发生了重传,那么其网络开销也会增大。因此合理的
MSS是至关重要的。MSS的合理值应为保证数据包不分片的最大值。

对于以太网MSS可以达到1460byte = MTU(1500- IP头(20) - TCP头(20)
(即:TCP一次发送的应用数据大于MSS,会分段成多个TCP包发送出去)

报文抓取TCP三次握手报文,并查看其中SYN报文的MSS大小:
在这里插入图片描述
在这里插入图片描述
结果:可以看到双方协商完毕,选取标准的1460作为各自的MSS大小

大四学生一枚,如果文章有错误的地方,欢迎在下方提出,每条评论我都会去认真看并回复,同时感谢指正的前辈。有喜欢C/C++,linux的同学欢迎私信一起讨论学习。

发布了214 篇原创文章 · 获赞 41 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/qq_43684922/article/details/105300934