2024年5月5日发(作者:)

网络流量分析系统的设计与实现

摘 要:本文在明确网络流量分析重要性的基础上,设计了系

统的网络布局结构,并详细研究了网络流量分析系统的实现,

涉及到:数据的采集以及数据的分析。

关键词:网络流量;数据分析;网络安全 1 引言随着网络技

术的发展和网络规模日益扩大,网络结构越来越复杂,网络设

备种类和网络所承载的业务种类不断增多,这些都使得网络出

现各种故障或性能问题的可能性大大增加[1]。同时,用户服

务质量的要求却在不断提高,这样就导致了网络管理的难度更

大。网络流量分析系统的目的是通过对网络设备和网络运行的

流量进行监测,及时的发现网络中的异常情况,提醒网管人员

采取必要措施以保证网络的正常运行。2网络流量分析系统的

网络布局设计本文研究的网络流量分析系统的网络布局如图

2-1所示:

图2-1 网络流量分析系统的网络布局图由图2-1可以知道,

在本文研究的网络流量分析系统的网络布局中,我们将系统的

分析与控制功能进行了分离,分为两个设备进行处理。图2-1

中的直路设备只负责完成流量的分光(镜像)和流量控制,由旁

路设备负责网络数据流量的分析和流量控制策略的下放。这种

网络流量分析系统部署方式集中了旁路和直路的优势,由旁路

设备进行深入的协议分析,把分析的结果告知直路设备,直路

设备直接丢包进行流量控制[2]。这样既免去了为每种需要控

制的协议软件分析控制方案的工作量,节约了设备处理发送控

制报文的性能同时直路设备只用处理丢包流程,一般也不会造

成网络的瘫痪。 在具体的处理流程中,旁路设备部分进行数

据的分析和其它处理,如果需要对数据进行控制,旁路设备按

照事先的分析结果对简单的协议进行控制(减轻直路设备的压

力),并将难于控制的协议的用户IP或帐号发送给直路设备,

直路设备对其进行丢包达到控制的目的[3]。一般选用防火墙

作为直路设备。3网络流量分析系统的实现3.1网络流量数据

的采集在采集网络流量数据前先要查看机器网卡的配置情况,

以及相关的信息。这样有利于数据包的分析。具体部分代码如

下:

(1)为了捕获网络流量的数据包,需要让Jpcap明确是哪个网

络设备进行监听。本文采用API所提供的

iceList()方法。这个方法返回一列字符

串,使用代码如下所描述:NetworkInterface[] devices =

iceList();

(2)针对一个设备名称的目录,选取一个用来监听,代码如下

描述:String deviceName = devices[0] ;

(3)确定一个设备之后,通过vice()方法打开

它。vice( )方法需要四个参数:即将打开的设

备名,从设备上一次读取的最大字节数,说明是否将设备设为

混杂模式的Boolean值,和以后调用processPacket()方法要

使用到的超时值[4]。 代写论文 JpcapCaptor cap =

vice (devices[1], 1028, true,

10000) ;

(4)openDevice()方法将一个参数返回到用以捕获的Jpcap对

象。既然有了JPcap实例,可以调用1oopPacket()开始监听

了。这种方式带有两个参数:捕获的最大包数可以是-l(说明

没有限制);执行PacketReceiver一个类的实例。

1oopPacket()则将一直捕获包,直到达到最大包数,如果没有

最大数限制,它将永远运行下去。就像下面这样调用:

cket ( -1, new JpcapTest() ) ;本文研究的网络

流量数据采集的关键实现代码如下描述:Public class

JpcapTest implements PacketReceive {Public void

receivePacket ( Packet p ) {// n

(ng () ) ;n ( “ 长度 :t” +

) ;n ( “ 数据头 :”

t ) ;For ( int i=0;

i<;>n (Byte. toString

( [i] ) ) ;}n

() ;n ( “ IP包属

性 ”) ;n ( “ 源IP :t “ +

( ( IPPacket ) p ).src_ng ( ) ) ; 论文代写

n ( “ 目标IP : t “ + ( ( IPPacket )

p) .dst _ng ( ) ) ;}3.2网络流量数据分析的实

现本文网络数据源分析实现部分的整体结构使用了MVC设计模

式,在MVC架构中一个应用被分为二个部分:模型

( Model ),控制器( controller ) [5]。下面将对两个部分

进行详细实现研究。

(1)模型部分( Model )该部分的主要任务是与数据库建立连

接,并根据相关条件对数据库中的网络流量数据进行查询,并

将查询到的网络流量数据进行封装。该部分与数据库的连接使

用了DAO设计模式,DAO模式实现了业务逻辑与数据逻辑的分

离,这样在处理业务逻辑部分是就可以不用处理数据的存储,

网络流量数据的存储则是有数据逻辑部分来进行处理。该部分

与数据库相连接使用了JDBC,其处理流程中的核心代码如

下。e ( “ . ”) ; // 加

载相应的驱动库Connection connect =

nection ( url, user,

password ) ;// 根据用户名,密码,url与数据库简历连接

preparedStatement prestatement =

eStatement ( sql ) ;// 执行相关的SQL语

句 ResultSet result = eQuery () ;

// 根据SQL查询语句,生成结果。结果放入Resultset对象

中。到此处,所以的结果都放在Resultset中,里面存放的是

基本网络流量数据。为了使用方便,我们把每一条流记录封装

成一个NetFloe类,该类就是一个JavaBean,其有一系列的

seter和geter方法,通过这些方法可以获取相关的网络流量

数据的具体信息。此外,在对数据库中的网络流量数据进行查

询、聚合时,可以实现网络协议识别的功能。