计算机网络(五)—— 运输层(9):TCP报文段的首部格式

本文详细介绍了TCP报文段的构成,包括源/目的端口、序号与确认号、窗口控制、校验和、标志位等关键字段的作用。通过实例和练习,深入理解面向字节流的可靠传输机制。

计算机网络系列内容的学习目录 → \rightarrow 谢希仁计算机网络学习系列内容汇总

9. TCP报文段的首部格式

  ■ 为了实现可靠传输,TCP采用了面向字节流的方式。
  ■ 但TCP在发送数据时,是从发送缓存取出一部分或全部字节并给其添加一个首部使之成为TCP报文段后进行发送。
    ⋄ \diamond 一个TCP报文段由首部数据载荷两部分构成;
    ⋄ \diamond TCP的全部功能都体现在它首部中各字段的作用。

在这里插入图片描述
  ■ TCP报文段的首部格式:

在这里插入图片描述
  源端口: 占16比特,写入源端口号,用来标识发送该TCP报文段的应用进程。
  目的端口: 占16比特,写入目的端口号,用来标识接收该TCP报文段的应用进程。

在这里插入图片描述
  序号: 占32比特,取值范围[0, 2 32 ^{32} 32-1],序号增加到最后一个后,下一个序号就又回到0。
      指出本TCP报文段数据载荷的第一个字节的序号。

在这里插入图片描述
  确认号: 占32比特,取值范围[0, 2 32 ^{32} 32-1],确认号增加到最后一个后,下一个确认号就又回到0。
       指出期望收到对方下一个TCP报文段的数据载荷的第一个字节的序号,同时也是对之前收到的所有数据的确认。
       若确认号=n,则表明到序号n-1为止的所有数据都已正确接收,期望接收序号为n的数据。

  确认标志位ACK: 取值为1时确认号字段才有效;取值为0时确认号字段无效。
       TCP规定,在连接建立后所有传送的TCP报文段都必须把ACK置1。

  数据偏移: 占4比特,并以4字节为单位。
        用来指出TCP报文段的数据载荷部分的起始处距离TCP报文段的起始处有多远。这个字段实际上是指出了TCP报文段的首部长度。
        首部固定长度为20字节,因此数据偏移字段的最小值为(0101) 2 _2 2
        首部最大长度为60字节,因此数据偏移字段的最大值为(1111) 2 _2 2

  保留: 占6比特,保留为今后使用,但目前应置为0。

  窗口: 占16比特,以字节为单位。指出发送本报文段的一方的接收窗口。
      窗口值作为接收方让发送方设置其发送窗口的依据。
      这是以接收方的接收能力来控制发送方的发送能力,称为流量控制。

  校验和: 占16比特,检查范围包括TCP报文段的首部和数据载荷两部分。
       在计算校验和时,要在TCP报文段的前面加上12字节的伪首部。

  同步标志位SYN: 在TCP连接建立时用来同步序号。

在这里插入图片描述
  终止标志位FIN: 用来释放TCP连接。

在这里插入图片描述
  复位标志位RST: 用来复位TCP连接。
           当RST=1时,表明TCP连接出现了异常,必须释放连接,然后再重新建立连接。
           RST置1还用来拒绝一个非法的报文段或拒绝打开一个TCP连接。
  推送标志位PSH: 接收方的TCP收到该标志位为1的报文段会尽快上交应用进程,而不必等到接收缓存都填满后再向上交付。
  紧急标志位URG: 取值为1时紧急指针字段有效;取值为0时紧急指针字段无效。
  紧急指针: 占16比特,以字节为单位,用来指明紧急数据的长度。
        当发送方有紧急数据时,可将紧急数据插队到发送缓存的最前面,并立刻封装到一个TCP报文段中进行发送。紧急指针会指出本报文段数据载荷部分包含了多长的紧急数据,紧急数据之后是普通数据。
  最大报文段长度MSS选项: TCP报文段数据载荷部分的最大长度。
  窗口扩大选项: 为了扩大窗口(提高吞吐率)。
  时间戳选项: 用来计算往返时间RTT。
         用于处理序号超范围的情况,又称为防止序号绕回PAWS。
  选择确认选项: 用来实现选择确认功能。
  填充: 由于选项的长度可变,因此使用填充来确保报文段首部能被4整除(因为数据偏移字段,也就是首部长度字段,是以4字节为单位的)。

9.1 课后练习

  1. TCP报文段首部的最小长度为( A )
    A. 20字节  B. 40字节   C. 60字节   D. 80字节
   分析: TCP报文段首部的最小长度为20字节。

  2. TCP报文段首部的最大长度为( C )
    A. 20字节  B. 40字节   C. 60字节   D. 80字节
   分析: TCP报文段首部的最大长度为60字节。

  3. TCP报文段首部中序号字段的作用是( B )
    A. 指明TCP报文段首部第一个字节的序号
    B. 指明TCP报文段的数据载荷的第一个字节的序号
    C. 指明TCP报文段的数据载荷的最后一个字节的序号
    D. 指明TCP报文段的数据载荷的长度
   分析: TCP报文段首部中序号字段的作用是指明TCP报文段的数据载荷的第一个字节的序号。

  4. TCP报文段首部中窗口字段的值( C )
    A. 指明自己的拥塞窗口的尺寸
    B. 指明对方的发送窗口的尺寸
    C. 指明自己的接收窗口的尺寸
    D. 指明对方的拥塞窗口的尺寸
   分析: TCP报文段首部中窗口字段的值指明自己的接收窗口的尺寸。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值