基于Libpcap的网络编程技术
网络编程
第五章 基于Libpcap的网络 基于Libpcap的网络 编程技术
网络编程
内容一.包捕获和过滤机制 二.Libpcap与BPF 与 三.Libpcap的应用 的应用
2常州大学信息学院
网络编程
一、包捕获和过滤机制包捕获机制包捕获就是利用以太网的介质共享的特 性,通过将网络适配器设置为混杂模式的方 法,接收到所有网络上的以太网帧。 包捕获机制可分为两类。 操作系统内核提供的捕获机制 应用软件或系统开发包捕获驱动程序 提供的捕获机制
3常州大学信息学院
网络编程
常见的包捕获机制 BPF DLPI NIT SOCK-PACKET类型套接口
4常州大学信息学院
网络编程
包过滤机制大量网络监控程序目的不同,期望的数 据包类型也不同,但大多数情况只需要其中 一小部分。此时用户程序需要设置一系列过 滤条件,以便获得满足条件的数据包。 包过滤操作可在用户空间执行,也可在 内核空间执行,但由于数据包从内核空间拷 贝到用户空间的开销很大,所以一般在内核 空间进行过滤。 包过滤机制在包捕获机制中占中心地位, 有捕获数据包必然有过滤操作。
5常州大学信息学院
网络编程
包过滤机制实际上是针对数据包的布 尔值操作函数,如果函数最终返回 true, 则通过过滤,反之则被丢弃。形式上包过 滤由一个或多个谓词判断的并操作(AND) 和或操作(OR)构成,每一个谓词判断基 本上对应了数据包的协议类型或某个特定 值,例如,只需要 TCP 类型且目的端口为 110 的数据包。
6常州大学信息学院
网络编程
一个完整的包捕获和过滤机制包 含三个主要部分: 最底层是特定操作系统的包捕 获机制 中间是包过滤机制 最高层是针对用户程序的接口
7常州大学信息学院
网络编程
二、Libpcap与BPF 与Libpcap概述 概述Libpcap (Packet Capture library)即数 据包捕获函数库,可以工作在绝大多数类 unix平台下。该库提供的C函数接口可用于捕 获经过网络接口的数据包。 广泛应用于:网络参数统计、协议分析、 防火墙、入侵检测系统、网络调试等方面。
8常州大学信息学院
网络编程
Libpcap 软件包可从 http://www.77cn.com.cn/下载, Libpcap 包含 20 多个 C 文件,但在 Linux 系统下不是所有文件都用到。 Libpcap库是基于BPF(Berkeley Packet Filter) 的。在BPF的基础上, Libpcap提供接口函数供其他程序调用, 可以捕获、分析和过滤数据包,以获得 感兴趣的数据包。
9常州大学信息学院
网络编程
BPF结构及工作原理 结构及工作原理BPF是一种内核包捕获的体系结构, 于 1992 年被设计出来,其设计目的主要 是解决当时已存在的过滤机制效率低下的 问题。它使得UNIX下的应用程序
通过一 个高度优化的方法读取流经网络适配器的 数据包。 BPF 主 要 由 两 部 分 组 成 : Network tap和Packet Filter。
10常州大学信息学院
网络编程
Network tap是一个回调函数 (callback function),它实时监视 共享网络中的所有数据包,从网络设 备驱动程序中搜集数据拷贝并转发给 包过滤器。 Packet Filter Filter决定是否接收该数 据包,以及接收该数据包的哪些部分。
11常州大学信息学院
网络编程
BPF的工作过程当有数据包到达网络接口卡时,如果 BPF在监听,那么网卡驱动程序将首先调用 BPF的Network Tap,Network Tap将数据 包送到过滤器中,决定是否接收此数据包和 接收多少位数据,然后将决定接收的数据拷 贝到BPF的相关缓冲区中,最终应用程序调 用相应的libpcap函数拷走所需数据。
12常州大学信息学院
网络编程
BPF的结构应用程序1 Libpcap 应用程序2 libpcap 应用程序N libpcap 网络监视器
用户空间 缓存过滤器
缓存过滤器
缓存过滤器
TCP/IP等 网络协议栈
内核
BPF
tap链路层 驱动程序 链路层 驱动程序
链路层 驱动程序
内核 网络
13常州大学信息学院
网络编程
三、Libpcap的应用 的应用Libpcap库函数 库函数libpcap所提供的主要函数如下: pcap_t *pcap_open_live():用于获取一 个包捕获描述符 int pcap_lookupnet() pcap_lookupnet():用于返回与网络 设备相关的网络号和掩码 char *pcap_lookupdev():返回一个适于 pcap_open_live()和pcap_lookupnet()函 数使用的指向网络设备的指针14常州大学信息学院
Libpcap函数库的应用 函数库的应用N命令行中指定了要监视的网络设备? 命令行中指定了要监视的网络设备
Y
查找可用的网络设备
打开网络设备或文件作为包捕获描述符 获取与网络设备相关的网络号和掩码 编译过滤规则为内核过滤程序 设置过滤程序 包捕获并处理 关闭并返回
网络编程
1、检查网络设备Libpcap 程序的第一步通常是在系统中找 到合适的网络接口设备。在Linux 中最常见的 接口设备名 eth0 和 lo。 Libpcap 调用 pcap_lookupdev() 函数获 得可用网络接口的设备名。 char *pcap_lookupdev(char *errbuf), 该函数用于返回可被pcap_open_live()或 pcap_lookupnet()函数调用的网络设备名(一 个字符串指针)。如果函数出错,则返回 NULL,同时errbuf中存放相关的错误消息。
16常州大学信息学院
…… 此处隐藏:843字,全部文档内容请下载后查看。喜欢就下载吧 ……相关推荐:
- [初中教育]婚姻家庭法学教学教案
- [初中教育]浅谈小学语文教学中的创新教育
- [初中教育]中华人民共和国侵权责任法2009
- [初中教育]2016-2022年中国薄膜太阳能电池行业发
- [初中教育]多级轻型井点降水的应用
- [初中教育]外语教学法流派介绍和简评
- [初中教育]实验一、典型环节及其阶跃响应
- [初中教育]内蒙古2012-2013学年度国家奖学金获奖
- [初中教育]移动通信营销渠道管理探讨
- [初中教育]初三化学第一学期第一第二章基础知识点
- [初中教育]一天的食物教学设计
- [初中教育]光导照明系统的基本结构及工作原理
- [初中教育]长春市十一高、东北师范大学附属中学、
- [初中教育]“十三五”规划重点-配重式装卸车项目
- [初中教育]领导方法和领导艺术
- [初中教育]第三章 植物病虫草鼠害诊断与防治基
- [初中教育]2019届九年级语文上册 第二单元 6纪念
- [初中教育]甲级单位编制水豆腐项目可行性报告(立
- [初中教育]Ch8-1补充 09101数据库系统原理及应用-
- [初中教育]2017-2023年中国吊装设备行业市场分析
- 制作毕业纪念册需要哪些材料
- 2015-2016学年高二化学苏教版选修4课件
- 哈佛管理导师-创建商业案例
- 职场交际中的谈吐礼仪知识与职场会议接
- 中国糕点及面包行业发展现状与竞争战略
- 沂河“12·7”洪水茶山拦河坝
- 管道水流量计算公式
- 4-2发电机火灾事故处置方案
- 数字信号处理实验五
- 2009年经济师(中级)金融专业知识全真试
- 历史街区保护规划--04历史文化遗产保护
- 宁夏回族自治区中小学职称评价标准
- 评先评优测评表
- 圆的切线证明及线段长求解在在中考中的
- 【解析版】2015年江苏省南京外国语学校
- 人教版八年级上册科学第一章习题精华
- 责任心与执行力
- SA8000社会责任管理体系标准培训
- IgA肾病的饮食应注意
- 杭州市建设工程文件归档整理方案(试行)




