毕业论文

打赏
当前位置: 毕业论文 > 计算机论文 >

基于LCS的WEB站点指纹识别设计+文献综述(4)

时间:2017-05-11 16:26来源:毕业论文
其次,抓包系统必须有用户级的程序接口,通过这些接口,用户程序可以利用内核驱动提供的高级特性。Winpcap提供了两个不同的库:packet.dll和wpcap.dll。前


其次,抓包系统必须有用户级的程序接口,通过这些接口,用户程序可以利用内核驱动提供的高级特性。Winpcap提供了两个不同的库:packet.dll和wpcap.dll。前者提供了一个底层API,伴随着一个独立于Microsoft操作系统的编程接口,这些API可以直接用来访问驱动的函数;后者导出了一组更强大的与libpcap一致的高层抓包函数库(capture primitives)。这些函数使得数据包的捕获以一种与网络硬件和操作系统无关的方式进行。
抓包过程依赖于两个主要组件: 一个数据包过滤器,它决定着是否接收进来的数据包并把数据包拷贝给监听程序。数据包过滤器是一个有布尔输出的函数。如果函数值为true,抓包驱动拷贝数据包给应用程序;如果false,数据包将被丢弃。NPF数据包过滤器更复杂一些,因为它不仅决定数据包是否应该被保存,而且还得决定要保存的字节数。被NPF驱动采用的过滤系统来源于BSD Packet Filter(BPF),一个虚拟处理器可以执行伪汇编书写的用户级过滤程序。应用程序采用用户定义的过滤器并使用wpcap.dll将它们编译进BPF程序。然后,应用程序使用BIOCSETF IOCTL写入核心态的过滤器。这样,对于每一个到来的数据包该程序都将被执行,而满足条件的数据包将被接收。与传统解决方案不同,NPF不解释(interpret)过滤器,而是执行(execute)它。由于性能的原因,在使用过滤器前,NPF提供一个JIT编译器将它转化成本地的80x86函数。当一个数据包被捕获,NPF调用这个本地函数而不是调用过滤器解释器,这使得处理过程相当快。 一个循环缓冲区,用来保存数据包并且避免丢失。一个保存在缓冲区的数据包有一个头,它包含了一些主要的信息,例如时间戳和数据包的大小,但它不是协议头。此外,以队列插入的方式来保存数据包可以提高数据的存储效率。可以以组的方式将数据包从NPF缓冲区拷贝到应用程序。这样就提高了性能,因为它降低了读的次数。如果一个数据包到来的时候缓冲区已经满了,那么该数据包将被丢弃,因此就发生了丢包。
在正常的情况下, 一个网络接口应该只响应以下两种数据帧:( 1) 与自己硬件地址相匹配的数据帧。( 2) 发向所有机器的广播数据帧。其实在一个实际的系统中, 数据的收发由网卡完成, 网卡接收到传输来的数据帧, 网卡内的单片程序接收数据帧的目的MAC地址, 根据计算机上的网卡驱动程序设置的接收模式判断是否接收。而对于合法的网卡来说应该只接收以下数据帧有以下4种模式: ①广播方式。②组播方式。③单播方式。④混杂模式。数据包捕获作为一种网络通讯程序,也是通过对网卡的编程来实现网络通讯。因此, 网络数据包捕获的基本原理是让网卡接收一切它所能接收的数据。
WinPcap 是应用于Win32 平台的数据包捕获与网络分析的一种体系结构,为Win32 应用程序提供访问网络底层的能力,WinPcap 基本体系结构如图2.4所示,由3 个模块组成:
 ( 1)NPF 包过滤器, 数据包监听设备驱动程序,是架构的核心,它工作在内核级,主要功能是过滤数据包。它直接从数据链路层取得网络数据包,不加修改地传给运行在用户层的应用程序,也允许用户发送原始数据包。
( 2) Packet.dll 是低级的动态连接库,运行在用户级,把应用程序和数据包监听设备驱动程序隔离开来,使得程序可以不加修改地在不同的Windows 系统上运行。通过Packet.dll 提供的能用来直接访问BPF 驱动程序的包驱动API,利用“raw”模式发送和接收包。不同Windows 系统上的Packet.dll 并不相同,但由于它提供了一套相同的调用接口,这样使得高级系统无关库不依赖于特定的Windows 平台。 基于LCS的WEB站点指纹识别设计+文献综述(4):http://www.youerw.com/jisuanji/lunwen_6745.html
------分隔线----------------------------
推荐内容