0

用 2 个不同的过滤器监听设备并捕获数据包是否可行?例如,我开始使用过滤器侦听设备并将数据包转储到 pcap 文件,15 分钟后我可以在同一设备上使用不同的过滤器开始另一个侦听并将数据包转储到另一个 pcap 文件而不停止旧的文件吗?

pcap_open 或 pcap_next_ex 会阻止传入的数据包吗?我的意思是,如果一个数据包在从两个不同的线程侦听时到达,其中一个将获取数据包并控制它以进行过滤,另一个线程可以访问数据包吗?

我希望我很抱歉英语不好。

4

2 回答 2

2

我可以在具有不同过滤器的同一设备上开始另一个监听并将数据包转储到另一个 pcap > 文件而不停止旧的吗?

是的。尽管如此,您最好在不同的线程/进程中启动该侦听器来处理它。

pcap_open 或 pcap_next_ex 会阻止传入的数据包吗?

它不是。如果一部分(您或操作系统)无法跟上传入的数据包,它会将数据包丢弃到您的 pcap 侦听器。

pcap 也会复制数据包(至少说 *nix pcap,假设 winpcap 工作相同)所以如果你有几个 pcap 列表器,过滤相同的数据包,它们都会得到一个副本。

于 2011-07-30T01:29:09.887 回答
0

对于您获得的每个打开的设备句柄,您都有一个单独的过滤器和数据包缓冲区。说句柄“A”和句柄“B”现在可以说两个句柄都在同一个网络设备上。

现在假设网络设备收到 4 个数据包。

每个数据包到达硬件驱动程序,然后到 winpcap。此时,winpcap 一次应用每个句柄过滤器。如果匹配,数据包将被复制到处理数据包缓冲区。处理完所有句柄后,将数据包移交给操作系统。

pcap_open 或 pcap_next_ex 会阻止传入的数据包吗?不。

事实上,操作系统很可能会在您的应用程序处理它之前看到该数据包。我可能错了,但我认为 winpcap 没有任何标准方法来阻止数据包。

于 2011-07-30T01:21:32.553 回答