一,TIME_WAIT
1,来源:TCP三次握手建立连接,四次挥手断开连接,在四次挥手的过程中,发起断开请求的一方会有一段时间进入TIME_WAIT,具体时机,详见下图:
![0ce5bc34bf2ac72d7d3ca7e4fa54e650.png](https://i-blog.csdnimg.cn/blog_migrate/712251b8e35d5b2a21f65a9c768755c7.jpeg)
2,时长:客户端在TIME_WAIT的停留时间是固定的,被指定为2MSL,MSL是规范定义的网络报文的最大生存时间,即,如果网络中的一个报文段在MSL时间内,未被接收,就会被直接丢弃。Linux在实现中,指定MSL=30秒,因此,TIME_WAIT的时间就规定为60秒。
3,危害:客户端是发起连接的一方,通常也是主动断开连接的一方,如果客户端对TIME_WAIT处理不当,会导致其所在的服务器在高并发的情况下,TIME_WAIT状态的连接过多,将本地端口耗尽,在一段时间内,无法发起新的连接,直到TIME_WAIT被系统自动回收关闭。
4,作用:在TCP的容错设计,协议假设报文会出错,导致重传的前提下:
4.1,保证客户端正常关闭:如果服务端没有收到客户端第一次发出的ACK(n+1),会在一来一回