为什么要有TIME_WAIT?
主动关闭端发送完ACK后等2MSL(最长分节生命期),防止对端没有收到ACK这种情况,重发。
官方点,再官方点......
(1) 可靠地实现TCP全双工连接的终止;
(2) 允许老的重复分节在网络中消逝。TCP将不给处于TIME_WAIT状态的连接发起新的化身。
原理
通信双方建立TCP连接后,主动关闭连接的一方就会进入TIME_WAIT状态。
客户端主动关闭连接时,会发送最后一个ack后,然后会进入TIME_WAIT状态,再停留2个MSL时间(后有MSL的解释),进入CLOSED状态。
下图是以客户端主动关闭连接为例,说明这一过程的。