什么是三次握手和四次挥手?它们在 TCP 连接中的作用是什么?

待审核
推荐答案

TCP 的三次握手与四次挥手详解

总结回答

三次握手是 TCP 建立连接的过程,确保双方都能发送和接收数据;四次挥手是 TCP 断开连接的过程,确保双方都能优雅地关闭连接。它们共同保证了 TCP 连接的可靠性和有序性。

三次握手详解

三次握手是 TCP 建立连接的标准过程:

  1. 第一次握手:客户端发送 SYN=1 和初始序列号 seq=x 的报文给服务器,进入 SYN_SENT 状态
  2. 第二次握手:服务器收到 SYN 后,发送 SYN=1, ACK=1, ack=x+1 和初始序列号 seq=y 的报文,进入 SYN_RCVD 状态
  3. 第三次握手:客户端收到后,发送 ACK=1, ack=y+1 的报文,进入 ESTABLISHED 状态;服务器收到后也进入 ESTABLISHED 状态

作用

  • 确认双方的发送和接收能力都正常
  • 同步初始序列号,为后续可靠传输做准备
  • 防止历史重复连接初始化造成的资源浪费

四次挥手详解

四次挥手是 TCP 断开连接的标准过程:

  1. 第一次挥手:主动关闭方发送 FIN=1 和序列号 seq=u 的报文,进入 FIN_WAIT_1 状态
  2. 第二次挥手:被动关闭方收到 FIN 后,发送 ACK=1, ack=u+1 的报文,进入 CLOSE_WAIT 状态;主动方收到后进入 FIN_WAIT_2 状态
  3. 第三次挥手:被动关闭方准备好关闭后,发送 FIN=1, ACK=1, seq=v, ack=u+1 的报文,进入 LAST_ACK 状态
  4. 第四次挥手:主动关闭方收到后,发送 ACK=1, ack=v+1 的报文,进入 TIME_WAIT 状态;被动方收到后关闭连接

作用

  • 确保双方都能完成数据传输后再关闭连接
  • 处理网络中可能滞留的报文,避免影响新连接
  • 保证连接的可靠释放,防止出现半关闭状态

为什么是三次握手和四次挥手

  • 三次握手:因为第二次握手时服务器可以同时发送 SYN 和 ACK,合并为一个报文
  • 四次挥手:因为 TCP 是全双工的,每个方向需要单独关闭。被动关闭方收到 FIN 后可能还有数据要发送,所以 ACK 和 FIN 不能合并发送