局域网网络流量捕获方法的分析与研究
2017-04-17鲁晓帆余运超
◆鲁晓帆 余运超 陈 灏
局域网网络流量捕获方法的分析与研究
◆鲁晓帆 余运超 陈 灏
(吉林建筑大学城建学院 吉林 130114)
本文主要分析了局域网网络流量捕获的几种方法,概述了WinPcap的组成结构及其相关重要函数的功能,介绍了局域网数据包捕获原理,利用WinPcap技术捕获数据包方法及实现步骤。
WinPcap;网络流量捕获;局域网
0 引言
局域网是在20世纪70年代末发展起来的,在计算机网络中占有非常重要的地位,局域网有着资源便于共享、系统扩展灵活、数据传输率高、较低的时延和较小的误码率等优点,它被广泛应用于公司、校园、及企事业单位等。随着网络技术的发展和计算机的普及应用,局域网是网络中重要的组成部分,因此对局域网的优化设计、性能优化以及故障查找是亟待解决的问题。
然而,要解决这些问题,就要对局域网的网络流量进行分析研究,根据流量的分布需要调整负载均衡,通过分析来控制流量,提高交换机的转发速率,及时调整网络的拓扑结构和网络设备的选取等等。
本文主要研究局域网网络流量捕获的几种方法,概述了WinPcap的组成结构、及其相关重要函数的功能,介绍了局域网数据包捕获原理,利用WinPcap技术捕获数据包方法及实现步骤。
1 网络流量捕获方法的研究
网络流量就是一段时间内在网络上进行传输的数据包的数量,网络流量就是网络业务的具体表现形式,通过网络流量的相关指标可以准确反映出当前网络性能状况。因此,有效的网络流量捕获技术显得尤为重要,通过对捕获到的网络流量信息进行详细的分析,可以优化网络性能,并最大限度地提高网络资源利用率。
网络流量捕获技术是网络流量监测的基础,也是优化网络性能、提高网络利用率的重要手段,并渗透到网络安全的各个领域。因此,日益成为人们研究的热门领域并取得一定的成果,目前现有的网络流量捕获方法主要有以下四种:
1.1 基于硬件嵌入的网络流量捕获方法
在硬件领域,将报文过滤技术加载到交换机或路由器上是实现对网络流量捕获的一种方法。专用硬件有着高效的处理速度等诸多优点,但是初期研发成本较高,而且不易实现。使用这种方法进行网络流量捕获的同时还增加了额外的流量,加大了网络负担。并且无法统计整个局域网的网络流量。
1.2 基于交换机镜像端口的网络流量捕获方法
在交换环境下可以通过在根节点使用带有镜像功能的交换机来实现数据包捕获功能,交换机进行数据包捕获的基本原理是设置把所有数据报都转发到某一指定端口上[1],在该端口上可以连接运行网络流量监测程序的主机。此种方法虽然能够实现网络流量的捕获,但是同样存在增加网络负担的缺点。捕获到的流量并不是真实的情况,其中有正常的网络流量外,还包括从其他交换机转发到镜像端口的那部分额外的网络流量。
1.3 基于SNMP监控的网络流量捕获方法
SNMP(Simple Network Management Protocol:简单网络管理协议)是一种基于TCP/IP参考模型的应用层互联网网管协议。此协议能对互联网中各种不同类型的设备进行监控和管理,并且对网络中存在的问题进行定位。还可以监控局域网网络流量,其主要优势在于:在获取信息的方面,可以直接从网络对象中获得流量,SNMP主要基于轮询的方式。其次,在传送层支持方面,SNMP基于无连接的UDP。此外,基于SNMP的方案可以保证网络流量测量系统的通用性和可重用性。管理人员可根据实际流量情况进行合理地设定采集时间间隔,定时捕获相关信息。
1.4 基于WinPcap、Libpcap函数库的网络流量捕获方法
Libpcap(Packet Capture Library)函数库可以有效的捕获到经过指定网络接口(只要经过该接口,目标地址不一定为本机)的数据包。由Berkeley大学Lawrence Berkeley National Laboratory研究院的Van Jacobson,Craig Leres和Steven McCanne编写,该函数库支持Linux,Solaris和BSD系统平台[2],是一种与系统无关、采用分组捕获机制捕获网络数据包的数据包捕获函数库。使用Libpcap编写的程序可自由地跨平台使用。而WinPcap是Libpcap的Windows版本,集成于Windows95,98,ME,NT,2000和XP操作系统的设备驱动程序,可以从网卡捕获原始数据,同时能够过滤、发送并且存储数据包。是当前使用最广泛的数据包捕获工具之一。
2 WinPcap概述
Winpcap(windows packet capture)是由意大利人Fulvio Risso和Loris Degioanni提出并实现的[3]。它是一个Windows平台下捕包和网络分析的体系架构,WinPcap是一套免费的基于Windows的网络接口API,WinPcap是集成于Windows操作系统的设备驱动程序,它可以从网卡捕获或者发送底层原始数据,同时能够过滤并且存储数据包。它工作于驱动(Driver)层,能以很高的效率进行底层网络操作。WinPcap的体系结构如图1所示,它包括三个部分[4]:
第一个模块NPF(Netgroup Packet Filter)是一个虚拟设备驱动程序文件。它直接与网卡驱动程序进行交互,获取在网络上传输的原始数据包。
第二个模块packet.dll为win32平台提供了一个公共的接口。Pactet.dll可以执行如获取适配器名称、动态驱动器加载以及获得主机掩码及以太网冲突次数等低级操作。不同版本的Windows系统都有自己的内核模块和用户层模块,Packet.dll可以解决这些不同。调用Packet.dll的程序可以运行在不同版本的Windows平台上,而无需重新编译。
第三个模块Wpcap.dll提供了一组功能强大的函数,利用这些函数,可以不去关心适配器和操作系统的类型。Wpcap. dll含有诸如产生过滤器、定义用户级缓冲以及包注入等高级功能。其中packet.dll直接映射了内核的调用;Wpcap.dll提供了更加友好、更加强大的函数调用。
WinPcap的功能主要包括以下四个方面:
(1)捕获网络数据包。这是Winpcap函数库的主要功能。它负责捕获在网络中传输的所有数据包,而不考虑数据包的源地址以及目的地址。
(2)过滤数据包。当捕获到数据包后,Winpcap会在将数据 包发往应用程序之前,对数据包进行过滤。具体过滤原则是由用户按照需要事先定义好的过滤规则进行数据包过滤的,不符合过滤规则的数据包将被过滤掉。
(3)发送原始数据包。将捕获到的数据包发送给应用程序,以便应用程序进一步分析。
(4)收集网络通信过程中的统计信息。
图1 WinPcap的体系结构
3 网络数据包捕获的原理
以太网(Ethernet)具有共享介质的特征,当网络适配器设置为监听模式(混杂模式,Promiscuous)时,由于采用以太网广播信道争用的方式,使得监听系统与正常通信的网络能够并联连接,并可以捕获任何一个在同一冲突域上传输的数据包。IEEE802.3 标准的以太网采用的是持续 CSMA 的方式,正是由于以太网采用这种广播信道争用的方式,使得各个站点可以获得其他站点发送的数据。以太网是当今现有局域网采用的最通用的通信协议标准,局域网运用这一原理使信息捕获系统能够拦截的我们所要的信息,这是捕获数据包的物理基础[5]。
4 WinPcap的主要函数及数据包捕获流程
使用WinPcap函数库进行数据包捕获的相关函数及流程如下:
(1)首先,获得网络接口设备列表并打开指定端口。函数pcap_findalldevs_ex(),该函数用来获取当前网络列表的信息,并将获得列表的详细信息都保存一个链表中,该链表的每一个节点都是采取pcap_if结构的,并且网卡信息的详细信息就保存在每个节点中。
(2)其次,设置过滤规则。用户可以根据需要设置相应的过滤规则,实现过滤规则的设置关键是通过对pcap_compile(pcap_t*p,char *str,struct bpf_program *fp,int optimize,bpf_u_int32 netmask)和pcap_setfilter(pcap_t *p,struct bpf_program *fp)两个函数进行正确的配置。
(3)再次,捕获并解析网络数据包。WinPcap为了满足不同的需求情况提供了几种捕获数据包的函数以适应各种需要,用户可以根据自身的情况选择合适的函数。pcap_loop(pcap_t *p,pcap_handler callback,int cnt,u_char *user)循环捕获网络数据包。
(4)最后,关闭WinPcap相关联的文件并释放相关资源:pcap_close()。
5 结束语
通过对局域网网络流量捕获方法的比较与分析,介绍4种网络流量捕获方法,展示了WinPcap 内部结构及实现原理等知识,说明了WinPcap的主要函数及数据包捕获流程,为下一步对数据包进行捕获和协议分析打下理论基础,具有一定的理论研究意义和实际应用价值。同时可以根据功能需求以此研究开发独立的网络协议分析系统,进行局域网网络流量的分析及性能优化。
[1]王月辉.基于WinPcap的网络数据捕获和分析系统的研究与实现[D].沈阳:沈阳工业大学,2007.
[2]刘格非,裴昌幸,朱畅华,权东晓.基于Linux的以太网数据包捕获方法[J].现代电子技术,2006.
[3]Loris Degioanni. Development of an architecture for packet capture and network traffic analysis[M].http:// netgroup-serv.polito.it,2000.
[4]The Winpcap Team. The Winpap manual and tutorial for Winpcap 4.0 [EB/OL]. Http://www.Winpcap.org /docs/docs_ 40/html/main.html,2006.
[5]徐美华,王振旗,韩秀娟.利用ARP欺骗实现网络捕包[J].网络安全技术与应用,2005.
吉林省大学生创新创业训练计划项目(2016263363)。