【问题标题】:Measuring upload/download rates with libpcap使用 libpcap 测量上传/下载速率
【发布时间】:2011-01-15 00:35:51
【问题描述】:

我在 C 应用程序中使用 libpcap(和 Windows 上的 winpcap)来监控网络流量。我需要区分每个网络适配器上的上传和下载流量,以生成连接速度统计信息,但库使用的过滤器表达式似乎不太容易支持这一点(即没有“传入”/“传出”运算符)。

我考虑过的一种方法是查询每个适配器的 IP 地址,然后使用过滤器,例如 src host 1.2.3.4(用于测量上传)和 dst host 1.2.3.4(用于测量下载)。

我的问题是:

是否有比上述更好/更简单的方法(让我对每个适配器使用相同的过滤器表达式的方法会很好)?

如果上述方法是可行的方法,那么单个适配器是否有可能拥有超过 1 个与之关联的 IP 地址?我问的原因是 pcap_addr 结构包含单个适配器的地址详细信息(在 struct pcap_if 中)有一个“下一个”成员表明这是可能的。

【问题讨论】:

    标签: c network-programming pcap libpcap


    【解决方案1】:

    首先,请记住,pcap 只看到数据包。它看不到“传出”或“传入” - 只是数据包。所以是的,您必须在 ip 标头中使用 src/dst 进行过滤。没有其他方法可以判断数据包是传入还是传出。

    其次,是的,没有什么可以阻止具有多个 IP 地址的适配器。因此,您需要获取从该适配器配置的 IP 地址。 pcap_findalldevs()(WinPCap 文档)在这里应该可以帮助您,您应该能够从中推断出您要监控哪些设备。

    【讨论】:

      【解决方案2】:

      您是否考虑过查看pmacct - 我个人过去曾为此做出过贡献。这是一个 C 工具,它使用 libpcap 被动监控网络流量以进行记帐。

      【讨论】:

        【解决方案3】:

        试试tcpdump

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-07-28
          • 2019-04-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-12-16
          • 2011-06-01
          • 2012-08-28
          相关资源
          最近更新 更多