1、简介

libpcap是unix/linux平台下的网络数据包捕获函数包,大多数网络监控软件都以它为基础。Libpcap可以在绝大多数类unix平台下工作.

2、功能

(1)数据包捕获
      捕获流经本网卡的所有原始数据包,甚至对交换设备中的数据包也能够进行捕获,本功能是嗅探器的基础。
(2)自定义数据包发送
      构造任意格式的原始数据包,并发送到目标网络,本功能是新协议验证、甚至攻击验证的基础。
(3)流量采集与统计
      对所采集到的网络中的流量信息进行按照新规则分类,按指标进行统计,并输出到指定终端。利用这项功能可以分析目标网络的流量特性。
(4)规则过滤
      Libpcap自带规则过滤功能,并提供脚本编程接口,能够按照用户编程的方式对已经采集到的数据包进行过滤,以便提高分析的性能。

3、工作原理

一个包捕获机制包含三个主要部分,分别是面向底层的包捕获引擎,面向中间层的数据包过滤器,面向应用层的用户接口。      
      Linux操作系统对于数据包的处理流程是从底到上的方式,依次经历网络接口卡、网卡驱动层、数据链路层、IP层、传输层,最后到达应用程序。
      Libpcap也是基于这种原理,Libpcap的捕获机制并不影响Linux操作系统中网络协议栈对数据包的处理。
      对应用程序而言,Libpcap包捕获机制只是提供了一个统一的API接口,用户只需要按照相关的编程流程,简单地调用若干函数就可以捕获到感兴趣的数据包。

具体来说,Libpcap库主要由三个部分组成,网络分接头、数据包过滤器和用户API。
(1)网络分接头
      网络分接头(Network Tap)是一种链路层旁路机制,负责采集网卡数据包。
(2)数据包过滤器
      数据包过滤器(Packet Filter)是针对数据包的一种过滤机制,在Libpcap中采用BPF(BSD Packet Filter)算法对数据包执行过滤操作,这种算法的基本思想就是基于规则匹配,对伊符合条件的额数据包进行放行。
(3)用户API
      用户API是Libpcap面向上层应用程序提供的编程接口,用户通过调用相关的函数实现数据包的捕获或者发送。
      具体来说,Libpcap的工作原理可以描述为,当一个数据包到达网卡时,Libpcap利用创建的套接字从链路层驱动程序中获得该数据包的拷贝,即旁路机制,同时通过Tap函数将数据包发给BPF过滤器。
      BPF过滤器根据用户已经定义好的过滤过则对数据包进行逐一匹配,若匹配成功则放入内核缓冲区,并传递给用户缓冲区,匹配失败则直接丢弃。如果没有设置过滤规则,所有的数据包都将放入内核缓冲区,并传递给用户缓冲区。
      其具体的工作流程如下图所示:

4、libpcap编译

4.1、下载官网链接:https://www.tcpdump.org/release/

后续所有调试与相关代码环境如下:

ubuntu16.04  libpcap-1.9.1

4.2 编译安装

make clean

./configure --host=arm-linux --with-pcap=linux --prefix=/home/ybq/libpcap-1.9.1/Demo/ CC=gcc
make 
make install

configure 修改自己的安装目录(prefix),和编译器即可(CC)。

Libpcap一 libpcap简介与编译相关推荐

  1. 简介DOTNET 编译原理 简介DOTNET 编译原理 简介DOTNET 编译原理

    简介DOTNET 编译原理 相信大家都使用过 Dotnet ,可能还有不少高手.不过我还要讲讲Dotnet的基础知识,Dotnet的编译原理. Dotnet是一种建立在虚拟机上执行的语言,它直接生成 ...

  2. Libpcap二 libpcap抓包基本流程

    1.设置设备 这是很简单的.有两种方法设置想要嗅探的设备. 第一种,我们可以简单的让用户告诉我们.考察下面的程序: #include #include int main(int argc, char ...

  3. 【原创】大数据基础之Ambari(1)简介、编译安装、使用

    官方:http://ambari.apache.org/ The Apache Ambari project is aimed at making Hadoop management simpler ...

  4. x265工程简介、编译、调试测试

    目录 1. x265工程项目 2. 编译 2.1 Linux/MaxOS 2.2 Android 3. 测试 3.1 序列准备 3.2 编码命令 1. x265工程项目   https://x265. ...

  5. 认识WRK(简介和编译)

    WRK 是微软于 2006 年针对教育和学术界开放的 Windows 内核的部分源码,WRK(Windows Research Kernel)也就是

  6. Libpcap和Qt的安装及数据包抓包、过滤、保存

    本次实验是基于ubuntu虚拟机. 实验目的 (1)准备实验环境: (2)libpcap相关函数: (3)掌握数据包的抓包过程 (二)实验内容 安装libpcap: 在虚拟机中安装QT软件: 使用li ...

  7. aarch64-linux-gnu 交叉编译 libpcap

    文章目录 aarch64-linux-gnu 交叉编译 libpcap 1. 交叉编译工具下载 2.交叉编译工具安装 3.配置交叉编译工具环境变量 4.libpcap源码下载和编译 5.libpcap ...

  8. 使用WinPcap和libpcap类库读写pcap文件(002)PCAP文件格式

    本文基本翻译自https://wiki.wireshark.org/Development/LibpcapFileFormat,主要分析pcap文件的格式. 其中一些字段可能和现在的WinPcap类库 ...

  9. libpcap解析pcapng文件

    libpcap介绍 libpcap(Packet Capture Library)即数据包捕获函数库,是Unix/Linux平台下的网络数据包捕获函数库.它是独立于系统的用户层包捕获的API接口,为底 ...

最新文章

  1. datagridview java_仅更新datagridview中的一个单元格
  2. Linux_Bash常用脚本
  3. 淘淘商城学习笔记 之 上传图片到远程服务器,图片的回显出现的bug
  4. ffmpeg封装h264裸流为mp4文件,视频播放速度特别慢
  5. 类中的构造方法实例化的时候自动执行
  6. 系统架构师学习笔记-数据通信与计算机网络(一)
  7. 苹果AirPods 2又有新消息了!具备防滑涂层和新配色
  8. MySql中PreparedStatement对象与Statement对象
  9. Redis 菜鸟教程学习笔记- 概念
  10. 小米笔记本重装系统BOOT启动菜单识别不了硬盘无法启动进入系统
  11. 大型互联网产品的全链路压测
  12. 5类6类7类网线对比_超详细的超五类、六类、七类网线的对比
  13. Mac 没有声音怎么恢复
  14. STM32自学笔记-12-和迪文屏的联用
  15. 计算机中重命名的英文单词,重命名是什么意思
  16. 《精益数据分析》:网易创始人丁磊力荐
  17. 计算机无法从硬盘启动怎么办,电脑开机无法引导硬盘启动怎么解决
  18. 微信小程序自定义生成动态分享内容
  19. win10自带的删除电脑流氓弹窗软件工具怎么用
  20. T4M插件放入unity后怎么找不到_Unity动画系统详解4:如何用代码控制动画?

热门文章

  1. mobi 第五项修炼_第五项修炼(套装共5册)epub+mobi+azw3_电子书_下载百度云PDF下载...
  2. 理解路由控制(路由策略、策略路由)
  3. 牧师与魔鬼 动作分离版
  4. 老猿学5G:融合计费基于流计费的触发器Triggers
  5. jacoco代码覆盖率
  6. java web系统设计思路_JavaWeb——实战入门,设计思路总结。
  7. 如何使用小程序云开发实现一个简单的留言板
  8. 每天一点数据库之-----Day 5 过滤查询
  9. 系统环境变量和用户环境变量的区别
  10. tpo30 reading3