- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
常见的包捕获机制研宄
摘要:包过滤机制是对所捕获到的数据包根据用户的要 求进行筛选,最终只把满足过滤条件的数据包传递给用户程 序。重点对两种常见的包捕获机制进行了分析。
关键词:包捕获;BPF;NPF
包捕获机制是依赖于操作系统的,从广义的角度上看, 一个包捕获机制包含三个主要部分:最底层是针对特定操作 系统的包捕获机制,最高层是针对用户程序的接口,第三部 分是包过滤机制。
不同的操作系统实现的底层包捕获机制可能是不一样 的,但从形式上看大同小异。数据包常规的传输路径依次为 网卡、设备驱动层、数据链路层、网络层、传输层、最后 到达应用程序。而包捕获机制是在数据链路层增加一个旁 路处理,对发送和接收到的数据包做过滤、缓冲等相关处理 最后直接传递到应用程序。
1常见的包捕获机制
不同的操作系统上有不同的包捕获机制:Su nOS系统中 有 NIT 接口;在 DEC 的 Uh rix 环境下有 Uhr ixPacketFi
Iter;在SCII的IRIX中有SNO OP;Linux系统为用户提供了 一种工作在数据链路层的套接字SOCKPACKET :BSDUNIX系统 下的 BPF (BSDP acketFilte r);在 Window s 平台上,近几年 也陆续有多种捕获应用工具面世,如Netmno nAPI, PCAUS A 等,与BPF不同的是,这些产品是商业性质的。Winpcap则是 Window平台上为数不多的功能强大且可免费获得的包捕获 接口软件之一,来源于BSD的网络数据包过滤器NPF是Winp cap的核心部分。B PF和NPF是效率较高、应用广泛的包捕 获机制,在下一节的包捕获过滤模型中将对其进行详细介绍: 常用的包捕获机制如下表所示:
2包捕获过滤模型
通常,网络信息中会存在若干用户不关心的数据,或者 称为垃圾数据,若此所占比重较大,将严重影响捕包系统的 工作效率,造成系统丢包。为了解决此问题,人们引入了包 过滤机制,包过滤机制在包捕获机制中占有重要的地位。实 际上在理论研宄和实际应用中,包捕获和包过滤从语意上并 没有严格的区分,关键在于认识到捕获数据包必然有过滤操 作。
UN IX和Windows系统下的包捕获过滤机制分别是BPF 和NP F,由于这样基于软件的数据包捕获机制便于发布且灵
活性强,升级方便,因此,许多提供网络监视和分析的专业软 件都是使用这种方式来实现的。我们之所以研究BPF和NPF 的捕获过滤模型,就是为了通过深入地理解和运用模型的工 作机制进行数据包的采集和过滤,从而开发出高效可靠的网 络协议分析系统。下面将详细介绍这两种机制的参考模型。
B PF 参考模型 BPF(BerKeleyPa cketFilter )是基于 BSD系统的包过滤模型,它使用了新的基于寄存器的过滤算 法,效率比旧的算法提高了 20倍,它的缓存机制对整体效率 的提高有很大作用。BPF有两个主要部件,网络包监视 (Networ kTap)和网络包过滤(PacketFi Iter)。Netw orkTap 从网络设备驱动程序中搜集数据拷贝并转发给过滤器。过 滤器决定是否接收该数据包,以及接收该复制数据包的哪些 部分(Slice技术)。B PF过滤器的过滤功能是通过虚拟机 (Pse udoMachine )执行过滤程序来实现的。过滤程序(Fil terProgram )实际上是一组过滤规则。过滤规则由用户定义 以决定是否接收数据包和需要接收多少数据。过滤过程可 描述如下:当数据包到达网络接口时,链路层驱动程序将其 提交到系统协议栈;如果BPF正在此接口监听,驱动程序将 首先调用BPF, BP F将数据包发送给过滤器,过滤器对数据包 进行过滤,并将数据提交给过滤器关联的上层应用程序;然 后链路层驱动将重新取得控制权,将数据包提交给上层的系 统协议栈处理。
系统主要由三部分组成:NetworkTa p,BPF和Libp cap Networ kTap监视共享网络中的所有包,BPF用过滤条件匹配 所有由N etworkTap监视到的包,若匹配成功则将之从网卡 驱动的缓冲区中复制到核心缓冲区。Libpcap是一个系统无 关、采用分组捕获机制的分组捕获函数库,用于访问数据链 路层。这个库为不同的平台提供了一致的编程接口,在安装 了 Li bpcap的平台上,以Libpcap为接口写的程序、应用, 能够自由的跨平台使用。大多数监听程序都使用它和内核 部分进行通信。
NPF参考模型
Winpcap是针对Win32平台上的抓包和网络分析的一个 架构,NPF则是Win pcap的重要组成部分之一。NPF的主要 思想就是来源于Uni x中的BPF,它的设计目标是要为Win3 2平台提供一个功能强大的开放式数据包捕获架构,使用户 能够在W in
文档评论(0)