我使用的是 Windows 7 64 位,运行netstat -b
后数据输出到文本文件。有 4 列“Proto”、“本地地址”、“外部地址”和“状态”。“外部地址”表示我的计算机名称和端口号。至少还有 9 个类似的,只是本地地址和外部地址上的端口不同。
例如:
Proto Local Address Foreign Address State
TCP 127.0.0.1:2559 Someuser-PC:54735 TIME_WAIT
这是什么意思?我应该担心吗?
答案1
注意:这个答案是对 Giacomo1968 答案的补充。他说得很对;我之所以回答,也是因为我觉得我还有一些细节需要补充。我让那个答案与 TCP 端口 2559 对话。
由于您的连接是 127.0.0.1,这意味着您电脑上的一个程序正在与您电脑上的一个程序(可能是第二个程序)进行通信。
对于活动连接,您很可能有匹配的条目。因此,除了:
Proto Local Address Foreign Address State TCP Someuser-PC:54735 127.0.0.1:2559 ESTABLISHED
您可能还具有:
Proto Local Address Foreign Address State TCP 127.0.0.1:2559 Someuser-PC:54735 ESTABLISHED
对于 TIME_WAIT 状态来说,情况可能不太一样。如果我想在故障排除过程中收集更多信息,我想我会寻找它。
Proto Local Address Foreign Address State TCP Someuser-PC:54735 127.0.0.1:2559 TIME_WAIT
您可能还遇到过:
Proto Local Address Foreign Address State TCP 127.0.0.1:2559 Someuser-PC:54735 TIME_WAIT
我还会删除系统名称。我通常使用netstat -nab
(在现代 MicrosoftWindows 版本中),因为它更快更清晰。如果连字符后没有 n,netstat 会执行反向名称查找,这就是 127.0.0.1 看起来像 Someuser-PC 的原因。它更慢,更不清晰,因为实际的 IP 数据包确实使用的是数字 IP 地址,而不是文本名称。(如果我想知道 127.0.0.1 的名称,我可以自己手动执行反向名称查找。)如果有恶意攻击者,我不希望 GoodGuy 的正向查找指向 192.0.2.10,然后反向查找 198.51.100.50 以解析为 GoodGuy,然后我手动查找 GoodGuy 并开始错误地指责 192.0.2.10,而真正攻击我的地址是 198.51.100.50。我通过坚持使用数字来避免这种谬论,因为无论如何这都更快。
您可能需要以管理员身份运行此程序才能获得最佳可用进程名称。(我指的不仅仅是管理员组中的帐户;如果您有 UAC,您可能需要管理员提示才能绕过 UAC 的限制。)
端口 54735 可能是传出连接,因为它在 IANA 的临时端口范围内。基本上,这意味着这些数字是为传出连接保留/计划的。(该范围是可自定义的,因此我根据默认值来发表此评论。术语“临时”端口是一个标准术语,可用于查找更多详细信息。)
通常,出于安全目的,如果 TCP 连接处于 ESTABLISHED 或 LISTENING 状态,则需要注意(因为 LISTENING 可能会变成 ESTABLISHED 连接)。TIME_WAIT 会在一段时间后自行消失;除非您有很多时间,否则我不会担心这一点。(有时 Web 服务器会生成大量 TIME_WAIT 连接,因为它们会创建大量连接但不会正确关闭它们。我认为,比如几十或几百个。)随便说说,我认为此状态表示连接已放弃通信,正在等待远程端确认连接已关闭。可能是因为 netstat 没有显示相关程序,所以该程序认为连接已关闭,并且已停止关注该连接。
关于您是否需要担心的问题,我的回答很简单:不需要。这仅仅意味着您的计算机的一部分正在与计算机的另一部分通信。如果 127.0.0.1 上的程序导致问题,那么您的问题是您的计算机上安装了恶意程序。这可能是一个值得关注的问题。但是,程序与 127.0.0.1 进行通信这一事实通常不会引起关注,因为这些连接通常不会增加任何额外的安全问题。此类网络连接是相当正常的行为。因此,您与 127.0.0.1 之间建立的 9 个 TIME_WAIT 连接无需担心。
答案2
第一的,netstat
是一个非常简单的工具。它只是打印有关网络连接、路由表、接口统计信息、伪装连接和多播成员资格的信息。基本上,只是整体网络信息。所以你可以这样说:
这是什么意思?我应该担心吗?
嗯,实际上我读到的是这样的:
Proto Local Address Foreign Address State
TCP 127.0.0.1:2559 Someuser-PC:54735 TIME_WAIT
从字面上理解,它只是意味着您在127.0.0.1
使用端口的 IP 地址上的本地计算机正在与名为端口的2559
远程计算机建立 TCP 连接,并且状态基本上意味着连接现在已关闭,但该连接在您的计算机上保持活动状态,以防有任何杂散/落后数据包在等待/需要该连接。Someuser-PC
54735
TIME_WAIT
现在为什么连接是否在某个时刻建立?不清楚。本地地址端口2559
似乎与Linux 终端服务器项目 (LSTP)描述如下:
Linux 终端服务器项目为 Linux 服务器添加了瘦客户端支持。LTSP 是一种灵活、经济高效的解决方案,可帮助世界各地的学校、企业和组织轻松安装和部署瘦客户端。
外部地址端口54735
属于通常被认为是“动态”或“私有”的高端端口,但基本含义是“没有标准应用程序以已知方式保留/声明此端口,因此这些端口用于随机/特殊/特定于应用程序的连接”。
我对 LSTP 没有很深的经验,也不知道或不理解您的设置细节,但从表面上看,这似乎是一个有效且合法的连接。许多协议对客户端使用已知端口,然后在目标服务器上使用随机的“私有”端口。所以这对我来说表面上似乎是正常的行为。即使有几十个条目被显示,netstat
因为老实说,在任何操作系统的 PC 上,运行netstat
这样的基本裸命令(没有过滤)只会在屏幕上转储大量条目;在天气好和系统干净的情况下,网络流量可能会很嘈杂。
现在,如果您说这Someuser-PC
是您的本地 PC,并且有来自 localhost 环回的连接127.0.0.1
,那么这一切都可能与您本地机器上的某些应用程序的工作方式有关。这意味着,您运行的软件可以执行轻量级 LSTP 终端仿真,核心代码使用 TCP 数据包与其父“服务器”应用程序进行通信。
但老实说,根据你问题提供的信息,很难说这是好事还是坏事。我的直觉告诉我,你只是在电脑上安装了一些软件,这些软件只是(并且不是恶意的)使用 LSTP 终端仿真来完成工作。仅此而已。