课程设计(论文)-基于winpcap的网络数据包捕获与分析

课程设计(论文)-基于winpcap的网络数据包捕获与分析

ID:33838503

大小:665.00 KB

页数:19页

时间:2019-03-01

课程设计(论文)-基于winpcap的网络数据包捕获与分析_第1页
课程设计(论文)-基于winpcap的网络数据包捕获与分析_第2页
课程设计(论文)-基于winpcap的网络数据包捕获与分析_第3页
课程设计(论文)-基于winpcap的网络数据包捕获与分析_第4页
课程设计(论文)-基于winpcap的网络数据包捕获与分析_第5页
资源描述:

《课程设计(论文)-基于winpcap的网络数据包捕获与分析》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、姓名:李丹丹学号:08261004指导教师:黄老师基于WinPcap的网络数据包捕获与分析一、WinPcap介绍1.WinPcap简介WinPcap是一个在Windows操作系统下的免费、公开的用于直接访问网络的开发工具包(编程API)。大多数Windows网络应用程序都是通过WinsockAPI(Windows套接口)这类高级编程接口访问网络的。这种方法允许在网络上进行简单的数据传送,因为操作系统的TCP/IP协议栈实现软件会处理底层细节(协议操作、流程重组等等),并提供一个类似于读写文件的函数接口。然而,有时候“简便方法”并不能满

2、足实际需要。有些程序希望绕过TCP/IP协议栈,直接处理底层网络中的通信数据,它们需要对网络进行底层进行直接访问,即在没有类似协议栈(TCP/IP协议栈)的实体介入条件下对网络进行原始访问。基于WinsockAPI编程,应用程序是通过调用操作系统提供的编程接口访问TCP/IP协议栈实现网络通信的。基于WinPcap编程,网络程序实际上是绕开操作系统的TCP/IP协议栈直接通过底层网络发送数据,因此,网络程序可以实现一些更低级、更灵活的功能。2.WinPcap的组成与结构如图1.1,WinPcap由一个数据包监听设备驱动程序(NPF)、

3、一个底层的动态连接库(packet.dll)和一个高层的不依赖于操作系统的静态库(wpcap.dll)共三个部分构成。这里,NPF在操作系统的内核级,packet.dll、wpcap.dll在用户级。图1.1WinPcap的组成和结构应用程序wpcap.dllpacket.dllNPFDeviceDriver用户层核心层网络层数据包1)数据包监听设备驱动程序技术实现上,为了实现抓包,系统必须绕过操作系统的协议栈来访问在网络上传输的原始数据包(rawpacket)。这就要求WinPcap的一部分运行在操作系统核心内部,直接与网络接口驱动

4、交互。由于这个部分是系统依赖(systemdependent)的,在Winpcap的解决方案中它被视为是一个设备驱动,称作NPF(NetgroupPacket姓名:李丹丹学号:08261004指导教师:黄老师Filter)。2)底层的动态连接库(packet.dll)和高层静态库(wpcap.dll)为了方便编程,WinPcap必须提供一个编程接口(API),这就是WinPcap的底层的动态连接库(packet.dll)和高层静态库(wpcap.dll)。这里,packet.dll提供了一个底层API,伴随着一个独立于Microsof

5、t操作系统的编程接口,这些API可以直接用来访问驱动的函数;wpcap.dll导出了一组更强大的与libpcap一致的高层抓包函数库(captureprimitives),这些函数使得数据包的捕获以一种与网络硬件和操作系统无关的方式进行。底层动态链接库运行在用户层,它将应用程序和数据包监听设备驱动程序隔离开来,使得应用程序可以不加修改地在不同的WINDOWS系统上运行。高级的静态链接库和应用程序编译在一起,它使用低级动态链接库提供的服务,向应用程序提供完善的监听接口。1.WinPcap的基本原理抓包是WinPcap的基本功能,也是NP

6、F最重要的操作。在抓包的时候,驱动(例如NICDriver)使用一个网络接口监视着数据包,并将这些数据包完整无缺地投递给用户级应用程序。如图1.4,WinPcap的NPF抓包主要依靠两个组件。1)数据包过滤器(filter)。数据包过滤器决定是否接收进来的数据包并把数据包拷贝给监听程序。数据包过滤器是一个有布尔输出的函数。如果函数值是true,抓包驱动拷贝数据包给应用程序;如果是false,数据包将被丢弃。NPF数据包过滤器更复杂一些,因为它不仅决定数据包是否应该被保存,而且还决定要保存的字节数。被NPF驱动采用的过滤系统来源于BSD

7、PacketFilter(BPF),一个虚拟处理器可以执行伪汇编书写的用户级过滤程序。应用程序采用用户自定义的过滤器并使用wpcap.dll将它们编译进BPF程序。然后,应用程序使用BIOCSETFIOCTL写入核心态的过滤器。这样,对于每一个到来的数据包该程序都将被执行,而满足条件的数据包将被接收。与传统解决方案不同,NPF不解释(interpret)过滤器,而是执行(execute)它。由于性能的原因,在使用过滤器前,NPF提供一个JIT编译器将它转化成本地的80x86函数。当一个数据包被捕获,NPF调用这个本地函数而不是调用过滤

8、器解释器,这使得处理过程相当快。2)循环缓冲区(Buffer)。NPF的循环缓冲区用来保存数据包以免丢失(如果一个包符合过滤器的要求,就被复制到循环缓冲区)。一个保存在缓冲区中的数据包有一个头,它包含了一些主要的信息,例

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。