windows - 如何在 Windows 中监控端口的流量?

标签 windows performance monitoring traffic

我正在尝试找到一种解决方案来监控通过特定端口的流量(进出)。不需要捕获数据包或执行任何其他操作。它所做的是作为一个流量监听器,以确保每 10 分钟有消息发送到该端口或从该端口接收。它必须一直在后台运行(就像守护进程一样),并且不会对性能产生重大影响。根据我的研究,一种选择是使用现有工具来做到这一点。有很多工具可以监控或嗅探流量,例如 wireshark。好吧,似乎它们中的大多数都监视通过接口(interface)而不是端口的流量,或者它们不能作为守护进程运行。编写程序来执行此操作的另一种选择。 SharpPcap似乎是个不错的选择,但我仍然需要抓包分析,才能知道是否存在这样的流量。有人可以建议我应该做什么吗?

最佳答案

SharpPcap 以与 Wireshark 相同的方式处理数据包捕获,因此您可以像在 Wireshark 中一样设置过滤器以将捕获的数据包限制到特定端口。除此之外,与 wireshark 相比,SharpPcap 将是一个更轻量级的选择。

下载 SharpPcap source tree并查看 Example05.SetFilter。

要缩小结果范围以便您只捕获想要查看的数据包,您需要使用一些过滤器。

Pcap 在所有使用它的应用程序中使用通用语言,并指定要设置的过滤器。使用 winpcap (windows) 或 libpcap (*nix) 的捕获程序包括 sharppcap、wireshark、pcap.net、winpcap、libpcap、tcpdump 等...有关如何使用 pcap 过滤器的重要资源,请参阅 this link .

这是您需要的过滤器:

  • ether 主机 ehost
  • 港口港口

其中ehost是发送/接收数据包的计算机的MAC地址,port是你要监控的端口。所以完整的过滤器字符串将是。

SetFilter("ether host ff:ff:ff:ff:ff:ff and port 60");

此处的 MAC 和端口仅用于说明目的,您显然可以使用与您的特定设置相关的值来更改它们。

这在 SetFilter 示例中使用,每次捕获数据包并满足过滤器条件时,将简单地打印出一行信息,其中包含捕获数据包的时间到命令行。

如果您需要有关数据包的更多详细信息,例如来自 header 的信息或数据包的有效负载,您需要解析传入的原始数据包。如果您需要有关如何执行此操作的一些提示,请务必在 sourceforge 项目的论坛上寻求帮助。项目开发人员非常积极,乐于助人。

关于windows - 如何在 Windows 中监控端口的流量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3647959/

相关文章:

java - 在 Java 中测量单线程复杂算法的最佳宏基准测试工具/框架是什么?

c++ - 如何检查模板的哪些部分被实例化?

windows - winforms、web窗体和windows窗体的区别

c# - 在给定 HWND 的情况下如何获取窗口的子窗口?

c++ - 如何快速评估零集?

java - 如果在没有任何选项的情况下运行 JVM,对内存使用有何影响?

javascript - 为什么 asm.js 会降低性能?

c++ - 无法从 WindowsXP 上的子文件夹加载库

Java 监视器代替二进制信号量

alert - 在 nifi 处理器中是否可以进行警报?