在一台机器上,我发现有许多 TIME_WAIT 连接(到不同的远程服务器)使用相同的本地端口netstat:
tcp 0 0 10.32.198.120:10240 10.32.92.81:4000 TIME_WAIT
tcp 0 0 10.32.198.120:10240 10.66.32.192:80 TIME_WAIT
tcp 0 0 10.32.198.120:10242 10.32.92.81:4000 TIME_WAIT
tcp 0 0 10.32.198.120:10242 10.66.32.192:80 TIME_WAIT
tcp 0 0 10.32.198.120:10243 10.32.92.81:4000 TIME_WAIT
tcp 0 0 10.32.198.120:10243 10.66.32.192:80 TIME_WAIT
tcp 0 0 10.32.198.120:10244 10.32.92.81:4000 TIME_WAIT
tcp 0 0 10.32.198.120:10244 10.66.32.192:80 TIME_WAIT
tcp 0 0 10.32.198.120:10245 10.66.32.192:80 TIME_WAIT
Run Code Online (Sandbox Code Playgroud)
我知道 TIME_WAIT 是为了防止来自先前连接的旧数据包被新连接接受而设计的。但由于到不同远程服务器的新连接不会被误认为是旧连接,所以我认为对不同远程服务器使用 TIME_WAIT 端口显然是安全的。
那么,我所看到的(不同连接中的相同本地端口)是否是 TIME_WAIT 端口被重用的证据?
我使用的是 CentOS 6.5(tcp_tw_reuse 设置为 0),这些连接是由 python2.7.6/requests2.12.1 创建的。