Loopback接口上的TIME_WAIT

时间:2008-11-21 19:01:08

标签: windows networking tcp loopback time-wait

为什么到环回接口的TCP连接最终在TIME_WAIT(套接字关闭SO_DONTLINGER设置),但与{1}}的相同连接不同于TIME_WAIT (它们会立即重置/销毁)?

以下是用于说明的方案:

(A)两个应用程序(客户端和服务器)都在同一台Windows计算机上运行。客户端通过服务器的环回接口(127.0.0.1,端口xxxx)连接到服务器,发送数据,接收数据并关闭套接字(SO_DONTLINGER已设置)。

假设连接非常是短暂的,因此客户端应用程序每秒都会建立并销毁大量连接。最终的结果是套接字最终在TIME_WAIT,并且客户端最终耗尽其最大套接字数量(在Windows上,默认情况下为~3900,我们假设此值不会在注册表)。

(B)与场景(A)相同的两个应用程序,但服务器位于不同的主机上(客户端仍在Windows上运行)。这些连接在各方面都是相同的,除了它们的目的地不是127.0.0.1,而是其他一些IP。客户端计算机上的连接不会进入TIME_WAIT,客户端应用程序可以继续无限期地建立连接。

为何出现差异?

1 个答案:

答案 0 :(得分:3)

TIME_WAIT状态仅发生在连接的一端 - 首先关闭的结束。对于环回接口,两端都在同一台机器上,因此您将始终看到TIME_WAIT。

在您的其他情况下,请尝试查看其他计算机。我想你会在那里看到TIME_WAIT套接字。