跳转至

TCP 三次握手和四次挥手

一、三次握手

为什么

确认双方收发能力正常。

过程

  1. 客户端:SYN,seq=x。
  2. 服务端:SYN+ACK,seq=y,ack=x+1。
  3. 客户端:ACK,ack=y+1。

为什么不是两次

两次的话,客户端发的旧连接请求迟到,服务端会建连接,但客户端不接收,浪费。

二、四次挥手

为什么四次

TCP 全双工,两个方向都要关。

过程

  1. 客户端:FIN。
  2. 服务端:ACK。
  3. 服务端:FIN。
  4. 客户端:ACK。

TIME_WAIT

客户端最后等 2MSL: - 保证最后一个 ACK 到。 - 让旧连接报文消失。

三、为什么三次握手四次挥手

  • 握手:服务端 SYN+ACK 一起发。
  • 挥手:服务端收到 FIN 可能还有数据要发,先 ACK,发完数据再 FIN。

四、常见问题

  • SYN 攻击:大量 SYN 不完成第三次握手。
  • TIME_WAIT 过多:调参数。

高频

为什么三次、为什么四次、TIME_WAIT 是必考题。