首先需要了解TCP四次挥手
TCP四次挥手
TIME_WAIT产生条件
主动关闭方在发送四次挥手的最后一个ACK后会变为TIME_WAIT状态,持续时间为2msl(Linux中一个msl是30s,是不可配置的)
持续的作用
如果要可靠的关闭连接
在最后一次主动关闭方发送ACK时,可能因为网络波动没有被被动关闭方接收,被动关闭方就会进行超时重传,time_wait保证了能把连接关闭的尾巴(ACK)发送出去
如果没有TIME_WAIT 可能被动关闭方没有收到ACK请求,不断的超时重传FIN,这样如果主动关闭方重新连接被动关闭方,就会引起本次的连接受到影响
TIME_WAIT占用的资源
少量内存(大概4k)和一个文件描述符fd
参考文章
TCP TIME_WAIT状态解析及问题解决