我知道netstat -s存在于Windows上,但它显示的信息比Linux / OS Xless。它只给出8个关于TCP的计数器,而在Linux上则超过50个。
我正在寻找任何TCP相关的计数器,如:
Linux: TCPDSACKOldSent , DelayedACKLocked , TCPOFODrop或TCPDSACKIgnoredNoUndo 。 您可以通过cat /proc/net/netstat获取整套计数器。
BSD / OS X: rcvbyteafterwin , rcvduppack或rcvoobyte 。
有没有一个内置的工具来实现这一目标? 或者也许有一个系统调用,可以让我检索这些信息?
否内置工具。 我唯一能想到的方式就是使用winpcap / npf库来构build你自己的工具来组成你需要的stat。
在Windows中,与Linux / BSD相比,networking堆栈被剥离。 因此需要winpcap&npf驱动程序。
我会补充说,即使Windows防火墙是一个伪无状态的防火墙(第4层,它只是检查TCP通信,没有icmp检查等(第3层)),而不是像Linux或BSD的框可。 所以它解释了为什么内置的工具列表less了很多的数据。
使用第三方产品短缺…
netstat -s -e
或者你可以使用WMI
如:
wmic path Win32_PerfFormattedData_Tcpip_NetworkInterface
wmic path Win32_PerfFormattedData_Tcpip_TCPv4
wmic path Win32_PerfFormattedData_Tcpip_IPv4
上面的代码需要和GET参数一起使用,以便将所需的对象归零,但是可以按原样运行它们以查看选项是什么。
netsh interfaces ipv4 show {tcp,ip,udp}stats通过netstat给你提供了一些额外的信息,但这可能还不够。
关于netsh ipv4的MS Technet文章
Windows不报告TcpExt属性。 原因是因为Windows默认不TOE。 您可以通过运行netstat -nt来validation这一点,卸载列可能是InHost 。 相比之下,Linux默认使用TOE(TCP卸载引擎),并且构build工具来查询TcpExt属性。
您想要的数据完全依赖于为操作系统构build的驱动程序来公开该数据。 还需要创build一个Windows提供程序,以便您可以查询数据(可能是驱动程序程序集)。 在窗口中打开设备pipe理器,并检查到networking适配器属性的高级选项卡。 你可以看到在Windows中收集什么types的数据,以及是否启用。
我意识到其他人已经build议,Windows不能默认,并推荐其他工具(如pcap)。 虽然我以为你想知道为什么 。