我编写了一个应用程序,它使用 libpcap 来捕获数据包。但是应用程序只能捕获几个数据包,流量大约是几个 kbps。但是如果打开 tcpdump,捕获的流量将超过 10Mbps。当 tcpdump 关闭时,捕获的流量再次下降到几 kbps。
有谁知道为什么?非常感谢。
如果您正在调用pcap_open_live()
,您可能会将 0 作为 ''promisc'' 参数传递。如果您正在调用pcap_create()
and pcap_activate()
,那么您可能没有pcap_set_promisc()
在这些调用之间进行调用(或者正在传递pcap_set_promisc()
0 的 ''promisc'' 参数)。
即,您可能没有打开混杂模式,因此您的机器只捕获进出您的机器的流量,而不是网络上的其他流量。默认情况下,Tcpdump 打开混杂模式,因此,当它运行时,您正在捕获的适配器(可能与 tcpdump 正在捕获的适配器相同)处于混杂模式,您会看到您网络上的其他流量。