知道我的数据包来自哪个pcap筛选器
我正在尝试使用libpcap嗅探一些“网络接口”(包括环回) 在我的示例应用程序中,在端口1234、1235和1236中有来自环回的数据包。我已经找到了使用libpcap_setfilter()使libpcap只过滤来自这些地址的数据包的方法:我的目标是将这些数据包相应地转发到它们来自的地址/端口(例如,来自127.0.0.1/1234的数据包可以通过eth0接口;来自127.0.0.1/1235的数据包可以通过eth1转发;来自127.0.0.1/1236的数据包可以通过eth2转发) 我的问题是:有没有办法不必查看数据包的内容就可以准确地知道这些数据包来自哪个端口?例如,我可以设置许多过滤器,并不知何故知道过滤我的数据包的是哪个过滤器 我已经阅读了很多文档和教程,但到目前为止似乎没有一本有用。如果答案是“这是不可能的”,我也可以知道我的数据包来自哪个pcap筛选器,c,pcap,libpcap,C,Pcap,Libpcap,我正在尝试使用libpcap嗅探一些“网络接口”(包括环回) 在我的示例应用程序中,在端口1234、1235和1236中有来自环回的数据包。我已经找到了使用libpcap_setfilter()使libpcap只过滤来自这些地址的数据包的方法:我的目标是将这些数据包相应地转发到它们来自的地址/端口(例如,来自127.0.0.1/1234的数据包可以通过eth0接口;来自127.0.0.1/1235的数据包可以通过eth1转发;来自127.0.0.1/1236的数据包可以通过eth2转发) 我的问
提前感谢。libpcap运行的捕获机制只支持一个过滤器,因此libpcap没有设置多个过滤器的API
但是,您可以为同一网络接口打开多个
pcap\t
,并对其应用不同的过滤器。但是,从多个pcap\t
读取可能依赖于平台。我从“eth0”、“eth1”和“eth2”推断这是Linux,因此您应该能够使用select()
或poll()
或…在pcap\u get\u selectable\u fd()
的pcap\u t
的返回值上,如果select()
或poll()
或…表示给定描述符可读,则调用pcap\u dispatch()
在相应的pcap\u t
上处理该pcap\u t
的数据包libpcap运行的捕获机制只支持一个过滤器,因此libpcap没有设置多个过滤器的API
但是,您可以为同一网络接口打开多个pcap\t
,并对其应用不同的过滤器。但是,从多个pcap\t
读取可能依赖于平台。我从“eth0”、“eth1”和“eth2”推断这是Linux,因此您应该能够使用select()
或poll()
或…在pcap\u get\u selectable\u fd()
上的pcap\u t
的返回值上,如果select()
或poll()
或…表示给定描述符可读,则在相应的pcap\u t
上调用pcap\u dispatch()
来处理该pcap\t的数据包