教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 初中教育 >

基于Libpcap的网络编程技术

来源:网络收集 时间:2026-09-07
导读: 网络编程 第五章 基于Libpcap的网络 基于Libpcap的网络 编程技术 网络编程 内容一.包捕获和过滤机制 二.Libpcap与BPF 与 三.Libpcap的应用 的应用 2常州大学信息学院 网络编程 一、包捕获和过滤机制包捕获机制包捕获就是利用以太网的介质共享的特 性,通过将

网络编程

第五章 基于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字,全部文档内容请下载后查看。喜欢就下载吧 ……
基于Libpcap的网络编程技术.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/1564390.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)