0

我编写了一个应用程序,它使用 libpcap 来捕获数据包。但是应用程序只能捕获几个数据包,流量大约是几个 kbps。但是如果打开 tcpdump,捕获的流量将超过 10Mbps。当 tcpdump 关闭时,捕获的流量再次下降到几 kbps。

有谁知道为什么?非常感谢。

4

1 回答 1

0

如果您正在调用pcap_open_live(),您可能会将 0 作为 ''promisc'' 参数传递。如果您正在调用pcap_create()and pcap_activate(),那么您可能没有pcap_set_promisc()在这些调用之间进行调用(或者正在传递pcap_set_promisc()0 的 ''promisc'' 参数)。

即,您可能没有打开混杂模式,因此您的机器只捕获进出您的机器的流量,而不是网络上的其他流量。默认情况下,Tcpdump 打开混杂模式,因此,当它运行时,您正在捕获的适配器(可能与 tcpdump 正在捕获的适配器相同)处于混杂模式,您会看到您网络上的其他流量。

于 2013-07-17T19:26:45.223 回答