网络数据流量图形化分析系统实现
2013-04-29胡先智梁艳
胡先智 梁艳
摘 要:为了实时监测网络流量,本文实现了一个网络数据流量图形化分析系统。该系统采用数据库存储流量数据,用Visual C++.NET设计实现界面,利用winpcap软件对网络数据流量进行分析,能较好地满足网络数据流量实时监测的需求。
关键词:流量监测;winpcap;网络数据流量分析
1 引言
随着互联网络的迅速发展,网络数据流量特征的研究近年来引起了人们广泛关注。网络数据流量分析系统的定位重点在对网络流量的流量、流向、协议的细节监视和分析,网络安全监视。在容量规划、入侵检测和路由优化时,网络管理员需要知道网络的数据流量情况和尽量多的测量信息。
2 关键技术
⑴数据流。数据流是指输入数据a1,a2,..按顺序到达。这些数据描述了一个信号A。A是一个一维函数A:[1...N]→R2。模型取决于ai如何描述A。本文把数据流技术和传统的网络管理技术相结合, 取得了较好的应用效果。
⑵流量监测原理。网络流量监测有主动监测和被动监测两种不同的实现方法。主动测量方法是向被测网络中注入附加的“探测流量”并进行返回数据的采集来实现监测的方法,该如果处理不当,也会给网络增加额外的负荷,影响测量结果的客观性,甚至使测量结果不准确,产生Heisenburg效应。而被动测量方法是在网络的某点采集、记录并且分析网络的流量信息来实现测量的方法。被动测量可以完全消除附加的“探测流量”和Heisenbutg 效应,这是被动测量的优点,但存在可能会涉及隐私和安全问题的不足。由于Internet上大多数数据传输是不加密的,鉴于被动监测的优点,本系统采用基于数据包捕获的被动监测技术。
⑶winpcap。在网络管理与安全防护中,对网络数据流量进行分析,是非常重要的一个任务,从防火墙到攻击检测系统,都会用到类似功能。开发此类软件过程相当复杂。而winpcap (indows packet capture)是windows平台下一个免费公共的网络访问系统。它提供了以下的各项功能:
1>捕获原始数据报;2>按照自定义的规则将某些特殊的数据报过滤掉;3>在网络上发送原始的数据报;4>收集网络通信过程中的统计信息。
3 系统架构
无论是基于网络安全,还是基于网络计费系统的改进,网络数据流量分析无疑是必要的,人们对网络依赖很强。网络数据流量系统的架构包括三层:数据层(浏览统计、数据库管理)、访问应用层、展现层(在线统计器、流量统计器、网络速度监视器)。
4 系统设计
⑴网络监视器。网络监视器是监视网络通信的,其主要工作有三项:winpcap捕捉包、包分析、记录。
1)winpcap捕捉包。在网络包捕获系统的实现中,采用的是WINPCAP包捕获应用系统框架。网络监听模块将网络接口设置為混乱模式,将网络上传输的数据包截取下来,供协议分析模块使用。由于效率的需要,有时要根据设置过滤网络上的一些数据包,如特定IP,特定MAC地址、特定协议的数据包等。网络监听模块的过滤功能的效率是该网络监听的关键,因为对于网络上的每一数据包都会使用该模块过滤,判断是否符合过滤条件。
为提高效率,数据包过滤应该在系统内核里来实现。获得数据包之后,如果在捕获过程结束后创建了两个线程实现对捕获数据的实时性处理。
2)包分析。包分析指将捕捉来的数据报进行分析。由于要进行流量统计需要很多必要的信息,作为统计依据,如IP地址、协议类型等。其中,数据长度可由函数调用返回的内容得到而且此时得到的是实际在网上的包长度。
3)记录。通过包的分析后,将有用的信息记录到文件中去。其中包括目的IP、源IP,数据长度、协议类型、以及为了统计方便需要的时间信息。
⑵流量统计器。流量统计器,是对流量监视器的记录结果进行统计,将网络监视器的记录文件内容读出,并根据网址分割标准及源和目的地分别统计出流向网外的国内和国外流量,并将结果按照日期分别存储在数据中。
5 系统实现
⑴捕捉包的实现。包捕捉作为一个独立的应用程序运行,它从网上截获包,并以文件形式将有用信息记录下来,为流量统计准备统计的原始依据。
⑵在线统计的实现。ping利用了原始套接口技术发送ICMP回射请求,并接收工CMP回射应答。Socket是CP/IP编程的底层API(网络编程接口)。在实现ping后可以将其作为一个函数调用,就很容易实现在线统计。
⑶图形界面的实现。采用Visual C++.NET实现流量图形化界面,主要是使用GDI函数画图,首先要得到一个设备描述句柄或一个可用的CDC设备描述表对象,WIN32API提供了BeginPaint()和GetDC两个函数,用于获得指定窗口的设备描述句柄。MFC的窗口类CWnd类也提供了两个当前窗口的CDC对象的函数BeginPin()和GETDC();也可以在窗口处理函数中直接用CDC的派生类,最终实现流量图形化。
6 总结
为了能够满足网络管理员对于网络实时监控的需求,本文建立一个实时的网络流量分析工具,并且给出了一种基于数据包捕获的被动监测技术,为实时监控网络流量提供了一条新的思路。