为什么要规定一个最大报文段长度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。
上一篇:用来计算往返时间RTT
热门点击
- 以下地址中的哪一个和86.32/12匹配
- 因特网交换点IXP在全球的分布
- 特定主机路由
- OSI失败的原因可归纳
- 为什么要规定一个最大报文段长度MSS呢
- FCS体系结构
- 网络前缀
- MF47型指针式万用表的工作原理
- 为什么A在TIME-WAIT状态必须等待2M
- 常用的绞合线的类别、带宽和典型应用
推荐技术资料
- 自制智能型ICL7135
- 表头使ff11CL7135作为ADC,ICL7135是... [详细]