您的当前位置:首页正文

WinPcap在网络监听管理中的应用研究

2023-08-28 来源:步旅网
龙源期刊网 http://www.qikan.com.cn

WinPcap在网络监听管理中的应用研究

作者:于雷

来源:《电脑知识与技术》2012年第07期

摘要:随着网络应用的不断增多,随之而来的信息安全问题也日益突出,如何对网络进行准确的网络监控与管理已成为网络管理者面临的一个重要的问题;在分析WinPcap的基础上,利用WinPcap设计了一个网络监管系统,采用了动态时间驱动分组采样算法提高了采样效率,采用了K-means算法实现了流量的高效分类。

关键词:WinPcap;网络监听;数据包捕捉;流量分类

中图分类号:TP393文献标识码:A文章编号:1009-3044(2012)07-1529-03 Research on Application of WinPcap in Network Sniffing YU Lei

(Network Information Center,Ningxia University, Yinchuan 750021, China)

Abstract: With the continuous increase of the application of the network,the problems of network security become more and more obvious, How to monitor network has become an important issue for network managers,a network monitoring system is designed based on analysis of WinPcap,which uses a dynamic time-driven packet-sampling algorithm to improve sampling efficiency, uses K-means algorithm to achieve efficient flow classification.

Key words: WinPcap; network sniffing; packet capture; flow classification

随着计算机网络应用的不断增加,网络安全问题已经变得越来越严重,许多单位和个人用户都在不同程度上受到过网络黑客的入侵与破坏,层出不穷的网上失泄密事故案件给国家和个人造成了巨大损失;同时,由于没有实时有效的网络监听管理系统,无法识别非法用户的入侵或用户对网络的非法使用,甚至在受到网络攻击后不知道如何应对,从而造成较大的损失;为了保证网络稳定安全运行,网络管理与维护者必须借助于各种网络监听工具和手段,实时对网络进行监测,及时发现正在发生的或潜在的网络安全问题,从而进行及时排除,避免故障的蔓延和扩散造成更大的损失。

传统的网络监听大都使用Windows SDK方法或套接字编程方法等,这些方法的实现与所用的操作系统类型和版本紧密相关,原始套接字使用复杂,其不能捕获数据链路层的信息,只能捕获到IP层的数据包,并且使用这些方法开发的程序通用性不强,这给全面网络监听带来了困难;相比之下,WinPcap提供了一组功能强大且与操作系统和适配器无关的接口函数,调用这些函数非常简单,通过提供得函数可以捕获完整的数据帧,完成内核级的数据包过滤,并

龙源期刊网 http://www.qikan.com.cn

且WinPcap提供具有两级缓存机制,使得其几乎不出现丢包的现象,在网络数据捕获和数据分析方面WinPcap有很大的优势。 1 WinPcap介绍

WinPcap(Windows Packet Capture)是为Libpcap在Windows平台下实现数据包的捕获而设计的一个专业网络数据包捕获开发包,用在Windows平台上进行数据包捕获等相关操作,其最大用途是捕获网络数据包,此外,还可以用来过滤网络数据包,分析网络数据包及存储网络数据包等。

Winpcap由内核级的网络组包过滤器(Netgroup Packet Filter, NPF)、低级动态链接库Packet.dll及高级系统无关库Wpcap.dll三个模块构成,其中,NPF是运行于操作系统内核中的驱动程序,是Winpcap的核心部分,其主要由两个主要部件Netowrk Tap和Packet Filter组成,直接与网卡驱动程序进行交互,将监听到的所有数据包进行过滤,只把用户关心的数据包中的信息提交给用户程序,把一些无关紧要的数据过滤掉;Packet.dll为Win32平台提供了一个公共的接口,提供了一个底层API,这些API可以直接用来访问内核,它屏蔽了在不同Win32操作系统平台上内核级模块的差异,调用Packet.dll的程序可以运行在不同版本的Windows平台上而无需重新编译;Wpcap.dll比Packet.dll更高级,Wpcap.dll对packet.dll进行了进一步的封装,它却提供了一种更简单、直接、有力的方法来更好的利用编程环境,它的调用与操作系统无关,它和应用程序编译在一起,使用由Packet.dll提供的服务,向应用程序提供完善的接口函数,提供了更高层、更抽象的函数,Winpcap的结构如图1所示。 2 Winpcap在网络监控管理中的应用 2.1需求分析

网络监听管理是对管理范围内的用户使用网络情况进行监听分析,它保存用户流量数据,实现的功能有以下几个:

1)实时监测网络:实时获得网络的当前运行状况,在网络出现故障或拥塞时发出自动告警;

2)统计网络总流量:对在指定的时间内的网络总流量进行统计,并与历史数据做对比,做出相应的预测;

3)MAC地址与IP地址统计;对指定时间内访问网络的所有MAC地址及IP地址进行统计;

4)统计协议分布情况:在指定时间内,对各种协议分布情况进行统计;

5)统计主机数据包流量:查询特定主机在指定时间内各种数据包大小的分布情况;

龙源期刊网 http://www.qikan.com.cn

6)流量统计分析:用于统计网站访问流量,分析流量变化趋势,发现潜在的网络威胁,可以按照月、日和时进行流量统计;7)数据包大小分布的统计:查询在当前一段时间内各种数据包大小的分布情况。

8)访问分析:用于分析每个访客的每一次来访行为,动态掌握访客的兴趣爱好,预测访客的访问目的与意图,防范非法用户的入侵。9)P2P限速与垃圾邮件过滤:根据P2P及垃圾邮件的特征属性,对其进行限制及过滤。 2.2系统总体设计

系统使用使用WinPcap函数包和Visual C++ 6.0作为开发平台,整个软件分为5个子模块:用户模块(界面模块),流量监测模块,数据包捕捉模块,数据包分析模块和统计分析模块,其中利用WinPcap中提供的函数对流经网卡的数据包进行捕获,其流程如图2所示。 图2数据包捕获流程

其中,使用pcap_findalldevs_ex()函数查找可用的网络设备,使用pcap_open_live()函数网卡,使用盖pcap_compile()函数编译过滤规则,使用pcap_setfilter()函数绑定一个过滤器到一个在核心驱动中的捕获进程中,使用peap_dispatch()或pcap_loop()进行数据的捕获,然后按照数据包的结构数据解析,使用packet_handle()函数完成数据处理,Pcap_close用于关闭Winpcap关联文件并释放相关资源。 2.3关键算法设计

1)动态时间驱动分组采样

常见的采样算法有基本的分组采样算法、动态时间驱动分组采样、用于识别“大”流的采样算法、基于缓存区的时间分层采样算法、闭值采样算法等,文中采用动态时间驱动分组采样算法,其是根据网络流量的变化动态调整采样次数,从而能将最后的测量误差率控制在一个给定的范围内,在保证精度的同时极大地降低了测量的代价,即是在指定时间段内,按照频率f,对最先到达的分组进行采样,并完成相关的统计。采样次数的计算公式为: m≥?è

为分别对n个分组进行采样值,m为采样次数,u∧为采样本的均值,u为总体的均值,σ2为总体的标准方差。从上式可以看出,最少采样次数只取决于总体的标准差和均值的比值的平方,而不取决于总体所包含的个体数目的多少,因此应该依据总体的数字特征(标准差、均值)来动态地调整采样次数,取最近的五个时间段内?è的估计值。 2)流量分类

龙源期刊网 http://www.qikan.com.cn

现如今的流量分类方式包括:基于端口的识别,基于特征码识别,基于BLINC识别,基于统计特征的机器学习识别等,K-means算法是解决聚类问题的一种基于统计特征的机器学习识别算法,该算法简单快速,各聚类本身尽可能地紧凑,而各聚类之间尽可能地分开,在处理大数据集时,该算法是相对可伸缩的和高效的。图3基于K-means的网络流量分类流程图 首先确定初始聚类中心,通常是是从n个数据对象中任选k个数据对象,然后对于其余的(n-k)个数据对象,根据它们与聚类中心的相似度进行聚类分类,然后再分别计算新聚类的聚类中心,不断重复分类过程,直到标准测度函数开始收敛为止,其中,计算数据对象与聚类中心的相似度公式为: L(x,y)= 3结束语

WinPcap作为一个在Win32环境下可以实现高效率数据包的开发包,提供了完善的编程接口,能够很好的实现以太网协议的捕获和分析,通过在WinPcap网络开发包的基础上开发了网络监控管理系统,实现了对网络流量进行实时监测,确保了网络安全。 参考文献:

[1]张雪军,徐圆.WinPcap技术在网络流量监测中的应用[J].电脑知识与技术,2011(31). [2]刘洋.基于WinPcap的网络流量统计模块的设计[J].煤炭技术,2011(6).

[3]陈春梅,肖宇峰.基于WinPcap的网络数据包监测系统[J].信息与电脑:理论版,2010(2).

因篇幅问题不能全部显示,请点此查看更多更全内容