TCP 是面向连接的可靠传输协议,三次握手的核心目的是建立双向可靠通信链路,四次挥手的核心目的是安全断开全双工连接,两者的报文交互和字段变化是理解 TCP 工作机制的关键。
一、 TCP 三次握手(建立连接)
核心目标
确认客户端 ↔ 服务端双方的发送能力和接收能力都正常,同步双方的初始序列号(ISN),为后续可靠传输做准备。
1. 文字版流程图
假设 客户端 主动发起连接,服务端 监听端口(如 80、22)等待连接:
plaintext
客户端(C) 服务端(S)
| |
| 1. 发送 SYN 报文 |
| [SYN=1, seq=x] →→→→→→→→→→→→→→ | 处于 LISTEN 状态
| |
| 2. 接收 SYN+ACK 报文 |
| ←←←←←←←←←←←←←← [SYN=1, ACK=1, seq=y, ack=x+1]
| | 处于 SYN_RCVD 状态
| 3. 发送 ACK 报文 |
| [ACK=1, seq=x+1, ack=y+1] →→→→→ |
| | 处于 ESTABLISHED 状态
| |
双方进入 ESTABLISHED 状态,开始传输数据
2. 报文核心字段解析
TCP 报文的标志位和序列号 / 确认号是握手的关键,核心字段说明:
| 字段 | 作用 | 三次握手中的变化 |
|---|---|---|
SYN | 同步标志位,SYN=1 表示这是一个连接请求 / 响应报文 | 第 1 步 C→S:SYN=1(请求同步);第 2 步 S→C:SYN=1(响应同步) |
ACK | 确认标志位,ACK=1 表示报文携带确认号 | 第 2 步 S→C 起 ACK=1(后续报文默认带) |
seq | 序列号,标记当前报文数据的起始序号 | 第 1 步 C 随机生成初始序号 x;第 2 步 S 随机生成初始序号 y;第 3 步 C 序号变为 x+1(SYN 报文占 1 个序号) |
ack | 确认号,标记期望收到的下一个字节的序号 | 第 2 步 S 确认号 ack=x+1(期望收到 C 的下一个序号);第 3 步 C 确认号 ack=y+1(期望收到 S 的下一个序号) |

评论(0)
暂无评论