基于winpcap的Web用户业务统计
2014-04-29吴彦伦
吴彦伦
【摘要】在网络数据包分析中,基于Winpcap的抓包技术的应用最为广泛。Winpcap提供了一套公共的网络访问系统,可适用于32/64位的操作平台上解析网络封包。Web数据包是网络数据包的一个重要组成部分,大量的数据来源于Web用户的业务请求。本课题基于Winpcap开发了一套基于windows操作系统的数据包捕获和分析系统。系统在VS2010 环境下借助WinPcap提供的各个接口函数对网卡进行编程进而對网络IP数据包进行捕获,并通过数据包解析,提取出用户行为并统计。
【关键词】winpcap;数据;捕获;解析;用户行为
一、前言
网络技术的飞速发展产生了大量的网络业务。持续增加的网络业务和网络用户产生了大量的网络流量,对网络数据的分析越来越迫切。Winpcap是针对Win32平台上的抓包和网络分析的一个架构。它包括一个核心态的包过滤器,一个底层的动态链接库(packet.dll)和一个高层的不依赖于系统的库(wpcap.dll)。第一个模块是Netgroup Packet Filter,NPF,它是一个虚拟设备驱动程序文件。它的功能是过滤数据包,并把这些数据包原封不动地传给用户态模块。第二个模块packet.dll,它为win32平台提供了一个公共的接口。调用Packet.dll的程序可以运行在不同版本的Windows平台上,而无需重新编译。 第三个模块 Winpcap.dll,它是不依赖于操作系统的。它提供了更加高层、抽象的函数。
网络数据包过滤器是Winpcap的核心部分,它是Winpcap完成困难工作的组件。它处理网络上传输的数据包,并且为用户级提供捕获、发送和分析的性能。通过Winpcap捕包技术有效的捕获网络数据包,通过网络协议对原始数据包进行逐层解析,保留IP数据包,抽取出Web业务请求,完成对用户业务的统计。
二、Winpcap捕获原始网络数据包
以太网网络是一种总线型网络,采用广播信道的争用方式,当将网卡设备的接入模式设置为混杂模式时,系统便可以与正常的通信网络并联连接,捕获处于同一冲突域上传输的任意数据包。在混杂模式下,网卡将接受同一网络内所有主机所发送的数据包,这样就可以到达对所有数据包进行捕获的目的。
系统采用网络数据包过滤器(NPF)来处理网络上传输的数据包。NPF提供一个数据包过滤器,用户通过自定义过滤器结合wpcap.dll过滤捕获的网络数据包,并将过滤后的数据包拷贝给监听程序。同时,NPF还提供一个循环缓冲区,用来保存数据包以避免数据丢失。此外,缓冲区以队列插入的方式来保存数据包,提高数据的存储效率,并以组的方式将数据包从NPF缓冲区拷贝给用户应用程序。
通过Winpcap捕获原始网络数据包,存储到镜像中,为后面数据分析存储数据基础。原始网络数据包遵循以太网帧结构。
三、原始网络数据报解析
Winpcap捕获的原始网络数据报,其头部也就是以太网数据包头部包含了该数据包传递的MAC信息和数据包信息:目的MAC地址、源MAC地址、数据包长度等字段信息。在数据链路层对数据包进行关键字段信息的分析。分析原始数据包包头(14字节),分析出该数据包传递的MAC地址和协议类型。如图1所示。提取Type字段信息为0x0800的数据包,即IP数据包。
在网络层去掉原始数据包包头,得到IP数据包。并对IP数据包进行解析。根据IP数据包协议,在IP数据包头部(20字节)进行相关字段的解析,提取出该数据包传输的源IP地址和目的IP地址。最后根据IP数据包包头的“协议代码”字段隔离出TCP数据包。
图1 IP数据包解析信息
根据IP协议对数据包包头解析,能准确分离出该数据包在网络层传输的服务器IP地址(180.97.33.67)和客户端IP地址(192.168.0.2)。并通过“Protocol”字段获取数据包在传输层采用的传输协议类型。最后提取出“Protocol”字段值为“6”,也就是采用TCP传输协议的数据包。
在传输层去掉IP数据包头部,得到TCP数据包。并对其进行数据包解析。根据TCP协议,对TCP数据包相关字段进行解析,如图2所示。提取出该TCP数据包传输的源端口号,目的端口号,应用层网络协议和数据长度。根据对TCP数据包重要字段的提取,可以分离出该数据包携带的数据部分。根据目的端口号和源端口号判断该数据包的应用层协议,保留端口号为“80”的数据包。端口号为“80”表明该数据包在应用层采用的是http协议。
图2 TCP数据包包头信息
从图2可以看出,该TCP数据包传输的源端口号为12516,目的端口号为80,表明该数据报应用层采用的是http协议,并可以通过“TCP seqment data”字段得知该数据包携带的数据部分长度为808 bytes。
四、Web业务抽取
网络用户在通过浏览器访问网页时产生了大量的Web业务。这些通过浏览器产生的Web业务所带来的网络数据包都是属于http协议的。通过上述方法,使用基于Winpcap的网络捕包系统捕获基于http协议的数据包,并进行详细解析。
在Http协议中,Client/Server之间的会话总是有客户端通过建立连接和发送HTTP请求包开始的。HTTP请求包(这里指GET请求包)由三部分组成:方法-URI-协议/版本;请求头;请求正文信息。
在这些Web业务数据中,网络用户在向服务器发送连接请求后,进行三次握手,成功之后,用户正式向服务器端发送数据请求数据包。用户在请求Web业务时,发送的是“GET”请求包。则只需要在众多http协议数据包中提取出包含Get请求的数据包便可以实现Web用户行为的统计。如图3所示为,用户访问“www.baidu.com”时,发送的某一个Get请求包的一部分。
从图3可以看出该用户在请求Web业务时,从“GET”项看出,请求的内容是:“/img/baidu_sylogo1.gif”,从“HOST”项和“Referer”项可以看出该访问的服务器域名是:“www.baidu.com”。至此,提取出了网络用户此次Web请求的业务内容。
通过对Web业务访问的所有GET请求包进行数据包分类,关键字段的解析和提取。根据不同的业务请求“host”和域名地址“referer”访问以及业务请求内容“uri”,对其进行有效的分类。
五、结论
通过基于Winpcap技术的网络捕包系统,抓取网卡设备处的所有IP数据包,并通过IP协议,TCP协议和HTTP协议对原始数据包进行逐层解析,提取出每一个用户的GET请求数据包,并解析出该请求包访问的业务和服务器域名地址,实现对局域网用户所有Web业务的统计和分析。
如图4所示,展示了系统对该本机网卡设备的长时间捕包,并分析提取出的所有Web请求的业务的统计和分析。通过mysql数据库存储每一个GET请求包的重要字段信息,最终通过mysql数据包操作,实现对所有数据包的分类。
如图4所示,统计了每一个GET请求包的四元向量<源IP,目的IP,源端口,目的端口>的重要传输信息;“ur”字段信息标注了该请求的业务内容;“host”和“referer”表明了该业务请求的内容的来源。
通过该方法将所有Web业务进行详细的分类和归纳,为网络大数据的分析提供基础。
参考文献
[1]陈淼,谭顺华.基于数据包的三层挖掘技术分析研究.DOI:
10.3969/J.issn.1001.
[2]贾明正.基于Winpcap的网络流量统计与检测.1007-3973(2012)003-075-02.
[3]王伟,王韬.基于Winpcap的数据包捕获及应用.1000-7024(2008)07-1649-03.