在上一篇中,我们梳理了 UDP 协议的校验和机制与应用场景,而 TCP 协议作为传输层的另一个核心协议,通过面向连接、可靠交付的机制,为对数据完整性、顺序性要求高的应用场景提供了坚实保障。下面结合思维导图,系统梳理 TCP 协议的核心特点与首部格式,为后续 TCP 连接管理的学习做好铺垫。
一、TCP 协议的核心特点
TCP 协议是面向连接的可靠传输协议,核心特性围绕 "可靠、有序、双向" 展开,适配文件传输、网页浏览、邮件收发等场景:
- 面向连接:传输数据前,通信双方必须通过三次握手建立连接;传输结束后,通过四次挥手释放连接,确保通信过程有序可控。
- 点对点通信:每一条 TCP 连接只能有两个端点,仅支持一对一的通信模式,不支持多播或广播。
- 可靠交付:通过确认、重传、序号机制,保证数据无差错、不丢失、不重复,且按序到达接收方。
- 全双工通信 :通信双方同时具备发送和接收能力,设有独立的发送缓存和接收缓存:
- 发送缓存:存储准备发送的数据,以及已发送但未收到确认的数据;
- 接收缓存:存储按序到达但尚未被应用层读取的数据,以及未按序到达的数据,等待重排序后交付给应用层。
- 面向字节流:TCP 将应用层交付的数据视为一串无结构的字节流,不保留报文边界,会根据网络情况对数据进行拆分或合并,以段为单位传输。
二、TCP 报文段首部格式
TCP 报文段由首部和数据部分组成,首部长度为 20~60 字节(固定 20 字节 + 可选字段),各字段承载着连接控制、数据传输、差错检测等关键信息:

1. 固定首部(20 字节)
-
源端口(2 字节)和目的端口(2 字节):标识发送方和接收方的应用进程端口号,与 IP 地址结合构成套接字,唯一标识通信双方。
-
序号(4 字节):本报文段发送的数据的第一个字节的序号,TCP 通过序号为每个字节编号,实现数据的有序传输与重传控制。
-
确认号(4 字节) :期望收到的下一个报文段的第一个字节的序号。若确认号为
N,则证明序号N-1及之前的所有数据都已正确接收。 -
数据偏移(4 位):标识 TCP 报文段的数据部分起始处与 TCP 报文段起始处的距离,单位为 4 字节。取值范围为 5~15,其中 15 表示 TCP 首部最大长度为 60 字节。
-
保留字段(6 位):保留为今后使用,目前固定为 0。
-
标志位(6 位) :用于控制 TCP 连接的状态,是 TCP 连接管理的核心字段:
标志位 含义 核心作用 URG 紧急位 URG=1时,紧急指针字段有效,表明报文段中有紧急数据,应优先传送,无需等待缓存填满ACK 确认位 ACK=1时,确认号字段有效;TCP 规定,连接建立后所有传送的报文段必须把 ACK 置 1PSH 推送位 PSH=1时,接收方应立即将数据交付给应用进程,不再等待缓存填满RST 复位位 RST=1时,表明 TCP 连接中出现严重差错,需释放连接并重新建立传输连接SYN 同步位 SYN=1时,表示请求建立连接 / 接收连接请求,用于三次握手阶段FIN 终止位 FIN=1时,表明发送方的数据已发送完毕,请求释放连接,用于四次挥手阶段 -
窗口字段(2 字节):用于流量控制,标识发送方允许对方发送的数据量(以字节为单位),窗口值越大,接收方的接收缓存空间越大。
-
校验和(2 字节):对 TCP 首部和数据部分进行差错检测,计算时需加上 12 字节的伪首部(包含源 IP 地址、目的 IP 地址、协议号、TCP 长度),确保数据传输的完整性。
-
紧急指针(2 字节):仅当 URG=1 时有效,指出本报文段中紧急数据的字节数,紧急数据会放在报文段数据的最前面,接收方需优先处理。
2. 可变部分(选项 + 填充)
- 选项字段(可变长度):用于支持 TCP 的扩展功能,最常见的选项是 MSS(最大报文段长度),标识 TCP 报文段数据部分的最大长度,双方在三次握手阶段协商确定,避免 IP 层分片。
- 填充字段:为了使整个 TCP 首部长度是 4 字节的整数倍,当选项字段长度不足时,通过全 0 填充补齐,确保首部格式规范。
TCP 协议的首部格式承载了连接控制、可靠传输、流量控制的全部核心信息,而连接管理(三次握手建立连接、四次挥手释放连接)则是这些字段的典型应用场景。下一篇,我们将深入梳理 TCP 协议的连接管理机制,完成 TCP 协议基础框架的学习。