目的

  1. 数据全部到达
  2. 系统资源(Socket)都被正确释放

挥手过程

TCP的4次挥手(Four-way handshake)是指TCP连接终止时的过程。这个过程确保双方都能够完全关闭连接。让我简要解释一下这个过程:

  1. 第一次挥手:

    • 客户端发送一个FIN包,表示客户端想要关闭连接。
    • 此时客户端进入FIN_WAIT_1状态。
  2. 第二次挥手:

    • 服务器收到FIN包后,发送一个ACK包作为确认。
    • 服务器进入CLOSE_WAIT状态。
    • 客户端收到ACK后,进入FIN_WAIT_2状态。
  3. 第三次挥手:

    • 服务器准备好关闭连接时,向客户端发送一个FIN包。
    • 服务器进入LAST_ACK状态。
  4. 第四次挥手:

    • 客户端收到服务器的FIN包后,发送一个ACK包作为确认。
    • 客户端进入TIME_WAIT状态。
    • 服务器收到ACK包后,关闭连接。

这个过程是双向的,确保双方都能够完全关闭连接。每一方都需要单独进行关闭,这就是为什么需要4次挥手。

需要注意的是,在TIME_WAIT状态,客户端会等待一段时间(通常是2MSL,最大报文段生存时间的两倍),以确保网络中所有相关的报文段都已经过期。