一、题目
TIME_WAIT 状态是什么
二、TIME_WAIT 如何产生的
使用 TCP 协议通信的双方会在关闭连接时触发 TIME_WAIT 状态,关闭连接的操作其实是告诉通信的另一方自己没有需要发送的数据,但是它仍然保持了接收对方数据的能力,一个常见的关闭连接过程如下:
- 第一次挥手:客户端 A 发送一个 FIN,然后进入 FIN_WAIT_1 状态;这表示客户端 A 没有数据要发送给服务器 B 了;
- 第二次挥手:服务器 B 收到这个 FIN,发回一个 ACK,确认序号为收到的序号加 1,客户端 A 进入 FIN_WAIT_2 状态;服务器 B 告诉客户端 A,我"同意"你的关闭请求;
- 第三次挥手:服务器 B 发送一个 FIN 给客户端 A,请求关闭连接,同时服务器 B 进入 LAST_ACK 状态;
- 第四次挥手:客户端 A 发回 ACK 报文确认,并将确认序号设置为收到序号加 1,然后客户端 A 进入 TIME_WAIT 状态,服务器 B 收到客户端 A 的报文段以后,就关闭连接; 此时,客户端 A 等待 2MSL 后依然没