TIME_WAIT
是在四次挥手中主动进行关闭连接的一方在接收到对方传达的带有FIN标志的数据包并且发送带有ACK标志的数据包后进入的状态,也就是第三、四次挥手后,主动关闭方的状态。由于要等待本次连接中所有传递的信息接收完毕,不能干扰到之后的连接,所以等待时间会比较长,一般是四分钟左右。因此,为了尽量避免TIME_WAIT,服务端一般不会主动关闭连接。
CLOSE_WAIT
CLOSE_WAIT是被动关闭连接方接收到主动方的带有FIN标志的数据包且发送带有ACK标志的数据包后进入的状态,也就是第一、二次挥手之后被动关闭方的状态。而若执行close操作后,则会进行状态转换,由CLOSE_WAIT切换到LAST_ACK。但若被动关闭连接一方(通常是server)由于忙于读写操作,未及时将之前的连接进行close操作,则会导致大量的连接长时间处于CLOSE_WAIT,无法进入下一阶段。