MSS: Maximum Segment Size,即最大报文段长度。MSS是TCP协议的一个选项,用于在TCP连接建立时,收发双方可以通知对方通信时每一个报文段所能承载的最大数据长度。注意该选项不是协商选项,只是一种通知。即接收方告知发送方自己的MSS大小,对方使用该值与否,取决于对方。
MTU: Maximum Transmission Unit,即最大传输单元,表示数据链路层可以传输的最大数据包(不包含帧首部和尾部)。每个网络都有其MTU值。该值大小可能是由于技术限制,也可能是工程、技术或管理上的考虑。即使是同一种网络在不同的环境中或设置下,MTU也是不同的。一些流行的网络中,MTU的值如下:
ARPANET, MILNET = 1007
Ethernet(以太网) = 1500
MTU作用于数据链路层,因网路不同而不同。MSS作用域传输层,表明传输层能够传输的数据大小。高层协议必然受到低层协议和数据链路的限制。因此,MSS也受限于MTU.具体的关系如下:
在最好的情况下,即IP数据报和TCP报文段都只使用最小的首部,则
MSS = MTU - 20(IP首部) - 20 (TCP首部)
MSS = MTU - 40
在最坏的情况下,IP数据报和TCP报文段都使用最大的首部长度,则
MSS = MTU - 60(IP首部) - 60 (TCP首部)
MSS = MTU - 120
也就是说在以太网环境中,最大MSS = 1500 - 40 = 1460字节。
为什么我们要十分注意MSS以及MTU ?