当前位置:首考文秘网>范文大全 > 公文范文 > WinPcap技术在网络流量监测中的应用

WinPcap技术在网络流量监测中的应用

时间:2023-05-18 18:20:03 公文范文 来源:网友投稿

摘 要:介绍计算机网络流量监测技术与方法,研究WinPcap包截获系统的结构及其主要功能,并阐述基于WinPcap捕获和分析网络数据包的方法和主要步骤。基于WinPcap包截获系统具有结构简单、捕获数据快、协议识别率高等特点,它的三个模块互相配合,实现了网络数据获取的基本功能。

关键词:WinpCap;流量监测;数据包捕获

中图分类号:TP393文献标识码:A文章编号:1009-3044(2011)31-0000-0c

Application of WinPcap in the Network Traffic Monitoring

ZHANG Xue-jun,XU Yuan

(Internet of Things Department of Jiangnan University, Wuxi 214122, China)

Abstract: Introduction of computer network traffic monitoring technology and flow monitoring methods, the main study the WinPcap packet capture system structure and its main function, based on the WinPcap packet capture system with simple structure, fast data capture, protocol recognition rate, etc., which of the three modules complement each other to achieve the basic functions of data acquisition network, describes the network based on WinPcap packet capture and analysis methods and the main steps.

Key words: WinpCap; network traffic monitoring system; packet capture

目前互联网已经非常普及,有关网络的应用也越来越多,从浏览网页和收发邮件,到打游戏,聊天,看电影,听音乐,打电话包罗万象。电视网和电话网能够做的事情,现在宽带网也能够做到了,同时宽带网还能够做电视网,电话网以外的许多事情。而这一切,都是靠信息在网络上的流动来实现的。汽车在马路上跑,常常会引起交通堵塞以及不遵守交通规则等现象,因此需要交通部门来实时监测道路情况和处理突发事件。同样网络流量也需要监测和控制,通过监控可以对网络状态进行合理调节或配置、保证网络高效运行、提高网络资源的利用效率、也可以用于对网络用户行为和网络业务的分析。网络流量监测是网络管理的重要组成部分,而数据报捕获又是网络流量监测的前提。

1 流量监测与分析技术概述

1.1 网络流量监测

网络流量指通过网络的数据量,是衡量网络性能的重要参数。网络监测就是通过一定的方法获取网络流量数据,而这些流量数据的采集是进一步分析网络负载性能以及网络的安全性的前提。网络流量的监测是网络测量中的重要技术之一,网络流量监测系统大致上可以分为流量采集、流量分析和流量控制三个方面。

1.2 流量监测分析的方法及分类

流量监测系统通常是根据对网络流量某个特定方面的分析来设计的,正是由于需要分析的内容不同,就产生了各种网络流量监测方法,这些方法主要分为基于主机内嵌软件的方法、基于SNMP的流量监测方法、基于Netflow的流量监测方法、基于硬件探针的监测方法等。

1.2.1 基于主机内嵌软件的方法

主机内嵌软件的方法是指在主机内安装流量检测软件来完成流量检测任务。主机操作系统中,一般会把网络通信功能功能实现在相对独立的软件模块 ,例如设备驱动程序中。主机与网络的通信一般是通过对调用软件套接字Socket来实现。因此在这个位置上嵌入一个软件就可以通过检测对通信模块的调用来截获往返通信的主要内容,目前有许多软件实现这一功能。Windows 操作系统下的检测软件WinPcap,实现了基本的报文截获功能,可自由下载使用,成为了许多流量监测软件的基本组成部分。

1.2.2 基于SNMP的流量监测方法

SNMP用于对网络设备的管理,几乎所有的网络设备都具备该能力,基于SNMP的流量信息采集方法,实质上是用软件提取存储在网络设备上的流量信息,该方法配置简单,成本较低,基于SNMP收集的网络流量信息只包括字节数、报文数等基本的流量信息,不能满足复杂的流量监测要求。

1.2.3 基于Netflow的流量监测方法

Netflow是Cisco公司提出的专业的流量监测的技术标准,主要运行在该公司生产的网络设备上,与基于SNMP的流量监测方法相比,该方法能够满足复杂的流量监测需要,目前应用最普遍的是NetFlowV5。

1.2.4 基于硬件探针的监测方法

硬件探针是一种用来获取网络流量的硬件设备,使用时将它连接在需要捕捉流量的链路中,通过分流链路上的数字信号而获取流量信息。 一个硬件探针通常只能监视一条链路。而对于全网流量的监测使用NetFlow更为合适。与其他的3种方式相比,基于硬件探针的最大特点是能够提供丰富的从物理层到应用层的详细信息。

2 WinPcap包截获系统

数据包的截获是流量监测系统中流量采集的主要技术.在大多数Unix系统的内核模块本身就是截获数据包的机制。而在Windows平台下,系统提供很少的数据包捕获接口,而提供的具有包截获功能的API,也只能截获IP数据包,很少能直接获取数据链路层上数据帧。WinPcap是基于Win32平台的开放源代码网络数据包截获和分析的系统。它弥补了Windows内核在包捕获方面的不足,该系统性能稳定而且效率极高,利用它提供的丰富且功能强大的网络数据包处理函数,可以满足对数据包处理有严格要求的多数应用。

2.1 WinPcap的体系结构

WinPcap是由意大利人Fulvio Risso和Loris Degioanni等人提出的。是为Linux下的Libcap移植到Windows下而设计的,它的主要思想来源于Unix系统中最著名的伯克利软件套件(Berkeley software Distribution,BSD)架构,WinPcap的基本结构如图a所示。它由处于内核级的网络组包过滤器(Netgroup Packet Filter,NPF)、处于用户级的动态链接库(Packet.dll)和高级动态链接库Wpcap.dll等3个模块组成。

1) 网络组包过滤器。它是WinPcap架构的核心,属于最底层的模块,它与NIC驱动交互,并向上提供一些函数组,从而能在读取和写入网络数据包。它能获取原始以太网数据包,并进行相应的过滤,然后传给高层的应用程序处理。NPF有着高效和处理迅速两大特点,在流量很大的网络中也能正常高效的工作。

2) 低级动态链接库。Packet.dll为Win32平台上为数据包驱动程序提供了一个公共的接口。不同的Windows版本在用户态和内核态之间提供互不相同的接口,而Packet.dll可以屏蔽这些接口区别,提供一个与系统无关的API,该API能够直接访问NPF驱动程序。基于Packet.dll开发的数据包截获程序可以不作任何修改运行于不同的Win32平台。Packet.dll具有如获取适配器名称、动态驱动器加载以及获得主机掩码及以太网冲突次数等附加功能。

3) 高级动态链接库。Wpcap.dll与Packet.dll不同,它处于更高层,且与操作系统无关,是对Packet.dll的高层封装。它和应用程序链接在一起,提供了一组功能强大且跨平台的函数,利用这些函数,可以不去关心适配器和操作系统的类型。Wpcap.dll含有诸如产生过滤器、定义用户级缓冲以及包注入等高级功能。编程人员既可以使用包含在Packet.dll中的低级函数直接进入内核级调用,也可以使用Wpcap.dll提供的高级函数调用,这样功能更强,使用也更为方便。Wpcap.dll的函数调用会自动调用Pactet.dll中的低级函数,并且可能被转换成若干个NPF系统调用。

图1

2.2 WinPcap的主要功能

在WinPcap包截获系统中,整个包截获架构的基础是网络驱动器接口规范(NDIS),它主要为网络适配器和各种协议驱动程序提供接接口函数,使得协议驱动程序发送和接收数据包时不必考虑具体的适配器和Win32操作系统。WinPcap中的NPF正是通过回调函数Packet_tap()调用这些接口函数来截取网络数据包,进而为用户层提供了包截获、数据包转储、包注入、网络监测等功能。

1) 包截获。包截获是NPF最重要的操作,它通过过滤从网卡中接收到数据包,并原封不动地送往用户层应用程序。它主要依靠一个包过滤器和一个环缓冲器来实现。NPF中的包过滤器延用了Unix下BSD中的分组过滤器BPF,BPF是一个虚拟处理机,用于运行用户自定义的过滤程序。通过Wpcap.dll把用户定义的包过滤规则编译到BPF程序中,并把程序注入到内核。当有数据包到达的时候,NPF运行该内核程序进行数据包的过滤。环缓冲器用来存储数据包避免包丢失,数据包存储时被加了一个包头,记录时问戳以及包大小等信息。使用缓冲器可以把一组数据包一起拷贝给应用程序,这减少了读写的次数,提高了运行速度。缓冲器的大小是非常重要的一个参数,因为它决定了一次拷贝能送多少数据包给应用程序。缓冲器设置比较大时,它需要等待一系列包到达后才往应用程序送,由于减少拷贝次数节省了处理器的资源,如在嗅探器中就适合设置大的缓冲器。而有些实时性要求比较高的应用程序(如ARP转向器),需要在应用程序准备好时就能得到数据,因而缓冲器设置较小。WinPcap库中提供了专门设置缓冲器大小和读包溢出时间的函数,它们的默认值分别是16kB和ls。

2) 数据包转储。用传统方法,把数据包保存到硬盘上通常需要3~4个缓冲器,每个数据包需要拷贝多次。当网卡收到包以后,包会存放在内核空间内,这需要一个缓冲器。由于上层应用运行在用户空问,无法直接访问内核空间,因此要通过系统调用往上层应用系统送,这时会发生一次复制过程。用户应用程序有两个缓冲器,一个用于暂存数据,一个用于标准输出函数中向硬盘写文件,还有一个缓冲器存在文件系统中。如果对一般的应用来说,这样的系统开销还可以承受,但是对于大量读取网络数据包的应用来说,这样的开销就很难承受了。利用NPF提供的数据包转储功能,不需要用户应用程序的介入,在内核层直接寻址文件系统。因为减少了两个缓冲器。而且只要一次简单的拷贝,大量减少了系统调用,提高了转储的效率。在转储之前,还可以进行包过滤,只把需要的数据包保存到硬盘上面。

3) 包注入。NPF除了可以从网络中截获数据包,还可以往网络发送数据包。包注入时,NPF对数据包不进行任何封装,所以应用程序需要针对不同应用给每个数据包添加相应的包头。封装时可以不计算帧校验序列,网卡驱动程序会自动计算它并添加到每个数据包的结尾。通常情况下每往网络发送一个包,都要进行一次系统调用(WriteFile()),而通过NPF可以实现一次系统调用重复发送同一个数据包,这提高了发送效率,适合应用于网络高速流量测试。

4) 网络监测。事实上,通过WinPcap提供的包截获功能,在用户层得到需要检测的数据包后,通过简单的分类统计就能实现网络检测。但是如果网络流量很大,这可能会耗尽处理器资源。WipPcap提供了内核层的监测模块,不需要把数据包送到应用程序就能实现分类统计。该监测模块由分类器和计数器组成,在内核层和用户层不分配缓冲区,统计数据直接来源于适配器驱动程序,这大大节省了内存和处理器资源。

2.3 WinpCap 的主要优点

1)高性能。WinPcap 实现了有关数据包捕获文献中描述的所有典型的优化方法(如内核级的过滤与缓冲、减少上下文交换、数据包部分内容复制),加上一些原创的优化方法,如JIT 过滤器编辑(JIT filter compilation)与内核级的统计过程,WinPcap 胜过其他类似的方法。

2)最终用户易于使用WinPcap 作为单个小的可执行文件发布,可运行在每个所支持的操作系统上,开始使用这个可执行文件后,Windows 就能捕获与发送原始数据包,操作简单。

3)程序员易于使用每个版本的WinPcap 带有一个开发者包(developer"s pack),包括文档、库与include 文件,是开发应用程序所必需的。开发者包还包含一个示例程序集,可用Visual Studio 或Cygnus 编译,用来作为一个极好的起点。

4)多平台。WinPcap 在Windows NT、Windows2000、Windows XP 与Windows Server 2003 平台上被积极地维护。对Windows Vista 具有初步的支持,但有一些特性并不具备。

5)可移植性。WinpCap与libpcap具有完全的兼容性。这意味着可将Unix 或Linux 下存在的工具移植到Windows下。也可把Windows应用程序很方便地移植到Unix下使用。

2.4 WinPcap捕获数据包过程

首先获取网卡设备列表并选择要监听的一块网卡,将其设置为混杂模式,还要设置好过滤器等参数;然后把网卡上的数据包复制到内核缓冲区中;最后通过上层的调用,把内核缓冲区中的数据包拷贝到用户缓冲区中,再交给应用程序对数据进行加工提取出有用的信息。利用WinPcap驱动捕获的数据帧其实是经过传输层、网络层和数据链路层的封装而生成的太网数据帧,因此可以对数据帧作进一步解析得到有用信息。

3 WinPcap捕获数据包过程

WinPcap捕获数据包分成以下几个步骤,首先获取网卡设备列表并选择要监听的一块网卡,将其设置为混杂模式,还要设置好过滤器等参数;然后把网卡上的数据包复制到内核缓冲区中;最后通过上层的调用,把内核缓冲区中的数据包拷贝到用户缓冲区中,再交给应用程序对数据进行加工提取出有用的信息。利用WinPcap驱动捕获的数据帧其实是经过传输层、网络层和数据链路层的封装而生成的太网数据帧,因此可以对数据帧作进一步解析得到有用信息。捕获到了网络数据帧,便可以进一步完成网络流量分析和网络流量控制等任务,这些任务构成了一个完整的网络流量监测系统。

4 结论

WinPcap系统是一个功能强大的用于网络数据获取开发包,它直接和网卡打交道,获取数据链层的数据,能捕获数据链路层的所有数据包。WinPcap的分层思想为Windows平台提供了一个完整的、简单的、系统无关的编程接口,为在Windows平台下开发高性能的网络数据获取软件提供了方便。WinPcap的两级缓存的设计,极大地提高了数据包的捕获率,使丢包率降到了很低的程度,尤其是它内核级缓存的动态循环存储的思想,使它在数据捕获的速度方面优于UNIX中的Libpcap。总之,基于WinPcap的网络数据获取系统实验方案具有结构简单、捕获数据快、协议识别率高等特点,它的三个模块的相互套用,实现了网络数据获取的基本功能。本文就WinPcap的系统结构及其功能原理进行了介绍,最后阐述了WinPcap捕获数据包过程。

参考文献:

[1] 张伟,王韬.基于WinPcap的数据包捕获及应用[J].计算机工程与设计,2008,29(7):1649-1651.

[2] 杨永.互联网流量监测系统研究[J].信息网络安全,2010(7):22-28.

[3] 吴玉,李岚.基于WinPcap 的网络数据获取系统的研究[J].研究与设计,2007,23(6):10-12.

[4] 魏敏,奚茂龙,周阳花.基于WinPcap的网络数据解析系统[J].计算机安全,2010(11):49-51.

[5] 胡晓元,史涪山.WinPcap包截获系统的分析及其应用[J].计算机工程,2005,31(2):96-98.

[6] 刘芳.网络流量监测与控制[M].北京:北京邮电大学出版社,2009.

收稿日期:2011-08-19

作者简介:张雪军,男,江苏南通人,本科,研究方向为计算机网络;徐圆,女,新疆维吾尔自治区乌鲁木齐人,本科,研究方向为通信工程。

推荐访问:监测 网络流量 技术 WinPcap

版权所有:首考文秘网 2015-2024 未经授权禁止复制或建立镜像[首考文秘网]所有资源完全免费共享

Powered by 首考文秘网 © All Rights Reserved.。备案号:冀ICP备15026071号-91