Windows 是否有等效的 netstat -s ?

Windows 是否有等效的 netstat -s ?

我知道netstat -sWindows 上存在这个功能,但是它显示的信息比 Linux/OS X 少得多。它只给出了 8 个有关 TCP 的计数器,而在 Linux 上则超过 50 个。

我正在寻找任何与 TCP 相关的计数器,例如:

  • Linux:TCPDSACKOldSentDelayedACKLocked或。您可以TCPOFODrop通过TCPDSACKIgnoredNoUndo获得整套计数器cat /proc/net/netstat

  • BSD/OS X: rcvbyteafterwinrcvduppackrcvoobyte

是否有内置工具可以实现此目的?或者也许有一个系统调用可以让我检索此类信息?

答案1

不适用于内置工具。我能想到的唯一方法是使用 winpcap/npf 库来构建您自己的工具来构成您需要的统计数据。

与 Linux/BSD 相比,Windows 的网络堆栈被剥离了。因此需要 winpcap&npf 驱动程序。

我想补充一点,即使 Windows 防火墙也是伪无状态防火墙(第 4 层,它只检查 TCP 流量,不检查 ICMP 等(第 3 层)),而不是像 Linux 或 BSD 的机器那样的全状态第 3 层防火墙。所以它解释了为什么内置工具列出的数据少得多。

答案2

除了使用第三方产品之外...

netstat -s -e

或者你可以使用 WMI

例如:

wmic path Win32_PerfFormattedData_Tcpip_NetworkInterface

wmic path Win32_PerfFormattedData_Tcpip_TCPv4

wmic path Win32_PerfFormattedData_Tcpip_IPv4

上述操作需要与GET参数一起使用,以便将目标集中在您想要的对象上,但您可以按原样运行它们以查看有哪些选择。

答案3

netsh interfaces ipv4 show {tcp,ip,udp}stats通过 netstat 向您提供一些附加信息,但可能还不够。

有关 netsh ipv4 的 MS Technet 文章

答案4

对于像我一样偶然发现这个问题的人,这里还有几个选择

# List all TCP Connections
netstat -tanob
# List all Connections
netstat -anob

# List all TCP Connections with FQDN
netstat -tafob
# List all Connections with FQDN
netstat -afob

但我更喜欢使用 PowerShell 方式来获取非常有用的信息。

Get-NetTCPConnection |
    Where-Object {$_.State -eq "Listen"} |
    Sort-Object LocalPort |
    Format-Table -AutoSize `
        LocalAddress,
        LocalPort,
        RemoteAddress,
        RemotePort,
        State,
        @{l="Process/Application";e={$(Get-Process -PID $_.OwningProcess | Select-Object ID,ProcessName).ProcessName}}

关于 PowerShell 方式的精彩文章,请访问https://sysnetdevops.com/2017/04/24/exploring-the-powershell-alternative-to-netstat/

相关内容