libpcap 是否获得数据包的副本?
libpcap 获取数据包的副本还是实际的数据包?
通过复制,我的意思是:使用 libpcap 的应用程序获取数据包 A,内核也获取数据包 A。
实际上,我的意思是:使用 libpcap 的应用程序获取数据包 A,但内核没有获取数据包 A。得到它。
Does libpcap get a copy of the packet or the actual packet?
By copy, I mean: the application using libpcap gets packet A, and the kernel also gets packet A.
By actual, I mean: only the application using libpcap gets packet A, but the kernel didn't get it.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
libpcap
不会允许你做你想做的事。 pcap 的目标是透明地接收系统中每个数据包的副本。您应该研究如何与系统中现有的防火墙进行互操作,或者如何将您自己的过滤器添加到 netfilter 系统(在 Linux 上)
libpcap
will not allow you to do what you want. The goal of pcap is to transparently receive a copy of every packet in the system.You should investigate how to inter-operate with the existing firewall in your system, or how to add your own filters to the netfilter system (on Linux)
内核将获取数据包,然后将其通过一系列过滤器(例如,通常有一个 IPsec 过滤器、防火墙等),一旦通过所有这些过滤器,它就会将数据包传递给应用程序。 libpcap 是另一个过滤器,但它只是将数据包添加到内部数据库进行处理,而不是检查数据包、修改或其他过滤器将执行的其他操作。
对于您想要做的事情,最简单的解决方案是使用防火墙。
The kernel will get the packet then pass it through a list of filters (for example, there's usually a filter for IPsec, a firewall and so on) and once it's gone through all of these filters, it passes the packet on to the application. libpcap is another filter, but it simply adds the packet to an internal database for processing, rather than inspecting the packet, modifying or whatever else the other filters will do.
For what you want to do, the simplest solution would be to use a firewall.