TIME_WAIT 的那些事

2019-08-02 17:15:03 浏览数 (1)

19.2 TIME_WAIT 的那些事

19.2.1 描述

我们知道 TCP 在关闭连接的时候,主动断开的一方将处于 TIME_WAIT 状态,并将持续两倍的 MSL。这个 MSL 在 RFC 793 中的建议是 1 分钟,但是很多系统实现都是 30 秒,所以 TIME_WAIT 的时长也就是 1 分钟。这个参数实在内核中设置的,如果想修改需要重新编译内核参数,查看可以使用ss 来查看 TIME_WAIT 的剩余存活时长(netstat 也可以 -o 参数)

19.2.2 查看TIME_WAIT

$ ss -nta -o state TIME-WAIT | cat

Recv-Q Send-Q Local Address:Port Peer Address:Port

0 0 192.168.209.14:10050 192.168.203.91:46113 timer:(timewait,358ms,0)

在以上的参数中可以看出timewait等待的时间为358ms,之后就会被系统回收掉。在一个高性能的系统中,大概会稳定在 200ms 左右,可以通过「ss -int」命令来确认。当然,TCP Timer 除了 TIME_WAIT 这种,还有 KEEPALIVE, ON, OFF 三种类型。

19.2.3 查看KEEPALIVE状态

$ netstat -otn

在以上中可以看出有KEEPALIVE,ON,OFF状态的链接,其中KEEPALIVE并不是代表长连接的意思,而是 TCP 的「保活」机制,当达到这个时间系统便会回收。

KEEPALIVE

这里的 keepalive 可并不是长连接的意思,而是 TCP 的「保活」机制。

ON

就是 RTO 超时重传时间。

OFF

以上三种都不属于。

0 人点赞