欢迎来到天天文库
浏览记录
ID:9845301
大小:44.00 KB
页数:6页
时间:2018-05-12
《1 数据包捕获原理》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、青岛农业大学计算机网络综合实习论文题目:UDP包解析软件的设计与实现专业班级:计本0803姓名(学号):周方盼(20082845)2011年11月16日UDP包解析软件的设计与实现1数据包捕获原理 由于目前用的最多的网络形式是以太网,在以太网上,数据是以被称为帧的数据结构为单位进行交换的,而帧是用被称为带碰撞检测的载波侦听多址访问即CSMA/CD的方式发送的,在这种方法中,发送到指定地址的帧实际上是发送到所有计算机的,只是如果网卡检测到经过的数据不是发往自身的,简单忽略过去而已[3]。正是这种基于CSMA/CD的广播机制
2、,这就给连接在网络上的计算机捕获来自于其他主机的数据带来了可能,即通过对网络接口的设置可以使网卡能够接收到所有经过该机器的数据,然后将这些数据做相应处理并实时分析这些数据的内容,进而分析网络当前状态和整体布局。从广义的角度上看,一个数据包捕获机制包含三个主要部分。首先是最底层针对特定操作系统的包捕获机制,然后是最高层针对用户程序的接口,第三部分是数据包过滤机制。不同的操作系统实现的底层包捕获机制可能是不一样的,但从形式上看大同小异。数据包常规的传输路径依次为网卡、设备驱动层、数据链路层、IP层、传输层、最后到达应用程序。而
3、数据包捕获机制是在数据链路层增加一个旁路处理,对发送和接收到的数据包做过滤缓冲等相关处理,最后直接传递到应用程序[4]。值得注意的是,数据包捕获机制并不影响操作系统对数据包的网络栈处理。对用户程序而言,数据包捕获机制提供了一个统一的接口,使用户程序只需要简单的调用若干函数就能获得所期望的数据包。这样一来,针对特定操作系统的捕获机制对用户透明,使用户程序有比较好的可移植性。数据包过滤机制是对所捕获到的数据包根据用户的要求进行筛选,最终只把满足过滤条件的数据包传递给用户程序。 2数据包捕获方法 纵观国内外使用的包捕获机制的
4、方法,大致可归纳为两类:一类是由操作系统内核提供的捕获机制;另一类是由应用软件或系统开发包通过安装包捕获驱动程序提供的捕获机制,该机制主要用于Win32平台下的开发。操作系统提供的捕获机制主要有四种[5]:BPF、DLPI、NIT和SockPacket类型套接口。BPF由基于BSD的Unix系统内核所实现。DLPI是Silaris系统的内嵌子系统。NIT是SunOS4系统的一部分,但在Solaris系统中被DLPI及NIT所取代。Linux核心则实现了SockPacket的包捕获机制。从性能上看,BPF比DLPI及NIT好
5、得多,而SockPacket最弱。Windows操作系统没有提供内置的包捕获机制。它只提供了数量很少并且功能有限的API调用。PCAUSA公司提供了一个商业的产品,该产品提供了包捕获接口并且包括了一个BPF兼容的过滤器。然而,用户接口过于低级并且该产品不提供象过滤器生成函数那样的抽象函数。WinPcap是Win32上的第一个用来捕获数据包的开放系统软件包,它是一种新提出的强有力并且可扩展的框架结构。WinPcap包含了一系列以前系统所没有的创新特性。本文中将主要使用目前比较流行的WinPcap软件包来提供捕获机制,因为它始
6、终把性能放在首位,能支持十分苛求的应用要求[6]。由于网络适配器一般工作在数据链路层,因此所得到的报文是链路层的报文,它除了应用层的数据外,还包括数据链路层帧头、IP报文头、以及IP层之上的TCP或UDP报文头,并且应用层还有可能也定义了自己的帧结构。本文设计的捕获程序是由运行在Windows核心层的包捕获驱动程序实现的。不使用专用的数据采集系统,而是通过网卡来捕获数据,所以必须要有一个高效的丢包率低的包捕获驱动程序。该驱动程序采用WinPcap包捕获结构。该包捕获结构具有与网络适配卡无关的特性,并且独立于网络的具体形式,
7、如令牌环、以太网、点到点协议PPP等,因此适应面广。利用WinPcap的捕获数据技术对底层数据进行捕获。首先用户应用程序向网卡设备驱动程序发出请求,由网卡设备驱动程序激活从网络拷贝每个分组的数据包,并且将它们分发到对应的应用程序[7]。捕获流程如图1所示。图1捕获数据流程图具体步骤如下:1、打开网卡,并设为混杂模式。2、回调函数NetworkTap[10]在得到监听命令后,从网络设备驱动程序处收集数据包,把监听到的数据包负责传送给过滤程序。3、当Packetfilter监听到有数据包到达时,NDIS中间驱动程序首先调用分组
8、驱动程序,该程序将数据传递给每一个参与进程的分组过滤程序。4、然后由Packetfilter过滤程序决定哪些数据包应该丢弃,哪些数据包应该接收,是否需要将接收到的数据拷贝到相应的应用程序。5、通过分组过滤器后,将数据未过滤掉的数据包提交给核心缓冲区。然后等待系统缓冲区满后,再将数据包拷贝到用户缓冲区。监
此文档下载收益归作者所有