常见包捕获机制研究.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
常见包捕获机制研究

常见包捕获机制研究   摘 要:包过滤机制是对所捕获到的数据包根据用户的要求进行筛选,最终只把满足过滤条件的数据包传递给用户程序。重点对两种常见的包捕获机制进行了分析。   关键词:包捕获;BPF;NPF   中图分类号:TP393文献标识码:A文章编号:1672?3198(2010)01?0306?01      包捕获机制是依赖于操作系统的,从广义的角度上看,一个包捕获机制包含三个主要部分:最底层是针对特定操作系统的包捕获机制,最高层是针对用户程序的接口,第三部分是包过滤机制。   不同的操作系统实现的底层包捕获机制可能是不一样的,但从形式上看大同小异。数据包常规的传输路径依次为网卡、设备驱动层、数据链路层、网络层、传输层、最后到达应用程序。而包捕获机制是在数据链路层增加一个旁路处理,对发送和接收到的数据包做过滤、缓冲等相关处理,最后直接传递到应用程序。      1 常见的包捕获机制      不同的操作系统上有不同的包捕获机制:SunOS系统中有NIT接口;在DEC的Uhrix环境下有Uhrix Packet Filter;在SCII的IRIX中有SNOOP;Linux系统为用户提供了一种工作在数据链路层的套接字SOCK PACKET;BSD UNIX系统下的BPF(BSD Packet Filter);在Windows平台上,近几年也陆续有多种捕获应用工具面世,如Netmnon API,PCAUSA等,与BPF不同的是,这些产品是商业性质的。Winpcap则是Window平台上为数不多的功能强大且可免费获得的包捕获接口软件之一,来源于BSD的网络数据包过滤器NPF是Winpcap的核心部分。BPF和NPF是效率较高、应用广泛的包捕获机制,在下一节的包捕获过滤模型中将对其进行详细介绍,常用的包捕获机制如下表所示:      2 包捕获过滤模型      通常,网络信息中会存在若干用户不关心的数据,或者称为垃圾数据,若此所占比重较大,将严重影响捕包系统的工作效率,造成系统丢包。为了解决此问题,人们引入了包过滤机制,包过滤机制在包捕获机制中占有重要的地位。实际上在理论研究和实际应用中,包捕获和包过滤从语意上并没有严格的区分,关键在于认识到捕获数据包必然有过滤操作。      UNIX和Windows系统下的包捕获过滤机制分别是BPF和NPF,由于这样基于软件的数据包捕获机制便于发布且灵活性强,升级方便,因此,许多提供网络监视和分析的专业软件都是使用这种方式来实现的。我们之所以研究BPF和NPF的捕获过滤模型,就是为了通过深入地理解和运用模型的工作机制进行数据包的采集和过滤,从而开发出高效可靠的网络协议分析系统。下面将详细介绍这两种机制的参考模型。   2.1 BPF参考模型BPF ( BerKeley Packet Filter)是基于BSD系统的包过滤模型,它使用了新的基于寄存器的过滤算法,效率比旧的算法提高了20倍,它的缓存机制对整体效率的提高有很大作用。   BPF有两个主要部件,网络包监视(Network Tap)和网络包过滤(Packet Filter)。Network Tap从网络设备驱动程序中搜集数据拷贝并转发给过滤器。过滤器决定是否接收该数据包,以及接收该复制数据包的哪些部分(Slice 技术)。BPF过滤器的过滤功能是通过虚拟机(Pseudo Machine)执行过滤程序来实现的。过滤程序(Filter Program)实际上是一组过滤规则。过滤规则由用户定义,以决定是否接收数据包和需要接收多少数据。过滤过程可描述如下:当数据包到达网络接口时,链路层驱动程序将其提交到系统协议栈;如果BPF正在此接口监听,驱动程序将首先调用BPF,BPF将数据包发送给过滤器,过滤器对数据包进行过滤,并将数据提交给过滤器关联的上层应用程序;然后链路层驱动将重新取得控制权,将数据包提交给上层的系统协议栈处理。   系统主要由三部分组成:Network Tap,BPF和Libpcap。Network Tap监视共享网络中的所有包,BPF用过滤条件匹配所有由Network Tap监视到的包,若匹配成功则将之从网卡驱动的缓冲区中复制到核心缓冲区。Libpcap是一个系统无关、采用分组捕获机制的分组捕获函数库,用于访问数据链路层。这个库为不同的平台提供了一致的编程接口,在安装了Libpcap的平台上,以Libpcap为接口写的程序、应用,能够自由的跨平台使用。大多数监听程序都使用它和内核部分进行通信。   2.2 NPF参考模型   Winpcap是针对Win32平台上的抓包和网络分析的一个架构,NPF则是Winpcap的重要组成部分之一。NPF的主要思想就是来源于Unix中的BPF,它的设

文档评论(0)

3471161553 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档