代码之家  ›  专栏  ›  技术社区  ›  Brian

回送接口等待时间

  •  1
  • Brian  · 技术社区  · 17 年前

    为什么到环回接口的TCP连接最终会 TIME_WAIT (插座闭合 SO_DONTLINGER 设置),但到其他主机的相同连接不会以 时间等待 (它们立即重置/销毁)?

    以下是要说明的场景:

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

    假设连接是 非常 短暂的,所以客户端应用程序每秒建立和破坏大量的连接。最终的结果是套接字以 时间等待 ,客户端最终会耗尽其最大套接字数(在Windows上,默认情况下为~3900,我们假设不会在注册表中更改此值)。

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

    为什么存在差异?

    1 回复  |  直到 13 年前
        1
  •  3
  •   Darron    17 年前

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

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

    推荐文章