【问题标题】:Does libpcap get a copy of the packet?libpcap 是否获得数据包的副本?
【发布时间】:2010-05-12 00:16:07
【问题描述】:

libpcap 是获取数据包的副本还是实际数据包?

我的意思是:使用libpcap的应用程序得到包A,内核也得到包A。

实际上,我的意思是:只有使用 libpcap 的应用程序获取数据包 A,但内核没有获取它。

【问题讨论】:

  • 我之所以问,是因为我正在编写一个应用程序来阻止任何 TCP 数据包被发送到本地主机 Web 服务器。

标签: packet-capture packet-sniffers libpcap


【解决方案1】:

libpcap 不允许你做你想做的事。 pcap 的目标是透明地接收系统中每个数据包的副本。

您应该研究如何与系统中现有的防火墙进行互操作,或者如何将自己的过滤器添加到 netfilter 系统(在 Linux 上)

【讨论】:

    【解决方案2】:

    内核将获取数据包,然后将其通过一系列过滤器(例如,通常有一个用于 IPsec 的过滤器、防火墙等),一旦通过所有这些过滤器,它就会将数据包传递给应用程序。 libpcap 是另一个过滤器,但它只是将数据包添加到内部数据库进行处理,而不是检查数据包、修改或其他过滤器将执行的任何其他操作。

    对于您想要做的事情,最简单的解决方案是使用防火墙。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-07-25
      • 1970-01-01
      • 1970-01-01
      • 2014-03-12
      • 2015-10-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多