TCPMSS 和 PMTU
mss是tcp,全称是 Maxitum Segment Size,即最大分段大小
mtu是针对以太网的,全称是 Maxitum Transmission Unit,最大传输单元,从ip报头开始计算整个网络报如果超过mtu,则会被分片传输,注意是ip包,而不是以太网包。
pmtu是path mtu,可以理解为应用层的最大包大小,相对于mtu,已经除去了网络层(ip)、传输层(tcp/udp)的报头。并且对于tcp报头来说,不考虑可选部分,即tcp报头的长度在这里就是20.
比如网卡的MTU为1500,则PMTU就是1500-20-20=1460.
比如网卡的MTU为1492,则PMTU就是1492-20-20=1452.
iptables在mangle表FORWARD中有一条规则:
TCPMSS tcp -- * wan 0.0.0.0/0 0.0.0.0/0 tcp flags:0x06/0x02 TCPMSS clamp to PMTU
该规则的添加方式是:
iptables -t mangle -A FORWARD -p tcp --tcp-flags RST,SYN SYN -j ACCEPT
该规则的意思是:针对tcp的SYN包(排除RST包),宣传(clamp)自己的PMTU为多少(系统的默认值)。
关于iptables中 –tcp-flags 的使用,参考如下文章《iptables tcp-flags》(未编写)。