• 序列号:在建立连接时由计算机生成的随机数作为其初始值,通过 SYN 包传给接收端主机,每发送一次数据,就「累加」一次该「数据字节数」的大小。用来解决网络包乱序问题。

  • 确认应答号:指下一次「期望」收到的数据的序列号,发送端收到这个确认应答以后可以认为在这个序号以前的数据都已经被正常接收。用来解决丢包的问题。

  • 控制位:

    • 确认标志位 ACK:该位为 1 时,「确认应答」的字段变为有效,TCP 规定除了最初建立连接时的 SYN 包之外该位必须设置为 1 。

    • 同步标志位 SYN:TCP 建立时用来同步序号。该位为 1 时,表示希望建立连接,并在其「序列号」的字段进行序列号初始值的设定。

    • 终止标志位 FIN:该位为 1 时,表示今后不会再有数据发送,希望断开连接。当通信结束希望断开连接时,通信双方的主机之间就可以相互交换 FIN 位为 1 的 TCP 段

    • 复位标志位 RST:用来复位 TCP 连接,RST = 1 表明 TCP 连接出现了异常,必须释放连接,然后在重新建立连接。

    • 推送标志位 PSH:接收方的 TCP 收到该标志位为 1 的报文段会尽快上交应用进程,而不必等到接收缓存都填满后再向上交付

    • 紧急标志位 URG:取值为 1 时紧急指针字段有效;取值为 0 时紧急指针字段无效。

      紧急指针:占 16 比特,以字节为单位,用来指明紧急数据的长度。

      当发送方有紧急数据时,可将紧急数据插队到发送缓存的最前面,并立刻封装到一个 TCP 报文段中进行发送。紧急指针会指出本报文段数据载荷部分包含了多长的紧急数据,紧急数据之后是普通数据。

  • 首部长度(数据偏移):以四字节为单位

  • 窗口:指出发送本报文段的一方的接收窗口。窗口值作为接收方让发送方设置其发送窗口的依据,以接收方的接收能力来控制发送方的发送能力,称为流量控制

  • 扩展首部:

    • 最大报文段长度 MSS 选项:TCP 报文段数据载荷部分的最大长度。
    • 窗口扩大选项:为了扩大窗口(提高吞吐率)。
    • 时间戳选项:
      • 用来计算往返时间 RTT
      • 用于处理序号超范围的情况,又称为防止序号绕回 PAWS。
    • 选择确认选项
  • 填充:确保报文段首部能够被 4 整除,因为数据偏移字段是以 4 字节为单位的