【问题标题】:How do I monitor a port for traffic in Windows?如何在 Windows 中监视端口的流量?
【发布时间】:2010-09-05 21:51:22
【问题描述】:

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

【问题讨论】:

    标签: windows performance monitoring traffic


    【解决方案1】:

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

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

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

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

    这里是您需要的过滤器:

    • 以太主机ehost
    • 端口端口

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

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

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

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

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

    【讨论】:

      【解决方案2】:

      限制您的工具对性能的影响的最佳方法是通过 ETW(Windows 事件跟踪)实时使用者(即激活 ETW 跟踪并立即读取它而不是将其保存到文件)。 This MSDN sample 是了解如何通过 C# 执行此操作的好方法,它为您提供了一些入门代码。

      【讨论】:

        猜你喜欢
        • 2011-02-27
        • 1970-01-01
        • 2016-10-26
        • 1970-01-01
        • 2010-12-13
        • 1970-01-01
        • 1970-01-01
        • 2010-10-30
        • 2012-04-05
        相关资源
        最近更新 更多