TCP最大报文段长度MSS

最大报文段长度(MSS)表示TCP传往另一端的最大数据库的长度。当一个连接建立时,连接的双方都要通告各自需要接收的MSS选项(MSS选项只能出现在SYN报文段中)。如果一方不接收来自另一方的MSS值,则MSS就定为默认值536字节(这个默认值允许20字节的IP首部和20字节的TCP首部以适合576字节的IP数据报);

一般来说,如果没有分段发生,MSS是越大越好(并不总是正确)。报文段越大允许每个报文发送的数据就越多。相对IP和TCP首部有更高的网络利用率。当TCP发送一个SYN时,或者是因为一个本地应用进程发起一个连接,或者是因为另一端的主机收到了一个连接请求,它将MSS的值设置为出接口上的MTU长度减去固定的IP首部和TCP首部长度。对于以太网来说,MSS值可达1460字节;

如果目的IP地址为“非本地地址”,MSS通常的默认值是536.而区分地址是本地还是非本地是简单的,如果目的IP地址的网络号与子网号都与我们相同,则是本地地址;如果目的IP地址的网络号与我们完全不同,则是非本地地址;如果目的IP地址的网络号与我们的相同而子网号与我们的不同,则可能是本地的,也可能是非本地的。大多数,TCP实现版都提供一个配置选项,让系统管理员来说明不同的子网数是属于本地还是非本地。这个选项的设置将确定MSS可以选择尽可能大(大到外出接口的MTU长度)或者是默认值536;

MSS让主机限制另一端发送数据的长度,加上主机也能控制它自己发送数据的长度,这使以较小的MTU连接到一个网络上的主机避免分段;

只有当一端的主机以小于576字节的MTU直接连接到一个网络中,避免这种分段才会有效。如果两端的主机都连接到以太网上,都采用536的MSS,但是中间网络采用296的MTU,也将会出现分段。路径MTU发现机制是解决这个问题的唯一办法;

 

文章来源:<TCP/IP详解>

本文链接:TCP最大报文段长度MSS

转载声明:转载请注明来源:Linux TCP/IP Stack,谢谢!


发表评论

电子邮件地址不会被公开。 必填项已用*标注