linux抓包PF_PACKET保存,linux – libpcap还是PF_PACKET?

我理解这个问题已经讨论了很多次:我应该使用libpcap还是PF_PACKET(数据链接套接字)来捕获数据包?

根据我的研究,libpcap几乎在所有地方建议使用PF_PACKET,主要是因为它的可移植性.

但是,对于我目前的项目(在生产系统中使用),可移植性根本不是一个问题,我关心的只是性能(速度,丢包率).我的程序在CentOS 5.10(内核2.6.18)上运行

据我所知,libpcap为每个数据包设置了一个时间戳.这会导致大的性能损失吗?

还有其他因素导致libpcap在高速网络中不适用吗?

解决方法:

As far as I know, libpcap put a timestamp on each packet.

不,libpcap从它使用的OS数据包捕获机制获取数据包的时间戳 – 在Linux上是……

… PF_PACKET套接字.

Linux内核时间标记传入的数据包. PF_PACKET套接字有多种读取方式:

>常规套接字接收,你可以获得带有显式ioctl的时间戳(这样你就可以避免将它提取到用户区,但是你无法避免内核时间标记数据包; libpcap,当使用常规时socket接收,总是要求时间戳);

>内存映射访问,始终提供时间戳.

只要可用,Libpcap就会使用内存映射访问;如果你关心捕获性能,你可能也想这样做.但是,它并不容易使用.

标签:linux,network-programming,libpcap

来源: https://codeday.me/bug/20190703/1362870.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值