ChatGPT体验 AI绘画体验
TCP三次握手
提问人:ppw_g25020232 时间:2026-03-20 公开状态:

提问人:ppw_g25020232 时间:2026-03-20 公开状态:

# TCP三次握手详解
TCP三次握手是建立可靠连接的标准过程,是计算机网络中的重要基础知识。
## 三次握手过程
| 步骤 | 方向 | 数据包 | 主要标志位 |
|------|------|--------|------------|
| 第一次握手 | 客户端 → 服务端 | SYN | SYN=1, seq=x |
| 第二次握手 | 服务端 → 客户端 | SYN+ACK | SYN=1, ACK=1, seq=y, ack=x+1 |
| 第三次握手 | 客户端 → 服务端 | ACK | ACK=1, seq=x+1, ack=y+1 |
## 各步骤详解
### 1. 第一次握手(SYN)
- 客户端发送一个SYN包(SYN=1),选择一个随机序列号seq=x
- 此时客户端进入 **SYN_SENT** 状态
- 作用:**客户端请求建立连接**
### 2. 第二次握手(SYN+ACK)
- 服务端收到SYN包后,发送SYN+ACK包
- 其中ACK确认号 = x+1,表示期望收到的下一个字节
- 随机生成自己的序列号 seq=y
- 此时服务端进入 **SYN_RCVD** 状态
- 作用:**服务端确认收到请求,并表明自己也已准备好**
### 3. 第三次握手(ACK)
- 客户端发送ACK包,确认号为 y+1
- 此时客户端进入 **ESTABLISHED** 状态
- 服务端收到ACK后也进入 **ESTABLISHED** 状态
- 作用:**客户端确认收到服务端的确认,连接建立完成**
## 为什么需要三次握手?
1. **防止历史连接**:如果第一次握手的SYN包延迟到达,可能导致服务端错误建立连接。三次握手可以同步双方的初始序列号。
2. **同步序列号**:TCP是可靠传输协议,双方都需要知道对方的初始序列号,三次握手正好完成序列号的同步与确认。
3. **验证双向通信能力**:三次握手确保了双方都具备发送和接收数据的能力。
## 简单比喻
> 就像打电话:
> - 你说"喂,你能听到吗?"(第一次握手)
> - 对方说"我能听到,你能听到我吗?"(第二次握手)
> - 你说"我也能听到"(第三次握手)
> - 双方确认可以正常交流,开始正式对话
如果有任何其他计算机网络相关的问题,欢迎继续提问!