Libpcap一 libpcap简介与编译
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简介与编译相关推荐
- 简介DOTNET 编译原理 简介DOTNET 编译原理 简介DOTNET 编译原理
简介DOTNET 编译原理 相信大家都使用过 Dotnet ,可能还有不少高手.不过我还要讲讲Dotnet的基础知识,Dotnet的编译原理. Dotnet是一种建立在虚拟机上执行的语言,它直接生成 ...
- Libpcap二 libpcap抓包基本流程
1.设置设备 这是很简单的.有两种方法设置想要嗅探的设备. 第一种,我们可以简单的让用户告诉我们.考察下面的程序: #include #include int main(int argc, char ...
- 【原创】大数据基础之Ambari(1)简介、编译安装、使用
官方:http://ambari.apache.org/ The Apache Ambari project is aimed at making Hadoop management simpler ...
- x265工程简介、编译、调试测试
目录 1. x265工程项目 2. 编译 2.1 Linux/MaxOS 2.2 Android 3. 测试 3.1 序列准备 3.2 编码命令 1. x265工程项目 https://x265. ...
- 认识WRK(简介和编译)
WRK 是微软于 2006 年针对教育和学术界开放的 Windows 内核的部分源码,WRK(Windows Research Kernel)也就是
- Libpcap和Qt的安装及数据包抓包、过滤、保存
本次实验是基于ubuntu虚拟机. 实验目的 (1)准备实验环境: (2)libpcap相关函数: (3)掌握数据包的抓包过程 (二)实验内容 安装libpcap: 在虚拟机中安装QT软件: 使用li ...
- aarch64-linux-gnu 交叉编译 libpcap
文章目录 aarch64-linux-gnu 交叉编译 libpcap 1. 交叉编译工具下载 2.交叉编译工具安装 3.配置交叉编译工具环境变量 4.libpcap源码下载和编译 5.libpcap ...
- 使用WinPcap和libpcap类库读写pcap文件(002)PCAP文件格式
本文基本翻译自https://wiki.wireshark.org/Development/LibpcapFileFormat,主要分析pcap文件的格式. 其中一些字段可能和现在的WinPcap类库 ...
- libpcap解析pcapng文件
libpcap介绍 libpcap(Packet Capture Library)即数据包捕获函数库,是Unix/Linux平台下的网络数据包捕获函数库.它是独立于系统的用户层包捕获的API接口,为底 ...
最新文章
- datagridview java_仅更新datagridview中的一个单元格
- Linux_Bash常用脚本
- 淘淘商城学习笔记 之 上传图片到远程服务器,图片的回显出现的bug
- ffmpeg封装h264裸流为mp4文件,视频播放速度特别慢
- 类中的构造方法实例化的时候自动执行
- 系统架构师学习笔记-数据通信与计算机网络(一)
- 苹果AirPods 2又有新消息了!具备防滑涂层和新配色
- MySql中PreparedStatement对象与Statement对象
- Redis 菜鸟教程学习笔记- 概念
- 小米笔记本重装系统BOOT启动菜单识别不了硬盘无法启动进入系统
- 大型互联网产品的全链路压测
- 5类6类7类网线对比_超详细的超五类、六类、七类网线的对比
- Mac 没有声音怎么恢复
- STM32自学笔记-12-和迪文屏的联用
- 计算机中重命名的英文单词,重命名是什么意思
- 《精益数据分析》:网易创始人丁磊力荐
- 计算机无法从硬盘启动怎么办,电脑开机无法引导硬盘启动怎么解决
- 微信小程序自定义生成动态分享内容
- win10自带的删除电脑流氓弹窗软件工具怎么用
- T4M插件放入unity后怎么找不到_Unity动画系统详解4:如何用代码控制动画?