我正在使用GM_xmlhttpRequest(greasemonkey xmlhttpRequest)与我的应用进行通信。每半秒发送一些json来更新页面的状态。我在FireFox中运行了3页。使用netstat -a
我得到了这些结果。
超过200行。为什么我要使用这么多端口!?!我怎么能......不这样做?并仍然与我的申请沟通。
注意:我所在的3个页面(例如google.com)与我的域名(localhost)不匹配,因此我非常确定正常的xmlhttpRequest不起作用(我没试过。我使用jquery作为包装器)
Active Connections
Proto Local Address Foreign Address State
TCP 0.0.0.0:1234 My-PC:0 LISTENING
TCP 127.0.0.1:1234 My-PC:19204 TIME_WAIT
TCP 127.0.0.1:1234 My-PC:19205 TIME_WAIT
[line 8...]
[line 221...]
TCP 127.0.0.1:1234 My-PC:19420 TIME_WAIT
TCP 127.0.0.1:1234 My-PC:19421 TIME_WAIT
TCP 127.0.0.1:1234 My-PC:19422 TIME_WAIT
TCP 127.0.0.1:1234 My-PC:19423 TIME_WAIT
答案 0 :(得分:0)
TIME_WAIT表示连接已关闭但如果某些数据包仍在浮动,则资源会保留一段时间。这是必要的,因为两台计算机通信之间的延迟抖动。抖动意味着从一台计算机到另一台计算机所需的时间不是恒定的。因此,您可能会收到一个关闭数据包,然后是其他一些数据包。如果操作系统立即重新使用src IP,src端口,dst IP,dst端口组合这些其他数据包可能会令人困惑(看起来像数据包损坏/欺骗攻击)。因此,操作系统会在资源上停留一段时间。
我不知道怎么做,但我明白操作系统在TIME_WAIT中可以使用多长时间的价值可以调整。至于什么似乎是你的首要问题,是的,如果你的网站数量很大,这可能是一个问题,因为它会占用资源。此外,当你说你“使用这么多端口”时,你只是在客户端使用一堆端口。每次建立新连接时,客户端都会使用新端口作为客户端端口号,最终如果您建立了足够的连接,它将重用以前使用过的端口号。这在客户端并不是真正的问题,它是服务器会遇到问题。需要明确的是,这不是“多少端口”的问题,而是连接数量(即本地地址对应于服务器应用程序的行数)。