小型网络流量统计系统.docx
- 文档编号:8940095
- 上传时间:2023-05-16
- 格式:DOCX
- 页数:50
- 大小:178.83KB
小型网络流量统计系统.docx
《小型网络流量统计系统.docx》由会员分享,可在线阅读,更多相关《小型网络流量统计系统.docx(50页珍藏版)》请在冰点文库上搜索。
小型网络流量统计系统
摘要
在电脑日益普及的今天,小型局域网络随处可见,如学校、医院、办公室等场所都在使用。
然而随着网络技术的飞速发展,线路容量和设备处理能力的不断提升,网络的传输类型已经从简单的低带宽的文件传输、文字传输等转变为数据、音频和视频等大流量业务,并且用户对业务的可靠性、实时性和安全性的要求也越来越高。
小型局域网络虽然不存在较大的安全问题,但是其大流量的数据传输很容易造成网络故障或阻塞,给网内的用户带来不必要的影响。
因此对小型局域网络而言,安装一个简单而有效的网络流量监测统计程序是十分必要的。
论文主要介绍了网络流量统计的几种方法以及网络流量统计编程使用的几种技术,其中重点介绍最新出现的一种网络数据捕获开发包——WinPcap及其使用方法。
关键词:
局域网,网络流量统计,WinPcap
Abstract
Usingthecomputerwhichispopularyatthistime,thesmalllocalareanetworkgoeseverywhereobviously-theschool,thehospitalandtheofficewhichareallseenitsform.howeveralongwiththenetworktechnologywhichisrapidingdevelopmently,thelinecapacityandtheequipmenthandlingabilityunceasingpromote,thetypeofthenetworktransmissionhavechangedfromthefiletransferandthewritingtransmissionwhicharethesimplelowbandtothegreatcurrentcapacityservicewhichincludesthedata,theaudiofrequencyandthevideofrequency,andtheuserrequesttheservicewhichincludestheservicereliability,timeliness,thesecuremorehigh.
Thesmalllocalareanetworkdoesnothavethebiggersecurityproblem,butitsdatatransmissionwhichisgreatcurrentcapacityisveryeasytomakethenetworkbreakdownorblock,anditbringsthethenonessentialinfluencefortheuserinthenet,sospeakingofthesmalllocalareanetwork,beinginstalledthesimpleandeffectivenetworkcurrentcapacitymonitorstatisticsprocedureisextremelyessential.
Thisarticlemainlyintroducedsomemethodsofthenetworkcurrentcapacitystatisticaswellasseveralkindsoftechnologywhichisthenetworkcurrentcapacitystatisticsprogramminguse,andthiskindofnetworkdatacapturedevelopmentpackageisWinPcapwhichmostnewlyappearsthekeyintroduction.Anditspreliminaryapplicationmethods.
KeyWords:
localareanetwork,networkcurrentcapacitystatistics,WinPcap
目录
摘要I
AbstractII
目录III
第一章序论1
1.1背景介绍1
1.2相关技术的分类1
1.3硬件检测统计1
1.3.1基于流量镜像协议分析1
1.3.2基于硬件探针的检测技术1
1.3.3基于snmp的流量检测技术2
1.3.4基于netflow的流量检测技术2
1.4软件检测统计技术2
1.4.1windowssockets规范2
1.4.2libpacap及winpcap技术3
第二章winpcap技术4
2.1winpcap简介4
2.2winpcap的基本使用方法和基本功能5
2.2.1winpcap的使用方法5
2.2.2winpcap的基本的功能5
第三章网络数据捕获机理7
3.1网络数据获取机理7
3.1.1数据捕获和还原层8
3.1.2数据预处理层8
3.1.3应用处理层8
3.2winpcap的总体结构8
3.2.1网络组包过滤器9
3.2.2winpcap的过滤机制9
3.2.3packet.dll和winpcap.dll9
3.3基于winpcap的网络数据获取流程10
3.3.1获取NIC的有关信息10
3.3.2启动网络侦听10
3.3.3设置过滤条件10
3.3.4进行循环捕获11
第四章网络流量数据统计程序设计12
4.1利用winpcap进行数据捕获和过滤12
4.2网络适配器的选择15
4.3程序运行的主要界面设计16
第五章程序测试17
5.1软件测试17
5.1.1白盒测试17
5.1.2黑盒测试18
5.2测试总结18
结论19
参考文献20
致谢21
附录22
第一章序论
从网络出现的那天起,对于网络流量的统计就是每个网络管理人员所必须做的工作。
网络流量的统计不仅能够对网络的安全有所帮助,也能够对网络维护起到很大的作用。
对于网络流量的控制能有效的避免因大量数据的同时传送而导致的网络拥塞、网络断开等故障。
本文主要针对小型局域网的流量统计及其相关技术进行介绍。
1.1背景介绍
随着电脑的普及,网络已经随处可见,而小型局域网以其简单、易组、廉价、实用性高的特点,成为学校、办公室、家庭等小型场所组网的首选。
而这其中由于网络同一时刻的流量过大,而造成的网络堵塞乃至断网的问题是不可忽视的。
为了解决上述问题,一款直观、易用的网络流量统计工具是必不可少的。
现在实用的网络统计工具很多,但是究竟那种最合适于小型局域网——以下将对这个问题进行分析,为后期的设计做出准备。
1.2相关技术的分类
通过对网络流量统计方法的学习,可知网络流量统计技术主要分为两大类:
硬件检测统计、软件检测统计。
下面分别介绍一下这两类技术。
1.3硬件检测统计
硬件检测统计技术主要是通过使用诸如路由器,交换机等网络设备来实现流量的统计,其优点在于稳定、精确、不容易出现故障,适用于大、中型网络以及对稳定性要求很高的网络。
以下是其常用方法及原理介绍:
1.3.1基于流量镜像协议分析
流量镜像(在线TAP)协议分析方式是把网络设备的某个端口(链路)流量镜像给协议分析仪,通过7层协议解码对网络流量进行监测。
与其他3种方式相比,协议分析是网络测试的最基本手段,特别适合网络故障分析。
缺点是流量镜像(在线TAP)协议分析方式只针对单条链路,不适合全网监测。
1.3.2基于硬件探针的检测技术
硬件探针是一种用来获取网络流量的硬件设备,使用时将它串接在需要捕捉流量的链路中,通过分流链路上的数字信号而获取流量信息。
一个硬件探针监视一个子网(通常是一条链路)的流量信息。
对于全网流量的监测需要采用分布式方案,在每条链路部署一个探针,再通过后台服务器和数据库,收集所有探针的数据,做全网的流量分析和长期报告。
与其他的3种方式相比,基于硬件探针的最大特点是能够提供丰富的从物理层到应用层的详细信息。
但是硬件探针的监测方式受限于探针的接口速率,一般只针对1000M以下的速率。
而且探针方式重点是单条链路的流量分析,Netflow更偏重全网流量的分析。
1.3.3基于snmp的流量检测技术
基于SNMP的流量信息采集,实质上是测试仪表通过提取网络设备Agent(数字客户端代理程序)提供的MIB(管理对象信息库)中收集一些具体设备及流量信息有关的变量。
基于SNMP收集的网络流量信息包括:
输入字节数、输入非广播包数、输入广播包数、输入包丢弃数、输入包错误数、输入未知协议包数、输出字节数、输出非广播包数、输出广播包数、输出包丢弃数、输出包错误数、输出队长等。
相似的方式还包括RMON。
与其他的方式相比,基于SNMP的流量监测技术受到设备厂家的广泛支持,使用方便,缺点是信息不够丰富和准确,分析集中在网络的2、3层的信息和设备的消息。
SNMP方式经常集成在其他的3种方案中,如果单纯采用SNMP做长期的、大型的网络流量监控,在测试仪表的基础上,需要使用后台数据库。
1.3.4基于netflow的流量检测技术
Netflow流量信息采集是基于网络设备(Cisco)提供的Netflow机制实现的网络流量信息采集。
Netflow为Cisco之专属协议,已经标准化,并且Juniper、extreme、华为等厂家也逐渐支持,Netflow由路由器、交换机自身对网络流量进行统计,并且把结果发送到第3方流量报告生成器和长期数据库。
一旦收集到路由器、交换机上的详细流量数据后,便可为网络流量统计、网络使用量计价、网络规划、病毒流量分析,网络监测等应用提供计数根据。
同时,Netflow也提供针对QoS(QualityofService)的测量基准,能够捕捉到每笔数据流的流量分类或优先性特性,而能够进一步根据QoS进行分级收费。
与其他的方式相比,基于Netflow的流量监测技术属于中央部署级方案,部署简单、升级方便,重点是全网流量的采集,而不是某条具体链路;Netflow流量信息采集效率高,网络规模越大,成本越低,拥有很好的性价比和投资回报。
缺点是没有分析网络物理层和数据链路层信息。
Netflow方式是网络流量统计方式的发展趋势。
1.4软件检测统计技术
软件检测统计技术主要是通过使用软件来实现流量的统计,这其中涉及到了对本机网卡的数据捕获技术等等。
使用软件检测统计技术的优点在于方便、简单、廉价,它十分适合小型网络的需要(本文的重点就是软件检测统计技术的几种类型)。
以下就是软件方面涉及到的部分技术及其分类。
1.4.1windowssockets规范
90年代初,由Microsoft联合了其他几家公司共同制定了一套WINDOWS下的网络编程接口,即WindowsSockets规范,它不是一种网络协议,而是一套开放的、支持多种协议的Windows下的网络编程接口。
Winsock就是WindowsSocket的简称,简单的说,Winsock就是Windows应用程序与TCP/IP之间的通信界面。
在Windows中,利用Winsock通信需经过几个步骤:
初始化Winsock、创建套接字、建立会话、传送数据、中止会话、中止Winsock。
Winsock既可以提供机器间的通讯,又可提供Windows进程间的通信。
1.4.2libpacap及winpcap技术
libpcap和winpcap都是专业网络数据包捕获开发包,其原理也基本相同,不同之处在于libpcap主要适用于Unix或Linux,而winpcap则适用于windows平台。
由于本设计主要就是在windows环境下开发,所以将着重介绍winpcap。
WinPcap是Windows平台下一个专业网络数据包捕获开发包,是为Libpcap在Windows平台下实现数据包的捕获而设计的。
在设计WinPcap时参照了Libpcap,使用方法与LibPcap相似。
WinPcap有三个模块构成:
第一个模块NPF(NetgroupPacketFilter),是一个虚拟设备驱动程序文件。
它的功能是过滤数据包,并把这些数据包原封不动地传给用户态模块,这个过程中包括了一些操作系统特有的代码。
第二个模块packet.dll是一组用户级的函数库,为win32平台提供了一个公共的接口。
不同版本的Windows系统都有自己的内核模块和用户层模块。
Packet.dll用于解决这些不同。
调用Packet.dll的程序可以运行在不同版本的Windows平台上,而无需重新编译。
第三个模块数据包高级驱动程序库(wpcap.dll)与操作系统无关,它提供了更加高层、抽象的函数,含有诸如产生过滤器,用户级缓冲等高级功能。
比起WindowsSockets规范,winpcap技术相对更简单、易懂、适合编程。
本设计就是基于winpcap技术的,所以将在后面做更详细的介绍。
第二章winpcap技术
2.1winpcap简介
WinPcap是由意大利人FulvioRisso和LorisDegioanni等人提出并实现的。
WinPcap是在Win32环境下用于实现高效数据包捕获的开发包,它的主要思想来自于UNIX系统中著名的BSD包捕获结构,具有良好的结构和性能。
WinPcap能实现以下四项功能:
捕获原始数据包,包括共享网络上各主机发送/接收的以及相互之间交换的数据包;在数据包发往应用程序之前,按照自定义的规则将某些特殊的数据包过滤掉;在网络上发送原始的数据包;收集网络通信过程中的统计信息。
WinPcap是由伯克利分组捕获库派生而来的分组捕获库,它是在Windows操作平台上来实现对底层包的截取过滤。
WinPcap为用户级的数据包提供了Windows下的一个平台。
WinPcap是BPF(网络检测工具)模型和Libpcap函数库在Windows平台下网络数据包捕获和网络状态分析的一种体系结构,这个体系结构是由一个核心的包过滤驱动程序,一个底层的动态连接库Packet.dll和一个高层的独立于系统的函数库Libpcap组成。
底层的包捕获驱动程序实际为一个协议网络驱动程序,通过对NDIS(网络驱动接口规范)中函数的调用为Win95、Win98、WinNT、和Win2000提供一类似于UNIX系统下BerkeleyPacketFilter(伯克利小包过滤器)的捕获和发送原始数据包的能力。
Packet.dll是对这个BPF驱动程序进行访问的API接口,同时它有一套符合Libpcap接口(UNIX下的捕获函数库)的函数库。
WinPcap的结构图如图2-1。
前面提到过WinPcap包括三个部分:
第一个模块NPF(NetgroupPacketFilter)、第二个模块packet.dll、第三个模块Wpcap.dll。
packet.dll和Wpcap.dll:
packet.dll直接映射了内核的调用。
Wpcap.dll提供了更加友好、功能更加强大的函数调用。
WinPcap的优势提供了一套标准的抓包接口,与libpcap兼容,可使得原来许多UNIX平台下的网络分析工具快速移植过来便于开发各种网络分析工具,充分考虑了各种性能和效率的优化,包括对于NPF内核层次上的过滤器支持,支持内核态的统计模式,提供了发送数据包的能力。
图2-1WinPcap的结构图
2.2winpcap的基本使用方法和基本功能
Winpcap提供了以下的功能:
捕获原始的数据包,设置filter,只捕获自己敢兴趣的数据包,方便的把捕获的数据包输出到文件和从文件输入,发送原始的数据包,统计网络流量。
2.2.1winpcap的使用方法
下载winpcap的安装包,程序员开发包后。
首先执行安装包,这样机器就能运行winpcap程序了,之后解压开发包,在VC的option的include和lib中加入winpcap的include和lib,同时在编程的时候在程序中加入#include
WPCAP,HAVE_REMOTE.导入winpcap.lib库就可以编写winpcap程序了。
2.2.2winpcap的基本的功能
1.捕获数据包:
枚举所有的可用的设备[pcap_findalldevs_ex](可选),通过名字打开一个设备[pcap_open()]在这里可以打开一个文件,只是在打这个文件之前需要通过pcap_createsrcstr创建相应的namestring,设置Filter[pcap_compile,pcap_setfilter](可选),捕获数据,有几种捕获数据的方法(捕获数据的数据都是最原始的数据包,即包含数据链路层的数据头),是以回调的方式[pcap_loop,pcap_dispatch()],这两种方法基本相同,底层收集数据包,当满足一定的条件(timeout或者缓冲区满),就会调用回调函数,把收集到的原始数据包s,交给用户。
他们返回的数据缓冲区包含多个包pcap_next_ex()的方式
每当一个包到到达以后,pcap_next_ex就会返回,返回的数据缓冲区里只包涵一个包。
2.发送包:
Winpcap中有发送单个包和发送多个包的方法。
这里只说说发送单个包,通过名字打开一个设备[pcap_open],自己构造一个原始数据包(这个数据包会不经过任何处理就发送出去,所必须把包中的各个字段设置好。
另外这个数据包是包含数据链路层报头的),使用pcap_sendpacket()发送数据包。
3.统计网络流量:
通过名字打开一个设备[pcap_open]通过read_timeout来设置统计的时间间隔,设置filter[pcap_compile,pcap_setfilter](可选),设置设备的为统计模式[pcap_setmode(MODE_STAT);],开始统计,pcap_loop/pcap_dispatch(),在回调函数中的参数中就包含了统计信息,如下
aspectratio="t"v:
ext="edit">
由此可见winpcap在网络数据处理方面的功能是十分丰富的,本设计主要就是用到了它的网络流量统计功能。
第三章网络数据捕获机理
网络发展至今,对于网络数据的捕获技术也是日新月异,从早期的纯硬件方式到后来的软件方式,数据的捕获变的越来越容易,如今随着winpcap开发包的出现,网络数据的捕获变的更加简单、易操作了。
3.1网络数据获取机理
在Windows操作系统中,NDIS起着十分重要的作用,它是网络层协议与网络接口适配器(NIC)之间的桥梁纽带。
所有的网络功能调用都通过NDIS接函数访问网卡来实现,NDIS处于Miniport驱动程序的上面。
Miniport相当于IEEE802标准的数据链路层的介质访问控制(MAC)子层,而NDIS相当于逻辑连接控制(LLC)子层。
当数据包达到网络适配器时,网卡驱动程序将数据通过NDIS发送给Miniport驱动程序,然后Miniport驱动程序通过NDIS发送给传输驱动程序,最后达到上层应用程序。
同样,当要发送数据时,应用程序将数据发送给传输驱动程序,传输驱动程序通过NDIS发送给Miniport驱动程序,然后Miniport驱动程序通过NDIS发送给网卡驱动程序,最后发送到物理链路上。
OSI通信模型与NDIS的关系如图3-1所示。
图3-1OSI通信模型与NDIS的关系
应用程序对网卡的访问必须经过NDIS接口实现,NDIS向上层提供一个协议接口,向下提供一个miniport接口。
NDIS驱动程序通常需要向NDIS接口注册一组进程,NDIS接口在适当的时候能调用注册进程,驱动程序就可以通过这些进程进行相应的数据处理。
Windows允许多个传输驱动程序处于NDIS的最高层,典型的TCP/IP实现模块tcpip.sys就位于这一层,传输驱动程序可以注册为传输提供者,从而为上层的TDI客户提供服务,TDI客户与传输驱动之间采用特定的机制进行通信。
对于获取网络上的传输数据,并对数据进行处理,一般可将应用系统结构划分为三个处理层次:
数据捕获和还原层、数据预处理层、应用处理层。
3.1.1数据捕获和还原层
由数据获取模块和底层打包模块组成。
数据获取负责控制网卡,接收网络上的所有报文,其输入为网卡接收的数据流,输出为打包模块;打包模块负责将接收到的报文根据不同的应用,按源IP地址、目的IP地址、源端口号、目的端口号进行数据还原。
对于大流量的数据处理,可对接收到的数据进行分类打包,存入数据缓冲区或数据库,方便多线程的处理。
3.1.2数据预处理层
由分布控制模块和线程处理模块组成。
分布控制模块负责与线程队列通信,以及从经底层处理模块处理后的存在缓冲区或数据库中的数据进行提取,并根据不同的应用需求进行预处理,同时按照一定的分布式计算方法将其放入本机检索队列或后援检索队列或解压队列中,待进一步基于应用的处理。
3.1.3应用处理层
负责实现和用户之间的交互。
根据不同的应用进行数据的内容分析和数据展示,将数据包去掉包头,读取内容并进行分析。
3.2winpcap的总体结构
通过之前的介绍我们知道WinPcap开发包分为三个相对独立的部分:
网络组包过滤器(NetgroupPacketFilter,NPF)、低级动态连接库(Packet.dll)、高级系统无关库(Wpcap.dll),其总体结构如图3-2所示。
图3-2WinPcap的总体结构
以下是对其三部分的更详细的说明,能让我们进一步了解这三部分的具体工作过程以及它们相互之间的关系。
3.2.1网络组包过滤器
它是运行于操作系统内核中的驱动程序,它直接与网卡驱动程序进行交互,获取在网络上传输的原始数据包。
NPF的结构来源于BPF(BerkleyPacketFilter),BPF是用于UNIX系统中的一种网络监控工具,它使用由UNIX操作系统提供的内核级别的可访问未处理的原始网络数据的功能。
BPF有两个部分,网络开关(networktap)和包过滤机(packetfilter),networktap从网络设备驱动程序中收集数据拷贝并转发到监听程序,networkfilter决定是否接收该数据包以及该数据包方式。
实际上NPF是BPF的一个虚拟机,但NPF不是由操作系统提供而是WinPcap的一部分,其主要任务是从网络系统中获取数据链路层的数据帧,并将它转发给上层模块。
NPF与操作系统有关,WinPcap开发组针对不同的Windows操作系统提供了不同版本的NPF。
在Win95/98/ME系统中,它以VxD文件形式存在,在WindowsNT和Windows2000系统中,它以SYS文件形式存在。
该模块提供了捕获数据包以及发送数据包的基本功能,此外还提供了一些高级功能,如数据包过滤系统和检测引擎。
NPF通过NDIS和NIC(网络接口卡)进行数据交换,WinPcap允许同时运行多个NPF。
当有新的数据到达网卡,NIC就会通知BPF的networktap,BPF开始接收数据,并送到不同的networkfilter,由networkfilter判断
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 小型 网络流量 统计 系统