基于概率统计分析的应用流特征分析

任何事物都有它不利的一面,网络也是如此,网络的障碍多种多样,这其中最难避免的莫过于网络的异常流量,它是针对某一特定端口发起犹如洪水般的非正常的流量,导致网络瘫痪,网络的瘫痪给我们带来的巨大损失是可以想象的,客户之间无法通信,商务无法进行,直接给我们带来巨大的经济损失。这样的例子在世界各国都有发生,可见网络的稳定对我们来说是何等的重要。因此,我们利用各种工具,各种安全策略来监控、维护我们的网络,使网络故障在第一时间被发现,及时地采取合理快速的方法定位故障并处理,使之给我们带来的经济损失最小。

网络数据的传输是高速的,通常人们考察网络性能总是以计算机数据包来作为衡量和测试的手段,因此,模型也在此基础上建立。将计算机网络在物理上当作一维的管道,数据的传输都在一维的管道中进行。可以将高速网络中一个一个包的传输想象为汽车在高速公路上运行,包具有速度,包和包之间由于到达时间和传输设备延迟的原因有一定时间上的距离,表现在管道中就是包之间的距离。当负载达到一定程度时,笔者认为网络中的数据具有流体的特征,进而可以将这种高速的运动流想象为流体运动。

根据对网络流量行为特征的分析和对当前一些网络流量数据采样方法研究的分析,同时也为了解决当前许多基于泊松模型的采样算法在对网络流量信息进行采样时,不能很好地解决网络流量具有自相似性特征的突发现象等问题。当前,网络流量采集技术已经相对成熟,通过各种流量采集技术已经可以获得不同的粒度和时间尺度上的流量数据,这为进行全面的网络流量分析提供了丰富的数据信息。而针对采集到的大量流量数据,流量分析技术也已经得到极大发展。通过对不同的粒度和时间尺度上的流量进行统计分析,已经寻找到了网络所表现出来的诸多不同的行为规律。通过对网络流量进行数学建模研究,经归纳出其具有的某些数学特性;面向具体的应用,针对网络流量的某些特征,对流量进行预测或异常检测的研究也进行的如火如茶。

由以上内容可以看出,无论是性能管理、网络监测还是异常检测,都离不开网络流量特征分析技术的支持。因此,如何利用各种分析手段对网络流量进行分析,使用户了解网络流量的变化情况,掌握网络状态己经成为当前网络管理领域研究的热点问题。

因此,采用网络流量采集软件进行流量采集,然后对网络流量行为特征进行分析对及时了解网络实时运行状态和了解网络行为特征十分重要。同时,对重新设计高效的网络系统,重新进行网络性能设施的配置和为不同的网络客户提供优质服务起到了指导性作用。

1.2 国内外研究现状

有关网络业务流量的研究主要涉及两个方面:网络流量特性分析和网络流量建模预测。目前,国内、外对业务流量特性分析的研究还在进行中,其中也取得了一些成果。本课题也将从概率统计方面对网络流量的特性做研究和分析。

早期的网络应用对象主要为电话网,其流量特性遵循泊松分布;但是随着网络规模的增大,网络应用的多样化,网络特性也随之变得多样化、复杂化,研究人员在对网络流量不断研究中发现了其他的特性。由于人们生活网络行为习惯,网络流量很自然地体现出周期性;1994年,Leland等人通过对LAN的流量分析及Klivansky等人对WAN流量分析发现流量的自相似性;基于自相似特征与混沌吸引子之间的紧密联系,近几年,研究人员又证明了网络流量存在混沌性。此外大量的研究表明,网络流量最重要的特性仍旧是自相似性,甚至是最新发现的混沌性也是基于自相似性的,因此,自相似性仍是网络流量特性研究的重点。

1.2.1 国外研究现状

国外最早的网络测量始于70年代初,逐渐成熟于80年代,90年代已渐成体系。1995年美国科学基金会系统地进行了因特网通信量的较大规模测量。1996年初,美国应用网络研究国家实验室在美国科学基金会支持下召开了有关因特网统计与分析的研讨ISMA。此后,依托于美国加州大学圣地亚哥分校超级计算中心的因特网数据分析合作组织,对网络测量的相关理论和方法展开了系统性研究。1997年,V.Paxson的博士学位论文“因特网的端到端动态性能的测量与分析”成为网络测量领域中的经典文献。这些研究在网络测量的方法、工具以及网络基础设施框架和流量的测量模型等方面都做了探索和改进。NIMI是美国在1992年开始Internet特征研究中比较著名的项目。其主要目的是要测量全球的Internet,建立一个总体的可扩展的网络测量基础框架,而不是为特定的分析目的的特定测量。因此它的设计原则是:建立一定的测量基础架构,支持测量工具的发布和运行、测量数据的采集和分析和对自身的维护和控制,使测量工具在整个Internet范围内适用。

IETF网络协议性能指标工作组(IPPM WG)为互联网的测量做了很多工作,拥有众多的RFC(Request for Comments)和实验草案,制定了一些性能指标定义的标准,以应用于互联网数据传输服务的质量、性能和可靠性的测量。这些指标向网络操作者、终端用户和独立的测试组提供无偏差的性能测量。而且,IPPM WG推动有效指标测量工具和过程的共享,提供一个论坛,共享实施和应用这些指标的信息,但实际的实施和应用并不在工作组范围之内。IPPM WG已经完成的工作包括近期制定的RFC和一些协议草案,其框架主要是关于信息分类。

除美国外,其他国家也开展了对Internet的大规模测量和研究,如加拿大的TRIUMF网络监视(主要目的是对国家Internet路径上的包丢失情况和路由特征进行测量)以及新西兰的WAND(Waikato Applied Network Dynamics)中的被动测量子项目WITS(Waikato Internet Traffic Storage)(主要目的是创建用于统计分析和创建模拟模型的Internet流量模型)等。欧洲于1995年也开展了对Internet的测量,其中PPNCG(粒子物理网络协作组)是在这方面做得较为成功的一个组织。

由于Internet网络的异构性,纵观国外这些网络测量项目都存在着测量项目之间的数据不能共享,彼此软、硬件之间不能兼容等一系列问题。解决的方法是尽量使设计的测量项目具有可扩展性、通用性、可靠性,而没有较强的针对性和局限性。

1.2.2 国内研究现状

我国网络的发展起步较晚,90年代初才引入Internet,大规模的快速发展于90年代末,中国科学院计算技术研究所、东南大学、西安交通大学等单位相继开展了网络测量系统和方法的研究工作。如可扩展的主动测量模型NEPM采用主动测量技术,通过在网络中配置少量主动测量器,就可测量许多条路径的端到端性能。NEPM是一种层次结构的可扩展模型,它的定义为主动测量提供了一个体系结构上的框架。由于以数据流动所处的阶段划分层次,这种层次结构有以下优点:各层次功能和结构相互独立,每个层次可以选用最优的技术,层次间数据接口比较简单,各层易于实现和维护,具有良好的扩展性和开放性。

近来随着Internet网络的发展,我国已成为世界上Internet用户第二的国家。网络流量的成倍增加同样需要解决流量的监测、预测和网络规划的问题。我国的一些大的ISP和网络规划及运营者也在进行网络流量测量、网络行为、性能分析这方面的工作,正逐步缩小和国外的差距。

2.1 网络测量概述

人们对互联网的流量特征、性能特征、可靠性与安全性特征以及网络行为模型等缺乏理解和缺乏精确描述的问题已经严重影响到因特网的发展和对因特网更加有效的利用,因此,许多专家提出应当更加深入地认识现有因特网的一些内在机制。而认识事物的第一步就是要测量它,并用数字表示出来,然后通过一些数学知识进行分析,提取其网络流量的数据特征。

对网络进行研究的最终目的是为了建立高效、稳定、安全、互操作性强、可预测以及可控制的网络,而网络特征测量是获得第一手网络行为指标和参数的最有效的手段。在对网络进行测量和测试的基础上建立网络行为模型,并用模拟仿真方法搭建从理论到实践的桥梁,是理解网络行为的十分有效的途径。

网络特征测量是高性能协议设计、网络设备开发、网络规划与建设、网络管理与操作的基础,同时也是开发高效能网络应用的基础。网络特征测量可以为互联网的科学管理和有效控制以及为互联网的发展与利用提供科学的依据。网络流量特征是高性能通信协议与网络设备设计、网络性能分析、网络设计及其网络负载均衡等QoS保证和性能提升的基础,也是网络服务监控和异常、故障、安全攻击发现的重要手段。可以帮助人们设计更好的网络协议、更合理的网络拓扑结构、更高效的QoS保证手段、更智能的网络监控系统,保证网络高效、稳定、高性能安全地运行。

2.2 网络测量的作用

网络测量的具体用途可分为故障诊断、网络流量特征化、性能评价和其它用途几大类:

·故障诊断。

某些网络部件的故障会干扰整个网络的运行,例如,广播风暴、非法分组长度、地址错误、安全性攻击等,需要对这些故障进行诊断。

·网络流量特征化。

网络测量可使用统计技术来分析经验数据,从而提取出网络应用或网络协议的特征。流量特征化使设计的网络协议和网络设备具有更好的特性。

·性能评价。

网络测量可用来考察某个协议或某个应用在因特网中的性能水平。网络测量的详细分析能够帮助确定性能“瓶颈”。一旦解决了被确定的性能问题,就能够研制性能更好的新协议。

 

2.3 网络流量的特点

因特网的通信量连续地变化。不仅是通信量本身,通信量的组成、协议、应用以及用户等也都在改变。对现有网络收集的数据仅仅是在因特网演化过程中的一个“快照”。不能把通信量的结构视为不变的。

由于因特网的异构特性,描述聚合的网络流量特点很困难。在因特网中存在着大量不同类型的应用、多种协议、多种接入技术和多种接入速率,同时用户行为及因特网本身也是变化的。

网络流量具有“邻近相关性”效应。表明因特网流量的模式非完全随机。因特网流量的结构与用户在应用层发生的任务有关,因此网络中传送的各分组并非是独立的。邻近相关性包括时间上的邻近相关性和空间上的邻近相关性。在主机级、路由器级和应用级都有该效应。

分组长度分布呈双模态(双尖峰分布)。许多短分组包括交互式的流量和确认;许多长分组是批量数据文件传输类型的应用,这些应用使用尽可能长的分组(基于最大传送单元),中等长度的分组很少。

分组到达不是泊松分布。经典的排队论和网络设计是基于分组的到达过程是泊松分布(无记忆的指数分布)的假定。然而大量的实验结果指出,分组是突发式到达的(分组有成群的特性),分组到达的前后有关联,分组的到达时间并非独立和服从指数分布的。突发到达的特点是:平均值可能很低,但峰值可能很高,这与使用的时间段有关。流量可能是自相似的,在较长的时间范围内存在突发性(突发性难以精确定义)。

流量是双向的,通常是不对称的。数据通常在两个方向流动,但两个方向的数据量往往相差很大(尤其是下载万维网的大文件)。多数应用都使用TCP/IP流量。

在因特网的分组流量中,TCP的份额占绝大部分,至今为止TCP协议一直是最重要的协议。即使目前IP电话和多播技术(这些应用是在UDP上运行)得到广泛应用,TCP仍处于主导地位。在可预见的未来仍是如此。正因为这样,许多研究仅关注TCP。

2.4 网络流量测量方法与常用分析工具

网络流量测量主要分为性能监测与分析、网络拓扑探测、网络的流量分析等三个方面。性能监测与分析,主要是通过监测网络的端到端的时延、抖动、丢包率等特性,了解网络的可达性、利用率以及网络负荷等。网络拓扑探测,主要是通过主动发送TCP包或UDP包,对某一段网络进行探测,以得到这一网段的大致拓扑结构。网络的流量分析,主要是对网络“流”的特性进行测量和分析,以掌握网络的流量特性,比如协议的使用情况,应用的使用情况,用户的行为特征等。网络测量技术总体上可分为主动测量、被动测量和基于SNMP的网络测量三种。由于方法实现方式的不同以及适用范围不同而各有利弊。

·主动测量

主动测量是为了监测两指定端点之间的性能而向网络中注入流量的方法,跟踪和可视化Internet拓扑结构是主动测量最主要的应用,同时主动测量可以探测网络的特定现象。

但是,主动测量给网络增加了潜在的荷载负担,特别是如果没有仔细设计使得该方法产生的流量数最小,那么附加的流量会扰乱网络,歪曲分析结果。

·被动测量

被动测量是直接利用网络中已有的流量,通常采用在网络硬件设备中嵌入智能代理来收集流量信息、监视网络链路的流量,收集到的数据可以用于进行各种流量分析。被动测量可以完全取消附加流量和Heisenberg效应。利用一定的软硬件,被动的监测记录网络上的“流”的情况。优点是一般不会增加额外的网络流量,能够监测网络的流量情况;缺点是不够灵活,一般只能探测某一网段的情况。网络的流量分析一般采用被动监测。

·基于SNMP的网络测量

基于SNMP的网络测量是通过读取相关网络设备的管理信息库(MIB),来得到反映网络状况的性能指标。它无须主动发送探测包,但是读取MIB中的信息仍将占用网络的带宽,而且它需要相关网络设备的访问权限及SNMP协议的支持。SNMP的简单并不在于它的规范和目标,其协议中集成的概念都具有既完美又普通的简单。目前绝大多数网络设备都支持SNMP协议。该方法存在以下优点:

(1)可以在任何时候,收集任何地点的网络的流量。

(2)能够收集到某个网络中大量设备的同步流量信息。

(3)能够获得流量间的相互关系。

(4)能够收集到网络设备自身的工作信息。

2.5 常用分析工具

·Sniffer

美国网络联盟公司的著名网络管理解决方案Sniffer,目前已成为企业首选的网络故障和性能管理的解决方案,它能够自动地帮助网络管理人员维护网络、查找故障,有效简化了发现及解决网络问题的过程。Sniffer Portable(便携式Sniffer)通过提供可以快速识别并解决网络性能问题的便携式分析解决方案来帮助网络技术人员弥补他们欠缺的知识。它能帮助我们解决所有LAN和WAN拓扑结构中最困难的问题。

Sniffer Distributed(分布式Sniffer)为当今多拓扑、多协议分布式网络提供功能强大的网络查错和性能管理解决方案,能够对局域网(LAN)、广域网(WAN)、异步传输模式(ATM)以及千兆以太网等所有网络中的关键网段进行有效的监视、协议解码和分析,充分利用美国网络联盟网络管理专家丰富的知识和经验,在单一的管理控制平台上高效率管理整个企业网络,准确诊断故障,及时解决问题。

一旦发生安全问题,网络流量通常也会发生异常。Sniffer通过对网络流量的分析,可以帮助用户及时找出引发异常流量的症结所在,以便确定安全隐患所在。目前,Sniffer不仅能面向局域网和广域网,同时,还支持无线局域网和移动通信的网络监视和故障解决。它具有便携式、分布式、光网络、无线网络等多种形式,采取软硬件相结合,以便于用户使用。同时,美国网络联盟公司又和ISS达成一个全面合作协议,它将把ISS的Realsecure入侵检测技术和Sniffer先进的网络故障隔离和性能管理技术相结合,在网络管理系统中提供一流的网络入侵方案,确保企业的网络安全。

·MRTG

Mrtg是一个监控网络链路流量负载的工具软件,它通过snmp协议从设备得到设备的流量信息,并将流量负载以包含PNG格式的图形的HTML文档方式显示给用户,以非常直观的形式显示流量负载。MRTG具有以下特色:

·可移植性。目前可以运行在大多数Unix系统和Windows NT之上。

·源码开放。Mrtg是用perl编写的,源代码完全开放。

·高可移植性的SNM支持。Mrtg采用了Simon Leinen编写的具有高可移植性的SNMP实现模块,从而不依赖于操作系统的SNMP模块支持。

·支持SNMPv2c。MRTG可以读取SNMPv2c的64位的记数器,从而大大减少了记数器回转次数。

·可靠的接口标识。被监控的设备的接口可以以IP地址、设备描述、SNMP对接口的编号及Mac地址来标识。

·常量大小的日志文件。MRTG的日志不会变大,因为这里使用了独特的数据合并算法。

·自动配置功能。MRTG自身有配置工具套件,使得配置过程非常简单。

·性能。时间敏感的部分使用C代码编写,因此具有很好的性能。

·PNG格式图形。图形采用GD库直接产生PNG格式。

·可定制性。MRTG产生的web页面是完全可以定制的。

·winpcap

winpcap的主要功能在于独立于主机协议(如TCP-IP)而发送和接收原始数据包。也就是说,winpcap不能阻塞,过滤或控制其他应用程序数据包的发收,它仅仅只是监听共享网络上传送的数据包。因此,它不能用于QoS调度程序或个人防火墙。目前,winpcap开发的主要对象是windows NT/2000/XP,这主要是因为在使用winpcap的用户中只有一小部分是仅使用windows 95/98/Me,并且M$也已经放弃了对win9x的开发。因此本文相关的程序T-ARP也是面向NT/2000/XP用户的。其实winpcap中的面向9x系统的概念和NT系统的非常相似,只是在某些实现上有点差异,比如说9x只支持ANSI编码,而NT系统则提倡使用Unicode编码。有个软件叫sniffer pro.可以作网管软件用,有很多功能,可监视网络运行情况,每台网内机器的数据流量,实时反映每台机器所访问IP以及它们之间的数据流通情况,可以抓包,可对过滤器进行设置,以便只抓取想要的包,比如POP3包,smtp包,ftp包等,并可从中找到邮箱用户名和密码,还有ftp用户名和密码。它还可以在使用交换机的网络上监听,不过要在交换机上装它的一个软件。还有一个简单的监听软件叫Passwordsniffer,可截获邮箱用户名和密码,还有ftp用户名和密码,它只能用在HUB网络上。著名软件tcpdump及ids snort都是基于libpcap编写的,此外Nmap扫描器也是基于libpcap来捕获目标主机返回的数据包的。

2.6 基于概率统计的网络流量特征分析技术介绍

    本课题我们将采用一组名为“capture-H.exe”,“UDPdump.exe”的流量分析工具,完成对各种应用流平均分组大小,平均吞吐量,平均持续时间等测度的采集。完成对采集的各种应用流平均分组大小,平均吞吐量,平均持续时间等测度实现概率分布和一些相关性的分析。

    分组:在数据网络中,是在网络中传输的二进制格式的一个个体。为了提高通信性能和可靠性,每条发送在两个网络设备之间的信息通常被分为一些分组,通过基本的硬件和软件。分组格式通常包括一个头部,身体包括信息数据(也叫做有效载荷),和有时候一个脚部(也叫做尾部)。这个分组头部列出了分组的源地和目的地和通常指出信息数据的长度。这个分组脚部包括表示分组末端的数据。分组头部和脚部可能包括错误检测信息。

平均吞吐量:网络中的数据是由一个个数据包组成,防火墙对每个数据包的处理要耗费资源。吞吐量是指在没有帧丢失的情况下,设备能够接受的最大速率。其测试方法是:在测试中以一定速率发送一定数量的帧,并计算待测设备传输的帧,如果发送的帧与接收的帧数量相等,那么就将发送速率提高并重新测试;如果接收帧少于发送帧则降低发送速率重新测试,直至得出最终结果。吞吐量测试结果以比特/秒或字节/秒表示。

    在本课题,我们将使用这些概率统计方面的分析方法进行测试研究,得到网络应用流的一个基本特征分析结果。

2.7 TCP/IP原理

TCP/IP是指一整套数据通信协议, 其名字是由这些协议中的两个协议组成的,即传输控制协议(Transmission Control Protocol­ ­——TCP)和网间协议(Internet Protocol——IP)。虽然还有很多其他协议,但是TCP和IP显然是两个最重要的协议。

TCP/IP协议族分层结构主要包括应用层,传输层,网络层,链路层,在应用层主要包括FTP,WWW,DFS,SNMP,传输层主要为TCP,UDP,而网络层主要为ICMP,IP,IGMP,链路层为ARP,ETHERNET,RARP。然后就是传输线路。

网际协议IP是TCP/IP的核心,也是网络层中最重要的协议。网际协议IP是一种不可靠、无连接的协议。它允许两个主机系统在没有任何预先调用设置的情况下交换信息。因为IP是无连接的,所以数据报有可能在两个末端用户站点之间丢失。国际协议IP对它的末端用户把其底层子网隐藏起来。从这个角度来看,它给末端用户建立了一个虚拟网络,允许不同类型的网络和IP网关相连。其结果使得IP的安装非常简单,并且由于IP的无连接设计,它的扩展性也非常好。但是,因为IP是一个不可靠的数据类型协议,所以它没有可靠性机制。它不给底层子网提供容错恢复功能,也没有流量控制。用户数据可能会丢失,甚至不按顺序到达。

传输控制协议TCP是一种可靠的面向连接的传送服务。它在传送数据时是分段进行的,逐级交换数据必须建立一个会话。它用比特流通信,即数据被作为无结构的字节流。通过每个TCP传输的字段指定顺序号,以获得可靠性。如果一个分段被分解成几个小段,接收主机会知道是否所有小段都已收到。通过发送应答,用以确认别的主机收到了数据。

用户数据报协议UDP提供了无连接的数据报服务。它适用于无须应答并且通常一次只传送少量数据的应用软件。

TCP/IP的协议分析过程的基本流程如图2.1所示。

在描述TCP/IP时,一般只定义如图所示的4层模型:应用层、主机对主机传输层、网络层和网络访问层。

图2-2 TCP/IP协议结构中的各层

 

在TCP的应用层中,将数据称为“数据流(stream)“;而在用户数据报协议(UDP)的应用层中,则将数据称为 “报文(message)”。TCP将它的数据结构称作“段(segment)“,而UDP将它的数据结构称作“分组(packet)”;网间层则将所有数据看作是一个块,称为“数据报(datagram)“。TCP/IP使用很多种不同类型的底层网络,每一种都用不同的术语定义它传输的数据,大多数网络将传输的数据称为“分组”或“帧(frame)”。

TCP提供的可靠性是利用一种称为“重传肯定确认(Positive Acknowledgment With Retranmission——PAR)”机制来实现的。换句话说,除非一个利用PAR的系统接收到从远端系统发来的肯定确认,否则就重发原数据。

每一段包含一个校验值,接收方用它来验证数据是否遭到破坏。如果接受到的数据段没有遭到破坏,接收者就发送一个肯定确认应答给发送者;如果遭到破坏,接收者就废弃该段。过了一段时间后,发送端TCP就重新发送没有受到肯定确认的任何段。

TCP是面向连接的,它在两个通信主机之间建立一个逻辑的端对端连接。在传输数据之前,建立对话的两个端点之间交换称为握手的控制信息。TCP通过在段头第4个字的标志字段中设置相应的位来表示一个段的控制功能。

TCP有三个段要交换,故称为“三段试握手”。如图:

图2-3三段试握手

主机A通过将一个具有“同步序列号(SYN)”的段发送给主机B而开始连接,该段告诉主机B:主机A希望建立连接并且使用哪个序列号作为主机A的段的起始号(序列号可用来保持数据的正确顺序);主机B用一个带有“确认应答(ACK)”和“同步序列号(SYN)”位的段响应主机A,以确认收到了A的段,并通知A它将从哪个序列号开始;最后,A发送一个段,确认收到了B的段,并开始传送第一个实际数据。

    TCP还负责将从IP接收到的数据传送给合适的应用程序。接收该数据的应用程序是用一个16位的“端口号”标识的。源端口和目的端口是包含在段头的第一个字节中,使数据正确地传进和传出应用层,这是传输层的一个重要服务。

对传输的数据进行特征分析的前提就是选定目标,进而可以采集有关的数据。一般情况下,数据的采集有主动数据采集和被动数据采集两类。主动数据采集主要是用在对服务器的性能进行测试。被动数据采集是指在流量通过时,在网络某个观测点得到的网络流量数据,其使用范围比较广,大都会采用这种形式来进行数据采集。

    本课题,我们将采用一个比较简单的采集工具进行,采集软件如下所示:

图3-2 采集界面

软件使用方法如下所示:

1.先运行udpdump1命令.bat,选择适当的网络适配器,并只打开一种网络应用程序(如关闭QQ等仅用Web浏览器)访问相应的服务程序,以产生网络流量,再关闭udpdump1命令.bat即可得到一个原始数据文件。

2.拷贝原始数据文件名,用记事本打开capture-H-2007-12-20-MIN.bat,并替换其中>后面的 ...-,保存;

3.再运行capture-H-2007-12-20-MIN.bat,点击界面左上角-编辑-粘贴,再回车,过一会儿键入e,回车,结束程序可以得到一个文本文件;该文本包含流记录(.......TCP或UDP流.......后)以及给出每个流包含的分组。

下面我们将使用这个软件进行流量的采集。

    首先我们选择一个网络软件,比如QQ,网页,或者别的下载工具,这里我们为了使得到的数据更加的符合要求,我们采用下载工具进行测试。首先我们web浏览器。

图3-3 打开web浏览器

·运行udpdump1命令.bat

  打开这个指令,我们会得到如下的界面效果,系统提示选择一个合适的网络适配器。

图3-4 选择合适的网络适配器

    这里我选择第5种,键盘输入5,

图3-5 软件开始采集数据

这个时候,我们进行常规的网页数据的采集以产生流量。然后输入CRTL+C停止数据采集。

图3-6 结束数据采集

这个时候我们会得到采集得到文件:

图3-7 采集得到的数据文件

 

·拷贝原始数据文件名

打开capture-H-2007-12-20-MIN.bat,我们将得到的流量文件的文件名覆盖掉里面的默认文件名。

·生成文本文件

运行capture-H-2007-12-20-MIN.bat点击界面左上角-编辑-粘贴,再回车,过一会儿键入e,回车,结束程序可以得到一个文本文件。

图3-8 保存为文本文件

此时,我们已经得到了网络流量数据。

图3-9 网络流量数据

3.3 基于概率统计的网络流量数据的特征分析

    下面,我们将对得到的数据中的有用信息进行分析,研究网络应用流的特征数据。在本课题我们主要完成对各种应用流平均分组大小,平均吞吐量,平均持续时间等测度的采集。完成对采集的各种应用流平均分组大小,平均吞吐量,平均持续时间等测度实现概率分布和一些相关性的分析。

    通过网络数据流的分析,我们将得到TCP流和UDP流两种数据。我们分别提取其中的数据分别加以保存。

3.3.1利用MATLAB进行仿真

 MATLAB是矩阵实验室(Matrix Laboratory)之意。除具备卓越的数值计算能力外,它还提供了专业水平的符号计算、文字处理、可视化建模仿真和实时控制等功能。在当今30多个数学类科技应用软件中,就软件数学处理的原始内核而言,可分为两大类,一类是数值计算型软件,如MATLABXmathGauss等,这类软件长于数值计算,对处理大批数据效率高;另一类是数学分析型软件,MathematicaMaple等,这类软件以符号计算见长,能给出解析解和任意精确解,其缺点是处理大量数据时效率较低。MATLAB是矩阵实验室(Matrix Laboratory)的缩写。MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用CFORTRAN等语言完成相同的事情简捷得多。

MATLAB通信工具箱中的系统仿真,分为用SIMULINK模块框图进行仿真和用MATLAB函数进行的仿真两种。在用SIMULINK模块框图的仿真中,每个模块,在每个时间步长上执行一次,就是说,所有的模块在每个时间步长上同时执行。这种仿真被称为时间流的仿真。而在用MATLAB函数的仿真中,函数按照数据流的顺序依次执行,意味着所处理的数据,首先要经过一个运算阶段,然后再激活下一个阶段,这种仿真被称为数据流仿真。某些特定的应用会要求采用两种仿真方式中的一种,但无论是哪种,仿真的结果是相同的。

    由于通过C++直接进行数据分析比较繁琐,所以我们在进行实际程序开发之前,我们将首先通过MATLAB进行数据的简单的分析,对所要得到的结果进行初步分析,在本系统中,通过网络流量数据的采集,我们得到了如下的结果。

首先将所要分析的数据导入MATLAB,然后画图查看数据的基本走势。

图3-1 UDP包发送接收对比图

图3-2 UDP字节发送接收对比图

 

图3-3 TCP包发送接收对比图

图3-4 TCP字节发送接收对比图

    这里我们给出了UDP,TCP网络发送数据包字节的发送接收对比图以及发送接收的比率。一般情况下,如果发送的帧与接收的帧数量相等,那么就将发送速率提高并重新测试;如果接收帧少于发送帧则降低发送速率重新测试。

    在MATLAB中,我们可以通过概率统计函数进行分析,每种情况下的各种大小字节出现的概率情况。下面我们对上面讲到的四组数据进行统计分析。

图3-5 UDP发送接收包/字节大小分布图

图3-6 TCP发送接收包/字节大小分布图

至此,我们已经完成了网络应用流的简要的概率统计分析,我们对数据的直观波形有了进一步的了解,下面我们将在C++环境下,对系统继续统计分析。

    此处MATLAB的代码如下所示:

clc;

close all;

clear;

UDPs_lrPkt   = xlsread('UDP.xls','Sheet1','H2:H86');

UDPs_rlPkt   = xlsread('UDP.xls','Sheet1','J2:J86');

UDPs_rllrPkt = xlsread('UDP.xls','Sheet1','L2:L86');

UDPs_lrByte  = xlsread('UDP.xls','Sheet1','I2:I86');

UDPs_rlByte  = xlsread('UDP.xls','Sheet1','K2:K86');

UDPs_rllrByte= xlsread('UDP.xls','Sheet1','M2:M86');

TCPs_lrPkt    = xlsread('TCP.xls','Sheet1','I2:I459');

TCPs_rlPkt    = xlsread('TCP.xls','Sheet1','K2:K459');

TCPs_rllrPkt  = xlsread('TCP.xls','Sheet1','M2:M459');

TCPs_lrByte   = xlsread('TCP.xls','Sheet1','J2:J459');

TCPs_rlByte   = xlsread('TCP.xls','Sheet1','L2:L459');

TCPs_rllrByte = xlsread('TCP.xls','Sheet1','N2:N459');

figure(1)

subplot(311);plot(UDPs_lrPkt);title('UDPs_lrPkt');

subplot(312);plot(UDPs_rlPkt);title('UDPs_rlPkt');

subplot(313);plot(UDPs_rlPkt,'r');title('UDPs_rllrPkt');

figure(2)

subplot(311);plot(UDPs_lrByte);title('UDPs_lrByte');

subplot(312);plot(UDPs_rlByte);title('UDPs_rlByte');

subplot(313);plot(UDPs_rllrByte,'r');title('UDPs_rllrByte');

figure(3)

subplot(311);plot(TCPs_lrPkt);title('TCPs_lrPkt');

subplot(312);plot(TCPs_rlPkt);title('TCPs_rlPkt');

subplot(313);plot(TCPs_rllrPkt,'r');title('TCPs_rllrPkt');

figure(4)

subplot(311);plot(TCPs_lrByte);title('TCPs_lrByte');

subplot(312);plot(TCPs_rlByte);title('TCPs_rlByte');

subplot(313);plot(TCPs_rllrByte,'r');title('TCPs_rllrByte');

figure(5)

subplot(221);hist(UDPs_lrPkt);title('UDPs_lrPkt');

subplot(222);hist(UDPs_rlPkt);title('UDPs_lrPkt');

subplot(223);hist(UDPs_lrByte);title('UDPs_lrPkt');

subplot(224);hist(UDPs_rlByte);title('UDPs_lrPkt');

figure(6)

subplot(221);hist(TCPs_lrPkt);title('TCPs_lrPkt');

subplot(222);hist(TCPs_rlPkt);title('TCPs_rlPkt');

subplot(223);hist(TCPs_lrByte);title('TCPs_lrByte');

subplot(224);hist(TCPs_rlByte);title('TCPs_rlByte');

3.3.2 通过C++进行仿真数据运算

C语言之所以要起名为“C”,是因为它是主要参考那个时候的一门叫B的语言,它的设计者认为C语言是B语言的进步,所以就起名为C语言;但是B语言并不是因为之前还有个A语言,而是B语言的作者为了纪念他的妻子,他的妻子名字的第一个字母是B; 当C语言发展到顶峰的时刻,出现了一个版本叫C with Class,那就是C++最早的版本,在C语言中增加class关键字和类,那个时候有很多版本的C都希望在C语言中增加类的概念;后来C标准委员会决定为这个版本的C起个新的名字,那个时候征集了很多种名字,最后采纳了其中一个人的意见,以C语言中的++运算符来体现它是C语言的进步,故而叫C++,成立了C++标准委员会。目前最符合和接近C++标准的编译器有为 GNU GCC 4.5.0 和 Visual Studio 2010 等。   

    下面,我们将对采集到的数据在C++环境下进行分析。

首先要读取保存在txt文件中的数据:

int TCP_lrByte[1000];

ifstream infile1("TCP_lrByte.txt");

for(i=0;i<1000;i++)

infile1>>TCP_lrByte[i];

通过这个代码,我们可以将保存在TXT文件夹下的数据读取,并存入到数组中,之后的操作我们都将基于数组进行。

    下面我们将利用这些数据进行一些概率统计方面的数据运行。

  ·对采集时间内的数据包和字节求和统计

    为了统计分析的需要,我们一般首先计算一定时间内样本数据的总和。这里C++代码如下所示:

double     sum_UDP_rlpkt;

double     sum_UDP_lrpkt;

double     sum_UDP_rlByte;

double     sum_UDP_lrByte;

double     sum_TCP_rlpkt;

double     sum_TCP_lrpkt;

double     sum_TCP_rlByte;

double     sum_TCP_lrByte;

 for(i=0;i<400;i++)

 {

    sum_UDP_rlpkt  = sum_UDP_rlpkt  +  UDP_rlpkt[i];

    sum_UDP_lrpkt  = sum_UDP_lrpkt  +  UDP_lrpkt[i];

    sum_UDP_rlByte = sum_UDP_rlByte +  UDP_rlByte[i];

    sum_UDP_lrByte = sum_UDP_lrByte +  UDP_lrByte[i];

    sum_TCP_rlpkt  = sum_TCP_rlpkt  +  TCP_rlpkt[i];

    sum_TCP_lrpkt  = sum_TCP_lrpkt  +  TCP_lrpkt[i];

    sum_TCP_rlByte = sum_TCP_rlByte +  TCP_rlByte[i];

    sum_TCP_lrByte = sum_TCP_lrByte +  TCP_lrByte[i];

 }

 cout <<"01:The number of tranfram UDP packet is : " << sum_UDP_rlpkt <<endl;

 cout <<"02:The number of receive  UDP packet is : " << sum_UDP_lrpkt <<endl;

 cout <<"03:The number of tranfram UDP byte is   : "   << sum_UDP_rlByte <<endl;

 cout <<"04:The number of receive UDP byte is    : "  << sum_UDP_lrByte <<endl;

 cout <<"01:The number of tranfram TCP packet is : " << sum_TCP_rlpkt <<endl;

 cout <<"02:The number of receive  TCP packet is : " << sum_TCP_lrpkt <<endl;

 cout <<"03:The number of tranfram TCP byte is   : "   << sum_TCP_rlByte <<endl;

 cout <<"04:The number of receive TCP byte is    : "  << sum_TCP_lrByte <<endl;

其运行结果如下所示:

图3-7 对接收到的数据包和字节进行求和

  ·求接收发送比

    在统计吞吐量的时候,我们经常需要计算接到的包/字节除发送的包/字节,在测试中以一定速率发送一定数量的帧,并计算待测设备传输的帧,如果发送的帧与接收的帧数量相等,那么就将发送速率提高并重新测试;如果接收帧少于发送帧则降低发送速率重新测试,直至得出最终结果。

    其对应的C++代码如下所示:

double     TR_UDP_rllrpkt[100];

double     TR_UDP_rllrByte[100];

double     TR_TCP_lrlrpkt[400];

double     TR_TCP_lrlrByte[400];

 for(i=0;i<400;i++)

 {

   TR_TCP_lrlrpkt[i]  =(double)TCP_rlpkt[i]/TCP_lrpkt[i];

   TR_TCP_lrlrByte[i] =(double)TCP_rlByte[i]/TCP_lrByte[i];

   cout<<"TCP_Packet_R/T :"<<TR_TCP_lrlrpkt[i]<<"; TCP_byte_R/T :"<<TR_TCP_lrlrByte[i]<<endl;

 }

 for(i=0;i<50;i++)

 {

   TR_UDP_rllrpkt[i]  =(double)UDP_rlpkt[i]/UDP_lrpkt[i];

   TR_UDP_rllrByte[i] =(double)UDP_rlByte[i]/UDP_lrByte[i];    cout<<"UDP_Packet_R/T:"<<TR_UDP_rllrpkt[i]<<";UDP_byte_R/T :"<<TR_UDP_rllrByte[i]<<endl;

 }

其运行结果如下所示:

图3-8 TCP/UDP接收包字节/发送包字节

·概率区间分布

    我们在上面的MATLAB分析中已经得到了概率分布的效果,这里我们将通过C++进行区间的分别。

for(i=0;i<50;i++)

 {

   if (UDP_rlpkt[i] >=0 && UDP_rlpkt[i] <4)

   {

    UDP_rlpkt_hist[0] = UDP_rlpkt_hist[0] + 1;

    UDP_rlpkt_hist[1] = UDP_rlpkt_hist[1];

    UDP_rlpkt_hist[2] = UDP_rlpkt_hist[2];

    UDP_rlpkt_hist[3] = UDP_rlpkt_hist[3];

   }

 else   if (UDP_rlpkt[i] >=4 && UDP_rlpkt[i] <8)

   {

    UDP_rlpkt_hist[0] = UDP_rlpkt_hist[0] ;

    UDP_rlpkt_hist[1] = UDP_rlpkt_hist[1]+ 1;

    UDP_rlpkt_hist[2] = UDP_rlpkt_hist[2];

    UDP_rlpkt_hist[3] = UDP_rlpkt_hist[3];

   }

  else   if (UDP_rlpkt[i] >=8 && UDP_rlpkt[i] <12)

   {

    UDP_rlpkt_hist[0] = UDP_rlpkt_hist[0] ;

    UDP_rlpkt_hist[1] = UDP_rlpkt_hist[1];

    UDP_rlpkt_hist[2] = UDP_rlpkt_hist[2]+ 1;

    UDP_rlpkt_hist[3] = UDP_rlpkt_hist[3];

   }

 else   if (UDP_rlpkt[i] >=12)

   {

    UDP_rlpkt_hist[0] = UDP_rlpkt_hist[0] ;

    UDP_rlpkt_hist[1] = UDP_rlpkt_hist[1];

    UDP_rlpkt_hist[2] = UDP_rlpkt_hist[2];

    UDP_rlpkt_hist[3] = UDP_rlpkt_hist[3]+ 1;

   }

 }

其运行结果如下所示:

图3-9 UDP包/字节分别区间统计

3.4 本章总结

    本章我们主要对UDP,TCP发送接收的数据包和字节进行了分别统计分析,通过本章的统计研究发现,UDP,TCP的发送和接收的数据包和字节的概率分布基本相同,具有一定的相似性。

 

 

第四章 总结

本文以实际运行的网络环境为对象,有针对性地选择测试目标设备和目标性能参数,进而选择相应的测试方法,并利用统计分析方法,对网络的流量特征作出了分析。

·主要工作总结

本文的主要工作有理论研究及工程实现两个方面。首先从理论上系统地对针对网络流量在特征信息进行分析,其后设计实现了一个基于该技术的流量分析原型系统进行分析验证。本文的主要工作具体包括以下几个方面:

本文从研究流量在概率统计方面的特征信息的角度,来完成对流量数据的分析,这主要涉及到网络流量的提取和数据的分析。

利用C++设计并实现了基于流量分布特征的网络流量监测与分析原型系统。在对上述理论进行了深入分析研究的基础上,设计实现了一个基于流量分布特征的网络流量监测与分析原型系统,其能够分别针对网络流量的大小和流量在特征参数上的分布信息进行监测,来完成较为完善的分析,并最终通过合理的图形方式给用户以直观的展示。

·进一步工作展望

    在研究和实践中,我们主要是通过网络流量监控软件来获得数据流量,所以这中间存在这么一个问题,系统不能够实时的工作,每次只能分析一段数据的概率统计特性。所以在未来的系统完善过程中,我们需要设计一款实时性的软件进行网络流量的概率统计分析。

     

 

猜你喜欢

转载自blog.csdn.net/ccsss22/article/details/108741169