【问题标题】:Way to get packet count on a network with C使用 C 在网络上获取数据包计数的方法
【发布时间】:2012-12-05 19:57:35
【问题描述】:

是否可以编写一种方法来为整个网络制作数据包计数器,类似于 Wireshark 在选择接口时的数据包计数。主要的是我想要整个 LAN 的数据包计数,而不仅仅是实际的机器。我听说 libpcap 是最好的起点,虽然我想在这里问一下它是否正确。

【问题讨论】:

  • 您想对整个 LAN 上任意两台机器之间交换的数据包总数进行单一测量吗?如果是这样,您将需要管理 LAN 中的每个交换机,并且您需要汇总从连接交换机到终端设备的所有端口的统计信息。
  • 我还需要使用该设备与网络上的另一台计算机进行通信
  • @Andrei0427 您要么必须将来自所有以太网交换机的所有流量镜像到您的机器上,然后在其中捕获并计算它们,否则您将不得不退出并总结所有交换机的 SNMP 计数器(假设它们具有 SNMP 支持和适当的计数器。)除非您使用以太网集线器而不是以太网交换机,否则仅在混杂模式下使用 libpcap 进行捕获不会为您提供 LAN 上的所有数据包。跨度>
  • @nos 如果您提到由于 VLAN 引起的情况,我将涵盖这一点,因为我只是每秒读取平均数据包,而且我为我的家庭网络而不是企业做这个实验。希望我理解正确
  • @Andrei0427 不,这与 VLAN 无关。如果您有 3 台机器 A、B 和捕获 PC C 连接到交换机,则您的机器 C 可以捕获 A 和 C、B 和 C 之间的流量。如果 A 和 B 之间有流量,您将看不到任何这些数据包.在这种简单的情况下,您可以使用具有端口镜像功能的小型交换机,并将所有以太网端口上的所有流量镜像到单个以太网端口并在该端口上捕获数据。

标签: c networking wireshark libpcap sniffing


【解决方案1】:

我在这篇文档中找到了答案:http://eecs.wsu.edu/~sshaikot/docs/lbpcap/libpcap-tutorial.pdf

只需将参数设置为 0 以外的任何值,以在混杂模式下启动接口。

【讨论】:

  • 但也请注意 nos 的评论 - 如果您在交换网络上捕获,混杂模式保证您看到网络上的所有数据包。
猜你喜欢
  • 1970-01-01
  • 2021-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-29
  • 1970-01-01
  • 2019-03-07
  • 1970-01-01
相关资源
最近更新 更多