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方法,通过这些方法可以获取相关的网络流量
数据的具体信息。此外,在对数据库中的网络流量数据进行查
询、聚合时,可以实现网络协议识别的功能。
发布评论