time wait状态存在的意义
发起端向接收端发送最后的ACK时,报文可能会丢失,这时接收端依旧处于last_ack状态,一段时间内没有收到ack,它会重发报文,然后让我们的接收端再次发送ack报文,所以time_wait的存在的目的就是保证最后发送的ack报文被接收端接收到
time_wait过多的危害
一般发生于高并发短连接的情况下
- 占用内存,一个time_wait大概占用4k的内存
- 占用端口,端口有限,0-65535,time_wait时间大于业务时间,time_wait占用端口会出现活跃端口和time_wait所占用端口出现1:几百的情况,严重情况下导致新的请求无法获取端口