设置tcp的mss值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设置tcp的mss值相关的知识,希望对你有一定的参考价值。

mtu是网络传输最大报文包。 mss是网络传输数据最大值。 mss加包头数据就等于mtu. 简单说拿TCP包做例子。 报文传输1400字节的数据的话,那么mss就是1400,再加上20字节IP包头,20字节tcp包头,那么mtu就是1400+20+20. 当然传输的时候其他的协议还要加些包头在前面,总之mtu就是总的最后发出去的报文大小。mss就是你需要发出去的数据大小。

1.MSS: Maxitum Segment Size 最大分段大小 

2.MSS最大传输大小的缩写,是TCP协议里面的一个概念。 

3.MSS就是TCP数据包每次能够传输的最大数据分段。

为了达到最佳的传输效能TCP协议在建立连接的时候通常要协商双方的MSS值,这个值TCP协议在实现的时候往往用MTU值代替(需要减去IP数据包包头的大小20Bytes和TCP数据段的包头20Bytes)所以往往MSS为1460。通讯双方会根据双方提供的MSS值得最小值确定为这次连接的最大MSS值。

--set-mss value #设置特定MSS值  

--clamp-mss-to-pmtu #根据MTU自动调整MSS 

例如:

iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

这条规则的目的就是改变TCP MSS以适应PMTU(Path MTU)

一种是把mss设置为一个固定值:

iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN- j TCPMSS --set-mss 1460

本文出自 “Linux_woniu” 博客,请务必保留此出处http://linuxcgi.blog.51cto.com/5925801/1980972

以上是关于设置tcp的mss值的主要内容,如果未能解决你的问题,请参考以下文章

TCP最大报文段长度MSS

我如何使用BPF定位TCP数据包中的MSS值

Linux内核TCP MSS机制详细分析

TCP 协议中MSS的理解

TCP传输协议

TCP 、UDP包的最大长度是多少?