27TCP报文段的首部格式
概念:
(1)TCP 虽然是面向字节流的,但 TCP 传送的数据单元却是报文段。
(2)一个 TCP 报文段分为首部和数据两部分,而 TCP 的全部功能都体现在它首部中各字段的作用。
(3)TCP 报文段首部的前 20 个字节是固定的,后面有 4n 字节是根据需要而增加的选项 (n 是整数)。
注意:TCP 首部的最小长度是 20 字节。而UDP是28字节。
图例
TCP报文段的各部分格式图例
其他选项:
(1)窗口扩大选项
——占 3 字节,其中有一个字节表示移位值 S。新的窗口值等于 TCP 首部中的窗口位数增大到 (16 + S),相当于把窗口值向左移动 S 位后获得实际的窗口大小。
(2)时间戳选项——占 10 字节,其中最主要的字段时间戳值字段(4 字节)和时间戳回送回答字段(4 字节)。
(3)选择确认选项----由于首部选项的长度最多只有 40 字节,而指明一个边界就要用掉 4 字节,因此在选项中最多只能指明 4 个字节块的边界信息
问题:为什么要规定 MSS ?
解析:
(1)MSS 与接收窗口值没有关系。
(3)若选择较小的 MSS 长度,网络的利用率就降低。
(3)当 TCP 报文段只含有 1 字节的数据时,在 IP 层传输的数据报的开销至少有 40 字节(包括 TCP 报文段的首部和 IP 数据报的首部)。这样,对网络的利用率就不会超过 1/41。到了数据链路层还要加上一些开销。
(4)若 TCP 报文段非常长,那么在 IP 层传输时就有可能要分解成多个短数据报片。在终点要把收到的各个短数据报片装配成原来的 TCP 报文段。当传输出错时还要进行重传。这些也都会使开销增大。
(5)因此,MSS 应尽可能大些,只要在 IP 层传输时不需要再分片就行。
(6)由于 IP 数据报所经历的路径是动态变化的,因此在这条路径上确定的不需要分片的 MSS,如果改走另一条路径就可能需要进行分片。
(7 )因此最佳的 MSS 是很难确定的。