Windows 环回接口上的等待时间

Windows 环回接口上的等待时间,windows,networking,tcp,loopback,time-wait,Windows,Networking,Tcp,Loopback,Time Wait,为什么到环回接口的TCP连接会在TIME\u WAIT中结束(套接字用SO\u DONTLINGERset关闭),但到不同主机的相同连接不会在TIME\u WAIT中结束(它们会立即重置/销毁) 以下是要说明的场景: (A) 两个应用程序,一个客户端和一个服务器,都在同一台Windows计算机上运行。客户端通过服务器的环回接口(127.0.0.1,端口xxxx)连接到服务器,发送数据、接收数据并关闭套接字(SO_DONTLINGER) 假设这些连接非常短暂,因此客户端应用程序每秒都在建立和破坏大

为什么到环回接口的TCP连接会在
TIME\u WAIT
中结束(套接字用
SO\u DONTLINGER
set关闭),但到不同主机的相同连接不会在
TIME\u WAIT
中结束(它们会立即重置/销毁)

以下是要说明的场景:

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

假设这些连接非常短暂,因此客户端应用程序每秒都在建立和破坏大量连接。最终结果是套接字在
TIME\u WAIT
中结束,客户端最终耗尽其最大套接字数(在Windows上,默认为~3900,我们假设此值不会在注册表中更改)

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


为什么会出现这种差异?

等待时间状态只出现在连接的一端——首先关闭的一端。对于环回接口,两端都在同一台机器上,因此您将始终看到时间等待

在另一种情况下,尝试查看另一台机器。我想你会看到你在那里等待的时间