如何使用 netstat 信息

如何使用 netstat 信息

我们在名为“R2DUO”的 2008R2 机器上安装了一个名为“Seamer”的应用程序,该机器的主机文件中的 IP 地址设置为 192.61.247.37,以太网卡的 IP 地址为 172.26.127.40。我们在 LAN 中还有两个系统,分别名为 R2TMBER 和 R2LEAF。当与端口 5009 建立连接时,应该可以实现一项功能。截至目前,该功能尚未实现,当我检查 netstat -a 时,我可以看到这些条目,

TCP    0.0.0.0:5009           R2DUO:0        LISTENING
TCP    127.0.0.1:445          R2DUO:64181    ESTABLISHED
TCP    127.0.0.1:5009         R2DUO:49519    ESTABLISHED

TCP    127.0.0.1:49156        R2DUO:5009     TIME_WAIT            around 50 entries are there now

TCP    127.0.0.1:49519        R2DUO:5009     ESTABLISHED
TCP    127.0.0.1:64181        R2DUO:microsoft-ds  ESTABLISHED
TCP    127.0.0.1:65190        R2DUO:5009     TIME_WAIT            again 50 entries are there


TCP    172.26.127.42:5009     R2DUO:64445    ESTABLISHED
TCP    172.26.127.42:64445    R2DUO:5009     ESTABLISHED

TCP    192.61.247.37:5009     R2TMBER:50334    ESTABLISHED
TCP    192.61.247.37:61552    R2LEAF:5009      ESTABLISHED

这些都是我目前所知道的知识,首先 5009 处于监听模式,然后它将建立连接。但之后它突然进入 TIME_WAIT,然后建立连接并再次进入 timewait,最后它与 LAN 中的其他两个系统建立连接。有人可以指导我系统设置中的任何错误吗?或者我需要检查任何与网络相关的内容。我想知道 netstat 中此序列背后的逻辑,如下所示首先它将是 0.0.0.0:portnumber 然后它将是 127.0.0.1(loopback):portnumber 然后它是 ethernetIp:portnumber 最后它将与主机文件中输入的系统 ipaddress 和其他两台机器等一起出现。

答案1

根据评论进行更新;检查该服务是否与某些底层 MS 服务冲突;
服务名称和传输协议端口号注册表

winfs 5009 tcp Microsoft Windows Filesystem [Simon_Skaria] 2006-01
winfs 5009 udp Microsoft Windows Filesystem [Simon_Skaria] 2006-01

我认为你可能有兴趣阅读维基百科文章TCP 连接如果您对了解 netstat 信息非常感兴趣,请参阅握手和连接生命周期。此外,您提到了连接的状态,这与 TCP 套接字编程有关,但您实际上可以忽略所有这些,因为它实际上非常简单。(嗯……;-)

当您拨打电话时netstat -a,您要求所有连接都处于监听状态和连接状态。

基本上,该LISTENING行表明有一些进程正在监听 TCP 端口 5009,这很好,因为这是您的应用程序......

TCP    0.0.0.0:5009           R2DUO:0        LISTENING

但是,当某个远程进程与 TCP 套接字 5009 建立连接时,控制 5009 的程序通常会分叉另一个进程或线程来处理该连接,因此您实际上最终会得到netstat -a这样的结果;

TCP    0.0.0.0:5009           R2DUO:0        LISTENING
TCP    127.0.0.1:5009         R2DUO:49519    ESTABLISHED

即原来的监听器,加上连接的远程进程。即这是你的客户端程序连接到服务器。

进一步的连接会创建额外的线路,如下所示;

TCP    0.0.0.0:5009           R2DUO:0        LISTENING
TCP    127.0.0.1:5009         R2DUO:49519    ESTABLISHED
TCP    127.0.0.1:5009         XXX:NNN        ESTABLISHED
TCP    127.0.0.1:5009         YYY:NNN        ESTABLISHED

时间的等待

这个答案对 TIME_WAIT 状态有很好的解释;
https://stackoverflow.com/questions/337115/setting-time-wait-tcp

TCP    127.0.0.1:65190       R2DUO:5009     TIME_WAIT
TCP    127.0.0.1:NNNN        YYYTO:5009     TIME_WAIT
TCP    127.0.0.1:NNNN        RXXXO:5009     TIME_WAIT
TCP    127.0.0.1:NNNN        XXTXX:5009     TIME_WAIT
...many more...

TIME_WAIT 是在客户端连接结束时出现的状态,客户端已通过向 FIN 发送 ACK 来主动关闭连接,但可能仍有数据包来自连接的另一端,因此客户端连接处于 TIME_WAIT 状态,该状态始终比数据包的 TTL 长,请参阅对 TIME_WAIT TCP 状态进行深入讨论。

端口 5009 似乎已注册 Microsoft Windows 文件系统 (winfs) 服务,因此您必须提供服务和设置的更多详细信息,以及除了在 netstat 输出中看到的内容之外还存在什么问题。

大量 TIME_WAIT 连接

TCP    127.0.0.1:65190       R2DUO:5009     TIME_WAIT
TCP    127.0.0.1:NNNN        YYYTO:5009     TIME_WAIT
TCP    127.0.0.1:NNNN        RXXXO:5009     TIME_WAIT
TCP    127.0.0.1:NNNN        XXTXX:5009     TIME_WAIT
...many more...

基本上,您的客户端正在连接,然后立即断开连接,多次,因此应用程序早期存在某些问题(例如身份验证)或应用程序协议不匹配,或者某些与底层 TCP 无关的问题。

我认为这表明配置存在一些问题,客户端一旦连接就无法继续,因此客户端关闭与服务器的连接。结果是大量连接很快被关闭。因此你看到这些是 TIME_WAIT

出现这种情况的可能性包括客户端和服务器之间存在某种密码问题,或者其他应用程序配置错误,从而导致客户端突然关闭。

相关内容