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