TIME_WAIT
多发生在主动连接的一方
nc连接一个已监听的端口 python3 -m http.server 9999
netstat -anp|grep 9999 可以看出已经监听了
nc -zv localhost 9999
这个时候,nc 进城已经退出了,再用netstat -anp|grep 9999
可以看到多了一个
tcp 0 0 127.0.0.1:45146 127.0.0.1:9999 TIME_WAIT -
这个输出的解释是
nc 主动关闭连接,会立即进入TIME_WAIT状态,不会立即CLOSED,因为,最后发送的ACK包可能没有传到服务端,这个时候服务端会再发送FIN包,目的是为了维系整个状态。
#改系統默认的TIMEOUT时间\
net.ipv4.tcp_fin_timeout=2
#启重用,允许将TIME_WAIT sockets重新用于新的TCP连接 默认为0表示关闭\
net.ipv4.tcp_tw_reuse=1
#开启TCP连接中TIME_WAIT sockets的快速回收 默认为0 表示关闭\
net.ipv4.tcp_tw_recycle=1
CLOSE_WAIT
多发生在服务器端
client ----发送关闭请求FIN---->
服务端收到FIN状态立即变为CLOSE_WAIT, 并发送ACK包
但是应用里并未使用close(被动关闭),导致一直在CLOSE_WAIT状态