网络流量监控及分析工具的设计与实现毕业论文.docx
- 文档编号:10887440
- 上传时间:2023-02-23
- 格式:DOCX
- 页数:32
- 大小:254.38KB
网络流量监控及分析工具的设计与实现毕业论文.docx
《网络流量监控及分析工具的设计与实现毕业论文.docx》由会员分享,可在线阅读,更多相关《网络流量监控及分析工具的设计与实现毕业论文.docx(32页珍藏版)》请在冰豆网上搜索。
网络流量监控及分析工具的设计与实现毕业论文
毕业论文
网络流量监控及分析工具的设计与实现
摘要
互联网迅速发展的同时,网络安全问题日益成为人们关注的焦点,病毒、恶意攻击、非法访问等都容易影响网络的正常运行,多种网络防御技术被综合应用到网络安全管理体系中,流量监控系统便是其中一种分析网络状况的有效方法,它从数据包流量分析角度,通过实时地收集和监视网络数据包信息,来检查是否有违反安全策略的行为和网络工作异常的迹象。
在研究网络数据包捕获、TCP/IP原理的基础上,采用面向对象的方法进行了需求分析与功能设计。
该系统在VisualC++6.0环境下进行开发,综合采用了Socket-Raw、注册表编程和IP助手API等VC编程技术,在系统需求分析的基础上,对主要功能的实现方案和技术细节进行了详细分析与设计,并通过测试,最终实现了数据包捕获、流量监视与统计主要功能,达到了预定要求,为网络管理员了解网络运行状态提供了参考。
关键词:
网络管理;数据采集;流量统计;Winsock2
TheDesignandImplementationofMonitoringandAnalyzingToolforNetworkTraffic
Abstract
WiththerapiddevelopmentofInternet,networksafetyhasbecomepeople’sconcern,virus,vigorousattack,illegalvisitandsooncaneasilyaffectthenormalnetworkperformance.Variouskindsofnetworkdefendingtechnologyhavebeencomprehensivelyappliedintothemanagementsystemofnetworksafety.Networktrafficsystemisoneoftheeffectivemeasurestoanalysisnetworkcondition.Fromtheangleofanalyzingpackettraffic,itcanexaminethesafetyviolationandtheabnormalperformanceofnetworkbytimelycollectingandmonitoringpacketsinformation.
Byusingthewayofobject-oriented,thisdesignmakesaneedsanalysisandabilitydesigningbasedonthestudyofnetworkpacketcollectingandTCP/IPtheory.UndertheenvironmentofVisualC++6.0,thissystemadoptsVCprogramtechnologiesofSocket-Raw,WindowsregisterandIpHelperAPI.Onthebasisofsystemanalysis,itmakesadeliberateanalysisandtestofplansanddetailstoimplementpacketscollecting,trafficmonitoringandstatistics.Sothismeetsourneedsandmakesareferenceformanagerstogettoknowthenetworkconditions.
Keywords:
networkmanagement;datacollection;trafficanalysis;Winsock2
论文总页数:
22页
1引言
1.1课题背景
随着构建网络基础技术和网络应用的迅速发展以及用户对网络性能要求的提高,使得网络管理成为迫切需要解决的问题,有效的网络管理能够保证网络的稳定运行和持续发展,更重要的是,随着网络规模的扩大和黑客技术的发展,入侵和攻击的案例日益增多,对稳定的网络服务、信息安全、互联网秩序都提出了严峻的挑战,网络安全管理在整个网络管理系统里扮演起更为重要的角色。
1.2网络安全管理的现状与需求
目前,在网络应用不断深入和技术频繁升级的同时,非法访问、恶意攻击等安全威胁也在不断推陈出新,愈演愈烈。
防火墙、VPN、IDS、防病毒、身份认证、数据加密、安全审计等安全防护和管理系统在网络中得到了广泛应用。
从网络安全专业管理人员的角度来说,最直接的需求就是根据分类在统一的界面中监视网络中各种运行性能状态,获取相关数据信息、日志信息和报警信息等,并进行分类汇总、分析和审计;同时完成攻击事件报警、响应等功能。
因此,用户的网络管理需要不断健全整体网络安全管理解决方案,从统一安全管理平台总体调控配置到多层面、分布式的安全系统,实现对各种网络安全资源的集中监控、策略管理、审计及多种安全功能模块之间的互动,从而有效简化网络安全管理工作,提升网络的安全水平和可用性、可控制性、可管理性。
1.3网络流量监控的引入
网络安全管理体系中,流量监控和统计分析是整个管理的基础。
流量检测主要目的是通过对网络数据进行实时连续的采集监测网络流量,对获得的流量数据进行统计计算,从而得到网络主要成分的性能指标。
网络管理员根据流量数据就可以对网络主要成分进行性能分析管理,发现性能变化趋势,并分析出影响网络性能的因素及问题所在。
此外,在网络流量异常的情况下,通过扩展的流量检测报警系统还可以向管理人员报警,及时发现故障加以处理。
在网络流量检测的基础上,管理员还可对感兴趣的网络管理对象设置审查值范围及配置网络性能对象,监控实时轮询网络获取定义对象的当前值,若超出审查值的正常预定值则报警,协助管理员发现网络瓶颈,这样就能实现一定程度上的故障管理。
而网络流量检测本身也涉及到安全管理方面的内容。
由此可见,对于一个有效的网络安全管理系统来说,功能的实现都或多或少的依赖于流量信息的获取。
因此网络流量信息的采集可以说是网络安全管理系统得以实现的核心基石。
它的应用可以在一定程度上检测到入侵攻击,可以有效地帮助管理人员进行网络性能管理,并利用报警机制协助网管人员采取对应的安全策略与防护措施,从而减少入侵攻击所造成的损失。
1.4本文的目的与任务
该网络流量监控及分析工具主要用途是通过实时连续地采集网络数据并对其进行统计,得到主要成分性能指标,结合网络流量的理论,通过统计出的性能指数观察网络状态,分析出网络变化趋势,找出影响网络性能的因素。
本设计题目是教师自拟项目,前期任务主要是设计并完成系统的初步框架,实现网络数据的捕获,并解决相应问题,后期主要是通过一些API函数完成对各类数据信息的统计。
本系统实现以下功能:
5.6入库
入库与出库相反,其操作基本相同。
代码如下所示:
<%
CheckLogin
Showtitle(title)
getStorage(session("storage"))
ifrequest("id")<>""then
session("name_id")=request("id")
sql="select*fromstockwherename_id="&session("name_id")
rs.opensql,conn,3,2
ifnotrs.eofthen
session("name")=rs("name")
session("now_stock")="
rs.close
gettypepath
response.write"->[
else
showerror("没有找到记录!
")
endif
%>
<%ShowProvider%>**
[
5.7数据库的连接
ASP与ACCESS数据库连接的代码如下:
<%
Setconn=Server.CreateObject("ADODB.Connection")
conn.open"DRIVER={MicrosoftAccessDriver(*.mdb)};DBQ="&DefaultDir&server.mappath("database\data.mdb")&";"
Setrs=Server.CreateObject("ADODB.Recordset")
Setrs2=Server.CreateObject("ADODB.Recordset")
Setrs3=Server.CreateObject("ADODB.Recordset")
%>
6系统运行环境及测试分析
6.1系统运行环境
系统运行环境包括操作系统、硬件、地理信息系统和关系数据库管理系统等软件平台。
(1)操作系统:
WINDOWS95/98/2000,WINDOWSNT/XP等。
(2)配件:
PC机、工作站、服务器等。
(3)数据库:
ACCESS数据库。
6.2系统的运行
以下主要介绍本系统的运行情况:
(1)本系统运行后的大体效果如图16所示。
选择界面中的各功能就能进入相应模块。
图16系统运行效果
(2)选择分类查看库存(以目录形式),进入查看界面,如图17所示。
在这个窗体中,可以很直观的查看到物品的分类,进而逐步的找到需要的物品,该
(1)采用Winsock编写原始套接字Socket-Raw对数据包进行采集捕获,并可实现分类及自定义范围进行捕获;
(2)对捕获的数据包进行一定的解析;
(3)访问操作系统提供的网络性能参数接口,得到网卡总流量、输入流量和输出流量;
(4)系统提供了多种方式显示结果,如曲线图、列表等;
(5)使用IP帮助API获取网络统计信息;
(6)实现对部分常见威胁的预警,可继续开发扩展其报警功能。
1.5论文结构安排
本论文围绕Winsock标准套接字网络编程的各项实践内容展开。
具体内容安排如下:
第一章是引言,简要介绍开发背景、设计任务和论文结构安排;第二章介绍网络基础理论研究、数据包捕获与流量检测的技术原理;第三章介绍如何使用原始套接字实现数据捕获;第四章重点介绍网络流量监测工具的设计与实现过程,并且详细阐述了从系统功能总体设计、详细设计、具体实现的全部过程;第五章介绍了软件测试情况。
2相关的概念与技术
2.1OSI参考模型与TCP/IP体系结构
2.1.1OSI参考模型
开放系统互联参考模型OSI是由国际标准化组织ISO制定的标准化开放式的计算机网络层次结构模型,其结构如图1所示。
可以看出,该结构共有七层,各层主要实现如下功能:
(1)物理层,利用传输介质实现相邻节点间的物理连接,主要对机械、电气、功能和规程四个方面及信号传输速率方面进行规定;
(2)数据链路层,完成管理数据的传输,提供差错检测和恢复,并且提供流量控制,最终实现向上一层提供无差错、高可靠性的传输链路;
(3)网络层,执行路由算法和流量控制算法,完成数据分组传输,它是通信子网的最高层;
(4)传输层,提供端到端的无差错传输,同时,它也提供属于局通信网络接口,比如SOCKET;
(5)会话层,完成用户之间会话的组织、协调、分配用户名等;
(6)表示层,解决数据格式问题,规定编码方式;
(7)应用层,OSI的最高层,利用应用进程提供网络访问手段。
2.1.2TCP/IP体系结构
由于TCP/IP比其之前的OSI模型更具体实现,随着互联网的不断发展,遵循TCP/IP结构的网络不断普及,因此现在通常采用TCP/IP代表Internet体系结构。
TCP/IP的目的是在网络标准不同的情况下解决互联问题,可以说,网络互联是TCP/IP的核心。
TCP/IP的体系结构如图2所示。
TCP/IP在设计时重点并没有放在具体通信的实现上,所以对最后两层没有做出具体规定,同时表明它允许不同类型的通信网络参与通信。
它的四个层次功能如下。
(1)应用层,提供常用的应用程序及自定义的应用程序,数据传输时用TCP/IP协议来进行;
(2)传输层,提供端到端的应用程序之间的通信,可以使用传输控制协议TCP(TransmissionControlProtocol)或用户数据报协议UDP(UserDatagramProtocol)协议,前者提供可靠传输,传送单位是报文段,后者提供不可靠服务,传输单位是数据报,即分组。
此外,传输层另外一个功能就是区别应用程序;
(3)网际层,负责计算机之间的通信,采用的协议是IP协议,数据传送单位是分组,向上提供不可靠的传输服务;
(4)网络接口层,负责接收数据报,并实现发送,或者接收帧,提取IP数据报,交给互联网层。
2.1.3OSI模型与TCP/IP体系结构的区别
从前面的分析可以看出OSI模型和TCP/IP体系有许多不同之处,主要体现在问题的处理上面,例如:
(1)TCP/IP一开始就考虑的是异构网络的互联问题,并将IP看作是整个体系的重要组成部分,而ISO并没有认识到网际协议IP的重要性,导致最后只能单独划分一个子层来完成IP的作用;
(2)OSI最开始只注意到了面向连接的服务,而TCP/IP一开始就注意了面向连接和无连接的并重。
相比起来,TCP/IP更注重了数据传输的效率,而OSI则注重了传输的可靠性;
(4)TCP/IP虽然分层,但是调用关系并不像OSI那样严格,减少了不必要的开销,提高了传输效率。
2.2传输层的编程接口—Windows套接字编程技术
2.2.1Windows套接字的概念
Windows套接字—SOCKET,是为Windows系统开发的一套标准通用支持网络协议数据通信的API,它是网络通信的基础,即TCP/IP的网络编程接口,1994年被定为网络编程标准后,主要经历了Winsock1.1和Winsock2.0两种版本,它产生最终目的是可以适应应用程序开发者、网络服务商的需求,进程通过套接字的通信域来完成通信。
需要指出的是,套接字主要负责控制数据的输入与输出,主要在传输层和网络层,屏蔽了数据链路层和物理层[2]。
2.2.2套接字类型
根据通信性质把套接字主要分为流式套接字和数据报套接字两种。
它们的区别在于流式套接字提供双向、有序、无重复的数据流服务,但相对于数据报套接字来说系统开销较大。
数据报套接字也支持双向数据流,但并不注重传输可靠性、无重复性和有序性,但它保留了记录边界,由于数据报传输效率较高,所以还是得到了比较广泛的应用。
2.2.3涉及的几个基本概念
(1)字节顺序,不同的计算机采用不同的自己顺序存储数据,所以在这些数据进行通信时需要进行字节顺序的转换,所有传送给网络上套接字函数的IP地址和端口号均按照网络顺序安排,主要由sockaddr_in这个结构规范。
特别要注意的是,应用程序建立地址结构之前,用户输入需要将主机序列转换为网络序列(使用htons函数,反之使用ntohs函数)。
(2)阻塞与非阻塞,套接字有同步阻塞和异步非阻塞两种方法,阻塞模式时,套接字需要等待操作全部完成才结束,而当套接字处于非阻塞模式时,套接字以是否有新数据到达作为阻塞的标志。
阻塞方式套接字简单、方便,但是效率比较低,而非阻塞模式使用复杂点,但效率很高。
但是仍需强调一点,Winsock提供了几种I/O模型来解决异步问题,如“选择”、“重叠”、“事件选择”、“异步选择”等[3]。
2.3原始套接字
从用户的角度来看,标准的流式套接字和数据报套接字这两类套接字似乎涵盖了TCP/IP应用的全部,因为基于TCP/IP的应用,从协议栈的层次(如图3所示)上讲,在传输层的确只可能建立于TCP或UDP协议之上,而流式套接字和数据报套接字又分别对应于TCP和UDP,所以几乎所有的应用都可以用这两类套接字实现。
但是,当需要自定义数据包发送时或者需要分析所有经过网络的数据包的时候,就必须面临一种不同于前两者的方式—RawSocket,即原始套接字,程序员可以用它来发送和接收IP层以上的原始数据包,如ICMP,TCP,UDP等,不仅这样,它还可以实现如伪装本地IP、发送ICMP包等功能。
RawSocket广泛应用于高级网络编程,也是一种广泛的黑客手段。
著名的网络sniffer、拒绝服务攻击(DOS)、IP欺骗等都可以以RawSocket实现。
RawSocket与标准套接字(SOCK_STREAM、SOCK_DGRAM)的区别在于前者直接置"根"于操作系统网络核心(NetworkCore),而SOCK_STREAM、SOCK_DGRAM则“悬浮”于TCP和UDP协议的外围,如图4所示。
3网络数据的采集技术分析
3.1Windows下原始数据包捕获的实现
网络上的数据包捕获机制主要依赖于所使用的操作系统,不同的操作系统下有不同的实现途径。
在Windows环境下,可通过网络驱动程序接口规范(NDIS),WinSock的SOCK_RAW或虚拟设备驱动技术(VxD)等技术实现网络数据包的捕获功能。
前面已经介绍到了,使用原始套接字可以绕过Socket提供的功能,对底层的协议进行使用与开发,可以根据自己的需要生成想要的数据报文等,下面开始介绍使用原始套接字对数据包捕获进行开发的相关技术知识。
第一,使用套接字前,需要了解网卡接收数据的工作原理:
在正常情况下,网络接口只响应两种数据帧,一种是与自己的硬件相匹配的数据帧,另一种四向所有计算机广播的数据帧。
在系统中,数据帧的收发由网卡完成,网卡程序接收从网络发来的数据包,根据其硬件地址去判断是否与本机的硬件地址匹配,若匹配就通知CPU产生中断进行响应,然后调用驱动程序设置的网卡中断程序地址调用驱动程序接收数据,然后放入堆栈进行系统相关处理,若不匹配则直接丢弃该数据包[3]。
对于网络接口,它一般具有4种数据接收模式:
广播、组播、直接和混杂模式,只有当把接口设置为混杂模式时,网络接口才能接收所有的数据,无论地址是否匹配,所以在做本设计的时候一定要设置为混杂模式才能实现数据的采集。
第二,需要了解套接字的工作程序和使用方法:
一般来说,采用套接字开发网络程序需要经历以下几个基本步骤:
启动、创建、绑定、监听(接受连接)、连接、发送/接收数据、关闭、卸载等。
第三,具体到Windows下利用原始套接字捕获网络数据可以这样设计:
(1)启动套接字;
(2)创建一个原始套接字;
(3)将套接字与本地地址绑定;
(4)设置操作参数;
(5)设置网络接口为混杂模式;
(6)启动监听线程,开始接收数据;
(7)退出关闭套接字。
3.2原始数据包捕获的关键函数
(1)启动函数WSAStartup
intPASCALFARWSAStartup(DWORDwVersionRequested,LPWSADATAlpWSAData);
每一个套接字应用程序都必须调用该函数进行一系列初始化工作,并且只有调用成功返回后,才能开始使用套接字,其中参数wVersionRequested是版本号,高字节是次版本号、低字节是主版本号,参数lpWSAData是指向WSADATA结构的指针。
(2)套接字创建函数socket
SOCKETsocket(intaf,inttype,intprotocol);
所有的通信在建立之前都必须创建一个套接字,socket函数的功能就是创建套接字,其中参数af指协议地址族(addressfamily),当建立的套接字是依赖于UDP或TCP的话,需要设置af为AF_INET,表示采用IP协议。
参数type是指协议的套接字类型,采用流式套接字时用SOCK_STREAM,采用数据报套接字时用SOCK_DGRAM,采用原始套接字时用SOCK_RAW。
参数protocol是协议字段,默认情况下可直接设置为0。
(3)绑定函数bind
intbind(SOCKETs,structsockaddr_in*name,intnamelen);
成功创建套接字后的下一步工作就是将本地网络接口与套接字进行绑定,其中参数s是创建的套接字,参数name是需要绑定的通信对象的信息结构体指针,namelen是该结构的长度。
需要注意的是sockaddr_in结构:
structsockaddr_in{
shortsin_family;//地址族,设置为AF_INET
unsignedshortsin_port;//指定的端口号
structin_addrsin_addr;//
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 网络流量 监控 分析 工具 设计 实现 毕业论文
![提示](https://static.bdocx.com/images/bang_tan.gif)