← 返回首页
TCP挥手 为什么是四次而不是三次?
- 因为 TCP 是全双工的。当一方(Client)发送 FIN 时,仅代表它不再发送数据,但它还能接收数据。
- 另一方(Server)收到 FIN 后,可能还有业务数据需要处理并发送给 Client。所以 Server 先回一个 ACK 确认收到关闭请求(第 2 次),等自己数据发完了,再单独发一个 FIN 来关闭自己这一侧(第 3 次)。
- 如果 Server 也没有数据要发了,它可以将 ACK 和 FIN 合并成一次发送(变成三次挥手),但这取决于应用层逻辑和 TCP 栈实现,标准流程是四次。