位置:51电子网 » 技术资料 » 新品发布

为什么要规定一个最大报文段长度MSS呢

发布时间:2014/9/14 20:18:39 访问次数:3843

   TCP最初只规定了一种选项,即最大报文段长度MSS (Maximum Segment Size) [RFC79]。请注意MSS这个名词的含义。MSS是每一个TCP报文段中的数据字段的最大长度。数据字段加上TCP首部才等于整个的TCP报文段。 REF3225AIDBVRG4所以MSS并不是整个TC报文段的最大长度,丽是“TCP报文段长度减去TCP首部长度”。

   为什么要规定一个最大报文段长度MSS呢?这并不是考虑接收方的接收缓存可能放不卜TCP报文段中的数据。实际上,MSS与接收窗口值没有关系。我们知道,TCP报文段的数据部分,至少要加上40字节的首部(TCP首部20字节和lP首部20字节,这里都还没有考虑首部中的选项部分),才能组装成一个IP数据报。若选择较小的MSS长度,网络的利用率就降低。设想在极端的情况下,当TCP报文段只含有1字节的数据时,在IP层传输的数据报的开销至少有40字节(包括TCP报文段的首部和IP数据报的首部)。这样,对网络的利用率就不会超过l/41。到了数据链路层还要加上一些开销。但反过来,若TCP报文段非常长,那么在lP层传输时就有可能要分解成多个短数据报片。在终点要把收到的各个短数据报片装配成原来的TCP报文段。当传输出错时还要进行重传。这些也都会使开销增大。因此,MSS应尽可能大些,只要在lP层传输时不需要再分片就行。由于lP数据报所经历的路径是动态变化的,因此在这条路径上确定的不需要分片的MSS,如果改走另一条路径就可能需要进行分片。因此最佳的MSS是很难确定的。在连接建立的过程中,双方都把自己能够支持的MSS写入这一字段,以后就按照这个数值传送数据,两个传送方向町以有不同的MSS值若主机未填写这一项,则MSS的默认值是536字节长。因此,所有在因特网上的主机都应能接受的报文段长度是536 +20(固定首部长度)=556字节。

   随着因特网的发展,又陆续增加了几个选项。如窗口扩大选项、时间戳选项等[RFC1323]。以后又增加了有关选择确认(SACK)选项[RFC 2018]。这些选项的位置都在的“选项”字段中。

   窗口扩大选项是为了扩大窗口。我们知道,TCP首部中窗口字段长度是16位,因此最大的窗口大小为64 K字节(见下一节)。虽然这对早期的网络是足够用的,但对于包含卫星信道的网络㈢,传播时延和带宽都很大,要获得高吞吐率需要更大的窗口大小。

   窗口扩大选项占3字节,其中有一个字节表示移位值S。新的窗口值等于TCP首部中的窗口位数以16增大到(16+S)。移位值允许使用的最大值是14,相当于窗口最大值增大到2(16 +14) -1=230—l。



   TCP最初只规定了一种选项,即最大报文段长度MSS (Maximum Segment Size) [RFC79]。请注意MSS这个名词的含义。MSS是每一个TCP报文段中的数据字段的最大长度。数据字段加上TCP首部才等于整个的TCP报文段。 REF3225AIDBVRG4所以MSS并不是整个TC报文段的最大长度,丽是“TCP报文段长度减去TCP首部长度”。

   为什么要规定一个最大报文段长度MSS呢?这并不是考虑接收方的接收缓存可能放不卜TCP报文段中的数据。实际上,MSS与接收窗口值没有关系。我们知道,TCP报文段的数据部分,至少要加上40字节的首部(TCP首部20字节和lP首部20字节,这里都还没有考虑首部中的选项部分),才能组装成一个IP数据报。若选择较小的MSS长度,网络的利用率就降低。设想在极端的情况下,当TCP报文段只含有1字节的数据时,在IP层传输的数据报的开销至少有40字节(包括TCP报文段的首部和IP数据报的首部)。这样,对网络的利用率就不会超过l/41。到了数据链路层还要加上一些开销。但反过来,若TCP报文段非常长,那么在lP层传输时就有可能要分解成多个短数据报片。在终点要把收到的各个短数据报片装配成原来的TCP报文段。当传输出错时还要进行重传。这些也都会使开销增大。因此,MSS应尽可能大些,只要在lP层传输时不需要再分片就行。由于lP数据报所经历的路径是动态变化的,因此在这条路径上确定的不需要分片的MSS,如果改走另一条路径就可能需要进行分片。因此最佳的MSS是很难确定的。在连接建立的过程中,双方都把自己能够支持的MSS写入这一字段,以后就按照这个数值传送数据,两个传送方向町以有不同的MSS值若主机未填写这一项,则MSS的默认值是536字节长。因此,所有在因特网上的主机都应能接受的报文段长度是536 +20(固定首部长度)=556字节。

   随着因特网的发展,又陆续增加了几个选项。如窗口扩大选项、时间戳选项等[RFC1323]。以后又增加了有关选择确认(SACK)选项[RFC 2018]。这些选项的位置都在的“选项”字段中。

   窗口扩大选项是为了扩大窗口。我们知道,TCP首部中窗口字段长度是16位,因此最大的窗口大小为64 K字节(见下一节)。虽然这对早期的网络是足够用的,但对于包含卫星信道的网络㈢,传播时延和带宽都很大,要获得高吞吐率需要更大的窗口大小。

   窗口扩大选项占3字节,其中有一个字节表示移位值S。新的窗口值等于TCP首部中的窗口位数以16增大到(16+S)。移位值允许使用的最大值是14,相当于窗口最大值增大到2(16 +14) -1=230—l。



热门点击

 

推荐技术资料

自制智能型ICL7135
    表头使ff11CL7135作为ADC,ICL7135是... [详细]
版权所有:51dzw.COM
深圳服务热线:13751165337  13692101218
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!