目的
- 数据全部到达
- 系统资源(Socket)都被正确释放
挥手过程
TCP的4次挥手(Four-way handshake)是指TCP连接终止时的过程。这个过程确保双方都能够完全关闭连接。让我简要解释一下这个过程:
-
第一次挥手:
- 客户端发送一个FIN包,表示客户端想要关闭连接。
- 此时客户端进入FIN_WAIT_1状态。
-
第二次挥手:
- 服务器收到FIN包后,发送一个ACK包作为确认。
- 服务器进入CLOSE_WAIT状态。
- 客户端收到ACK后,进入FIN_WAIT_2状态。
-
第三次挥手:
- 服务器准备好关闭连接时,向客户端发送一个FIN包。
- 服务器进入LAST_ACK状态。
-
第四次挥手:
- 客户端收到服务器的FIN包后,发送一个ACK包作为确认。
- 客户端进入TIME_WAIT状态。
- 服务器收到ACK包后,关闭连接。
这个过程是双向的,确保双方都能够完全关闭连接。每一方都需要单独进行关闭,这就是为什么需要4次挥手。
需要注意的是,在TIME_WAIT状态,客户端会等待一段时间(通常是2MSL,最大报文段生存时间的两倍),以确保网络中所有相关的报文段都已经过期。