为什么 lsof 显示这些已建立的 ipv6 连接?

为什么 lsof 显示这些已建立的 ipv6 连接?

我正在尝试查明为什么 Web 应用程序会以与客户端的连接的形式积累文件描述符,即使客户端(浏览器)已断开连接。

该服务器正在运行 Ubuntu 14.04。

所讨论的连接通常如下所示(lsof 输出):

atc     10763 vcap  724u  IPv6 309771865      0t0  TCP 10.32.108.171:8080->10.118.33.246:56379 (ESTABLISHED)
atc     10763 vcap  725u  IPv6 309777427      0t0  TCP 10.32.108.171:8080->10.118.33.246:56397 (ESTABLISHED)
atc     10763 vcap  726u  IPv6 309777428      0t0  TCP 10.32.108.171:8080->10.118.33.246:56396 (ESTABLISHED)
atc     10763 vcap  727u  IPv6 309772456      0t0  TCP 10.32.108.171:8080->10.118.33.246:56380 (ESTABLISHED)

以下是我感到困惑的几点:

  • 客户端系统 ( ) 上没有浏览器10.118.33.246与 Web 服务器 ( ) 建立连接10.32.108.171,但连接仍处于该ESTABLISHED状态。似乎永远如此,或者直到 Web 服务器重新启动。
  • 服务器未配置 IPv6 地址。
  • 服务器甚至没有启用 IPv6:net.ipv6.conf.default.disable_ipv6 = 1但 lsof 却显示了这样的连接。
  • 来自浏览器的“合法”连接是通过 IPv4 建立的(至少根据 Mac OS 上的 lsof)。
  • 如果我启动浏览器并建立连接,我可以在服务器上跟踪该连接并在我关闭浏览器时看到它消失。
  • 客户端和服务器之间有一条直接路由。据我所知,中间组件可能为客户端保持连接打开,因此不会发生 nat/伪装/代理。

除非我最后一点错了,否则我不明白到底发生了什么。为什么ESTABLISHED即使客户端已经离开,连接仍然保持?

感谢您的任何见解。

相关内容