TCP传给IP的数据单元称作TCP报文段或简称为TCP段(TCP segment)MSS: Maxitum Segment Size 最大分段大小MTU是链路层的最大传输单元。
MSS表示TCP传往另一端的最大块数据长度,在连接建立时(SYN)双方各自通告自己的MSS,这个值TCP协议在实现的时候往往用MTU值代替(需要减去IP数据包包头的大小20Bytes和TCP数据段的包头20Bytes)。通讯双方会根据双方提供的MSS值得最小值确定为这次连接的最大MSS值。如果没有通告MSS则默认为536字节(加上20字节IP报头和TCP报头构成576字节的IP数据报)。
一般说来,如果没有分段发生, MSS还是越大越好(这也并不总是正确)。报文段越大允许每个报文段传送的数据就越多,相对IP和TCP首部有更高的网络利用率。当TCP发送一个SYN时,或者是因为一个本地应用进程想发起一个连接,或者是因为另一端的主机收到了一个连接请求,它能将MSS值设置为外出接口上的MTU长度减去固定的I P首部和TCP首部长度。 如果目的IP地址为“非本地的( nonlocal)”,MSS通常的默认值为536。而区分地址是本地还是非本地是简单的,如果目的I P地址的网络号与子网号都和我们的相同,则是本地的;如果目的I P地址的网络号与我们的完全不同,则是非本地的;如果目的I P地址的网络号与我们的相同而子网号与我们的不同则可能是本地的,也可能是非本地的。大多数TCP实现版都提供了一个配置选项,让系统管理员说明不同的子网是属于本地还是非本地。这个选项的设置将确定MSS可以选择尽可能的大(达到外出接口的MTU长度)或是默认值536。
MSS让主机限制另一端发送数据报的长度。加上主机也能控制它发送数据报的长度,这将使以较小MTU连接到一个网络上的主机避免分段。
如果两端的主机都连接到以太网上,都采用536的MSS,但中间网络采用296的MTU,也将会出现分段。使用路径上的MTU发现机制是关于这个问题的唯一方法。
阅读(5100) | 评论(0) | 转发(0) |