三次握手确认的是双方收发能力
TCP 建立连接时,客户端先发 SYN,表示我想建立连接;服务器回 SYN+ACK,表示我收到了,也愿意建立连接;客户端再回 ACK,表示我也收到了你的确认。这样双方都能确认彼此的发送和接收能力。
如果只握手两次,服务器知道客户端能发、自己能收,但客户端是否能收服务器的响应、服务器是否能被客户端最终确认,就不够稳。考试问“三次握手为什么需要三次”,不要只答“协议规定”,要答到相互确认。
| 阶段 | 大意 | 老师提醒 |
|---|---|---|
| 第一次 | 客户端发 SYN | 我想建立连接 |
| 第二次 | 服务器回 SYN+ACK | 我收到了,也同意连接 |
| 第三次 | 客户端回 ACK | 我收到了你的确认 |
| 核心目标 | 确认双方收发能力 | 不是单纯凑三次 |
四次挥手是因为关闭连接可以分方向进行
TCP 是全双工通信,连接释放时,双方两个方向的数据发送可以分别关闭。一方说“我这边发完了”,不代表另一方也立刻发完了,所以关闭过程常常比建立连接多一步。
FIN 表示这一方没有数据要发了,ACK 表示确认收到了对方的关闭请求。对方如果还有数据没发完,可以先确认,再等自己也发完后发送 FIN。这个差别,就是四次挥手比三次握手更容易考理解的原因。
生活化理解
三次握手像两个人确认电话能不能打通。
四次挥手像通话结束时,一方说我说完了,另一方可能还要补一句再挂。
所以建立连接看双方能不能通信,释放连接看双方是否都结束发送。
SYN、ACK、FIN 不要只背缩写
SYN 常用于建立连接时同步序号,ACK 表示确认,FIN 表示发送方数据发送完毕、请求释放连接。选择题里最常见的干扰,是把 FIN 放到建立连接阶段,或者把 SYN 放到释放连接阶段。
如果题干描述“建立可靠连接”,优先看 SYN 和 ACK;如果题干描述“释放连接、关闭连接、数据发送完毕”,优先看 FIN 和 ACK。抓住场景,比背完整报文序列更有效。
| 标志位 | 常见阶段 | 题干信号 |
|---|---|---|
| SYN | 建立连接 | 同步、请求建立连接 |
| ACK | 建立和释放都可能出现 | 确认收到 |
| FIN | 释放连接 | 发送完毕、请求关闭 |
| RST | 异常复位连接 | 连接异常、中止 |
考场上先分清“建立”还是“释放”
做 TCP 题时,不要一上来写一串报文。先把题目分成两类:建立连接,还是释放连接。建立连接通常问三次握手、可靠连接、双方收发能力;释放连接通常问四次挥手、全双工关闭、FIN 与 ACK。
如果题目问“为什么 TCP 比 UDP 更可靠”,三次握手只是其中一个角度,还要想到确认、重传、顺序控制、流量控制等机制。不要把 TCP 的所有可靠性都压到三次握手一件事上。
相关题目解析
下面这些题目和本专题的判断方法关联较强,适合读完概念后回到具体题干里校验理解。
- NAT 网络地址转换有什么作用?NAT / 地址转换
- OSPF 中 Area 0 为什么被称为骨干区域?2026年真题考点 / OSPF
- OSPF 为什么在广播网络中选举 DR 和 BDR?OSPF / DR