三次握手、四次挥手。

其实是可以变体成如下两种:

  • 三次握手、三次挥手
  • 四次握手、四次挥手

建立连接时:

  • Client 和 Server 都需要 发送自己的 SYN 并确认对方的序列号,如果不合并包需要 4 次,但 Server 将自己的 SYN 与 ACK 合并发送,所以实际只需要 3 次。

关闭连接时:

  • client和server都需要发送fin、ack,所以是4次,但server端把ack+fin分开了,所以是4次,若没有数据要处理,直接返回ack+fin就是3次了。

步骤

四次挥手步骤

  • Client → Server:FIN
    Client 说:“我这边发完了,不再发送数据了”
    Client 仍然可以接收数据

  • Server → Client:ACK
    Server 收到 FIN,确认 Client 发完了。但 Server 可能还在向 Client 发送剩余数据,所以不能立即发 FIN,否则 Client 还没收到所有数据就认为连接关闭 → 数据可能丢失

  • Server → Client:FIN
    Server 发完所有剩余数据后,告诉 Client:“我这边也发完了”
    Client 接收后才知道 Server 完全关闭

  • Client → Server:ACK
    Client 收到 Server 的 FIN,最后确认

至此连接彻底关闭

作者:张三  创建时间:2025-03-27 15:03
最后编辑:张三  更新时间:2026-03-05 17:48