TCP(传输控制协议)的报文头部结构包含了各种控制信息,用于确保数据的可靠传输和正确组装。
TCP 报文头部的基本结构如下:
一、TCP 报文头部结构
①、源端口(Source Port):16 位
发送方的端口号。
②、目的端口(Destination Port):16 位
接收方的端口号。
③、序列号(Sequence Number):32 位
用于标识数据的顺序。第一个字节的序列号用于确认数据的顺序。
④、确认号(Acknowledgment Number):32 位
表示期望接收到的下一个字节的序列号,用于确认收到的数据。
⑤、数据偏移(Data Offset):4 位
也称为头部长度字段,表示 TCP 报文头部的长度,以 4 字节为单位。它指示从 TCP 报文的开始到数据部分的开始的字节数。
⑥、保留(Reserved):3 位
预留用于将来的使用,当前设置为 0。
⑦、控制位(Flags):9 位
由 6 个标志位组成,用于控制 TCP 连接的状态:
URG(紧急指针有效):1 位
ACK(确认号有效):1 位
PSH(推送):1 位
RST(重置连接):1 位
SYN(同步序列号):1 位
FIN(结束数据传输):1 位
⑧、窗口大小(Window Size):16 位
表示接收方能够接受的最大字节数,用于流量控制。
⑨、校验和(Checksum):16 位
用于检查 TCP 报文在传输过程中是否出现错误。
⑩、紧急指针(Urgent Pointer):16 位
当 URG 标志位被设置时,紧急指针指示紧急数据的最后一个字节的位置。
⑪、选项(Options):可变长度
该字段用于扩展 TCP 协议的功能,如最大报文段长度(MSS)、窗口扩大因子等。选项的长度是可变的,取决于实际需要。
⑫、填充(Padding):可变长度
为了确保 TCP 报文头部的长度是 32 位的整数倍,可能会填充一些额外的字节。
⑬、数据(Data):可变长度
实际传输的数据部分,长度由数据偏移字段指示。
二、TCP 报文头部示例

三、总结
TCP 报文头部包含了许多重要的字段,用于保证数据的可靠传输和正确排序。
通过这些字段,TCP 能够实现流量控制、错误检测和数据重组等功能。
互联网协议 第12.9章 TCP-报文头部结构