- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Windows下基于BPF模型的网络数据包截获模块的设计与实现
采用WinPcap库的sniffer的通用设计(编程)模型 1. WinPcap概述 WinPcap是Politecnico di Torino的NetGroup开发的基于Win32平台的包捕获和网络分析的基础构架,由UNIX下的libpcapLibpcap一样,采用内核过滤机制,并且只支持BPF(Berkeley 分帧过滤器)BPF机制.则所有的效据包都必须读取到用户空间后,再在WinPcap库中进行过滤处理,这样就会增加额外的处理负担,导致性能的下降。 2. BPF包过滤机制 BPF 于 1992 年被设计出来,其设计目的主要是解决当时已存在的过滤机制效率低下的问题。BPF的工作步骤如下:当一个数据包到达网络接口时,数据链路层的驱动首先调用 BPF进行过滤操作,然后把数据包存放在过滤器相关的缓冲区中,最后设备驱动再次获得控制,避免了类似 sun 的 NIT 过滤机制先缓冲每个数据包直到用户读数据时再过滤所造成的效率问题。相对老式的过滤方式CSPF(CMU/Stanford Packet Filter)有两大特点:基于寄存器的过滤机制而不是早期内存堆栈过滤机制;直接使用独立的、非共享的内存缓冲区 BPF在过滤算法也有很大进步,它使用无环控制流图(CFG control flow graph),而不是老式的布尔表达式树(boolean expression tree)优点在于把对数据包的分析信息直接建立在图中,从而不需要重复计算。 BPFBPF网络阀和数据包过滤器Filter。通常在数据报到达网络适配器时,设备驱动程序会将数据报传递给协议栈的其它部分。网络阀是个回调函数,从网络设备驱动程序处收集数据,并将它们传递给正在监听的应用程序。收集的数据报若满足Filter的条件,那么将它们保存在缓冲区内,在应用程序读取时,将它们拷贝到用户层的缓冲区中。 Filterr是返回值为Bool类型的函数,用来判断是否将收集到的数据报拷贝到应用程序的缓冲区内。若数据报满足Filter所设置的条件,那么它返回真并且将它传递给应用程序;否则将它抛弃掉。BPF结构如图1所示。 3. WinPcap网络数据捕获体系 Winpcap为应用程序提供了与数据包截获有关的过程,包括两个不同层次的API:packet.dll,wpcap.dll和一个虚拟设备驱动程序npf.vxd,应用程序可以调用底层的API也就是packet.dl,也可以调用高层的API wpcap.dl来实现各种高级的应用。在这三个组件中, Npf.vxd工作在内核级,与操作系统和硬件是相关的。packet.dll和wpcap.dll工作于用户级,与具体的硬件无关,其中packet.dll属于底层的API,与操作系统是相关的,在Win9x(95,98,me)和WinNT(NT4,2000,XP)系列中有所不同。Wpcap.dll是高层的API,他是与操作系统无关的。由于这两个API的级别不同,因此基于packet.dll和wpcap.dll编写的应用程序各有其不同的优点,前者能够直接访问到驱动程序,便于实现一些底层的功能,而后者与Unix系统中使用的libpcap兼容,所以基于他所编写的程序在windows系统和Unix系统中都可以运行: 3.1 WinPcap主要接口介绍 (1)typedef void(* pcap_handler )(u_char *user, const struct pcap_pkthdr *pkt_header, const u_char *pkt_data). . (2) pcap_open_live ( ). 用来获得一十数据截获描述符,读描述符用于查看在同鳍上传输的敷据包; (3)pcap_dispatch ( ). 获取网络数据包,调用参数中指定的pcap_handler函数对数据包进行处理,并根据设定的条件返回. (4)pcap_compile():来编译一个过滤设备,它通过一个高层的boolean型变量和字串产生一系列的能够被底层驱动所解释的二进制编码。pcap_setfilter():用来联系一个在内核驱动上过滤的过滤器,这时所有网络数据包都将流经过滤器,并拷贝到应用程序中。void pcap_close (pcap_t *p). 关闭相关的文件并释放对应资源 4 基于WinPcap的程序流程 首先让我们了解一个pcap应用程序的常用设计。代码的流程如下所示: 数据流的过滤 WinPcap最强大的特点之一就是数据流的过滤引擎。它提供一种高效的方法来只捕获网络数据流的某些数据而且常常和系统的捕获机制相集成。过滤数据的函数是pcap_compile() 和 pcap_setfilter()来实现的。 下面的代码展示了如何编译并社定一个过滤设备。注意
您可能关注的文档
最近下载
- 低空经济行业专题系列二:eVTOL动力系统的市场空间、技术趋势和产业链机遇-国信证券.pptx VIP
- 化妆品105条考试试题.docx VIP
- 矛盾化解与行为习惯养成主题班会课件.pptx VIP
- 人教版(2024)新教材小学二年级美术上册第三单元《第3课 玩具的巧思》精品课件.pptx
- 必威体育精装版人教版初中物理教材目录.docx VIP
- 机械加工生产操作岗位培训试卷.pdf VIP
- 2025至2031年中国实木砧板行业投资前景及策略咨询研究报告.docx
- 《微信营销与运营》5套期末考试卷AB卷带答案习题试卷模拟卷.docx VIP
- 大学生职业生涯规划.pdf VIP
- 5年级下册期末练习卷.docx VIP
有哪些信誉好的足球投注网站
文档评论(0)