mss 为什么是1460?

mss 为什么是1460?

23:01:42.648017 IP node1.45042 > node2.discard: Flags [S], seq 1415506235, win 14600, options [mss 1460,sackOK,TS val 106943326 ecr 0,nop,wscale 6], length 0
23:01:42.648017 IP node1.45042 > node2.discard: Flags [S], seq 1415506235, win 14600, options [mss 1460,sackOK,TS val 106943326 ecr 0,nop,wscale 6], length 0
23:01:42.648017 IP node1.45042 > node2.discard: Flags [S], seq 1415506235, win 14600, options [mss 1460,sackOK,TS val 106943326 ecr 0,nop,wscale 6], length 0
Maximum Segment Size ,TCP提交给IP层最大分段大小,不包含TCP Header和 TCP Option,只包含TCP Payload ,

MSS是TCP用来限制application层最大的发送字节数,是tcp能发送的分组的最大长度。

MSS是系统默认的,就是系统TCP/IP栈所能允许的最大包。在建立连接时,这个值已经被确定了,这个值并不是客观的值,

而是由tcp/ip的实现确定的。

如果底层物理接口MTU= 1500 byte,则 MSS = 1500- 20(IP Header) -20 (TCP Header) = 1460 byte,如果application 有2000 byte发送,

需要两个segment才可以完成发送,第一个TCP segment = 1460,第二个TCP segment = 540。

LINUX查看MTU值:

cat /sys/class/net/eth1/mtu
node1:/root#cat /sys/class/net/eth1/mtu
1500


mss就是1460
原文地址:https://www.cnblogs.com/hzcya1995/p/13348545.html