




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
网络流量监控及分析工具的设计与实现摘要互联网迅速发展的同时,网络安全问题日益成为人们关注的焦点,病毒、恶意攻击、非法访问等都容易影响网络的正常运行,多种网络防御技术被综合应用到网络安全管理体系中,流量监控系统便是其中一种分析网络状况的有效方法,它从数据包流量分析角度,通过实时地收集和监视网络数据包信息,来检查是否有违反安全策略的行为和网络工作异常的迹象。在研究网络数据包捕获、TCP/IP原理的基础上,采用面向对象的方法进行了需求分析与功能设计。该系统在VisualC++6.0环境下进行开发,综合采用了Socket-Raw、注册表编程和IP助手API等VC编程技术,在系统需求分析的基础上,对主要功能的实现方案和技术细节进行了详细分析与设计,并通过测试,最终实现了数据包捕获、流量监视与统计主要功能,达到了预定要求,为网络管理员了解网络运行状态提供了参考。关键词:网络管理;数据采集;流量统计;Winsock2TheDesignandImplementationofMonitoringandAnalyzingToolforNetworkTrafficAbstractWiththerapiddevelopmentofInternet,networksafetyhasbecomepeople’sconcern,virus,vigorousattack,illegalvisitandsooncaneasilyaffectthenormalnetworkperformance.Variouskindsofnetworkdefendingtechnologyhavebeencomprehensivelyappliedintothemanagementsystemofnetworksafety.Networktrafficsystemisoneoftheeffectivemeasurestoanalysisnetworkcondition.Fromtangleofanalyzingpackettraffic,itcanexaminethesafetyviolationandtheabnorperformanceofnetworkbytimelycollectingandmonitoringpacketsinformation.Byusingthewayofobject-oriented,thisdesignmakesaneedsanalysisandabilitydesigningbasedonthestudyofnetworkpacketcollectingandTCP/IPtheory.UndertheenvironmentofVisualC++6.0,thissystemadoptsVCprogramtechnologiesofSocket-Raw,WindowsregisterandIpHelperAPI.Onthebasisofsystemanalysis,itmakesadeliberateanalysisandtestofplansanddetailstoimplementpacketscollecting,trafficmonitoringandstatistics.Sothismeetsourneedsandmakesareferenceformanagerstogettoknowthenetworkconditions.Keywords:networkmanagement;datacollection;trafficanalysis;Winsock2毕业设计(论文)原创性声明和使用授权说明原创性声明本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。作者签名:日期:指导教师签名:日期:使用授权说明本人完全了解XX大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。作者签名:日期:目录论文总页数:22页引言1课题背景1网络安全管理的现状与需求1网络流量监控的引入1本文的目的与任务2论文结构安排2相关的概念与技术2OSI参考模型与TCP/IP体系结构2OSI参考模型2TCP/IP体系结构3OSI模型与TCP/IP体系结构的区别4传输层的编程接口—Windows套接字编程技术4Windows套接字的概念4套接字类型5涉及的几个基本概念5原始套接字5网络数据的采集技术分析6Windows下原始数据包捕获的实现6原始数据包捕获的关键函数7网络流量监控系统各模块的设计与实现9开发背景介绍9总体结构设计9流程图设计10各模块功能概述与实现11数据包采集中各类的关系11数据包捕获与分析模块11流量获取模块13数据统计模块17常见攻击分析功能18系统测试19测试环境19硬件环境19操作系统及软件运行环境19测试步骤19测试结果评价19结论19参考文献20致谢21声明1第页共22页1引言1.1课题背景随着构建网络基础技术和网络应用的迅速发展以及用户对网络性能要求的提高,使得网络管理成为迫切需要解决的问题,有效的网络管理能够保证网络的稳定运行和持续发展,更重要的是,随着网络规模的扩大和黑客技术的发展,入侵和攻击的案例日益增多,对稳定的网络服务、信息安全、互联网秩序都提出了严峻的挑战,网络安全管理在整个网络管理系统里扮演起更为重要的角色。1.2网络安全管理的现状与需求目前,在网络应用不断深入和技术频繁升级的同时,非法访问、恶意攻击等安全威胁也在不断推陈出新,愈演愈烈。防火墙、VPN、IDS、防病毒、身份认证、数据加密、安全审计等安全防护和管理系统在网络中得到了广泛应用。从网络安全专业管理人员的角度来说,最直接的需求就是根据分类在统一的界面中监视网络中各种运行性能状态,获取相关数据信息、日志信息和报警信息等,并进行分类汇总、分析和审计;同时完成攻击事件报警、响应等功能。因此,用户的网络管理需要不断健全整体网络安全管理解决方案,从统一安全管理平台总体调控配置到多层面、分布式的安全系统,实现对各种网络安全资源的集中监控、策略管理、审计及多种安全功能模块之间的互动,从而有效简化网络安全管理工作,提升网络的安全水平和可用性、可控制性、可管理性。1.3网络流量监控的引入网络安全管理体系中,流量监控和统计分析是整个管理的基础。流量检测主要目的是通过对网络数据进行实时连续的采集监测网络流量,对获得的流量数据进行统计计算,从而得到网络主要成分的性能指标。网络管理员根据流量数据就可以对网络主要成分进行性能分析管理,发现性能变化趋势,并分析出影响网络性能的因素及问题所在。此外,在网络流量异常的情况下,通过扩展的流量检测报警系统还可以向管理人员报警,及时发现故障加以处理。在网络流量检测的基础上,管理员还可对感兴趣的网络管理对象设置审查值范围及配置网络性能对象,监控实时轮询网络获取定义对象的当前值,若超出审查值的正常预定值则报警,协助管理员发现网络瓶颈,这样就能实现一定程度上的故障管理。而网络流量检测本身也涉及到安全管理方面的内容。由此可见,对于一个有效的网络安全管理系统来说,功能的实现都或多或少的依赖于流量信息的获取。因此网络流量信息的采集可以说是网络安全管理系统得以实现的核心基石。它的应用可以在一定程度上检测到入侵攻击,可以有效地帮助管理人员进行网络性能管理,并利用报警机制协助网管人员采取对应的安全策略与防护措施,从而减少入侵攻击所造成的损失。1.4本文的目的与任务该网络流量监控及分析工具主要用途是通过实时连续地采集网络数据并对其进行统计,得到主要成分性能指标,结合网络流量的理论,通过统计出的性能指数观察网络状态,分析出网络变化趋势,找出影响网络性能的因素。本设计题目是教师自拟项目,前期任务主要是设计并完成系统的初步框架,实现网络数据的捕获,并解决相应问题,后期主要是通过一些API函数完成对各类数据信息的统计。本系统实现以下功能:采用Winsock编写原始套接字Socket-Raw对数据包进行采集捕获,并可实现分类及自定义范围进行捕获;对捕获的数据包进行一定的解析;访问操作系统提供的网络性能参数接口,得到网卡总流量、输入流量和输出流量;系统提供了多种方式显示结果,如曲线图、列表等;使用IP帮助API获取网络统计信息;实现对部分常见威胁的预警,可继续开发扩展其报警功能。1.5论文结构安排本论文围绕Winsock标准套接字网络编程的各项实践内容展开。具体内容安排如下:第一章是引言,简要介绍开发背景、设计任务和论文结构安排;第二章介绍网络基础理论研究、数据包捕获与流量检测的技术原理;第三章介绍如何使用原始套接字实现数据捕获;第四章重点介绍网络流量监测工具的设计与实现过程,并且详细阐述了从系统功能总体设计、详细设计、具体实现的全部过程;第五章介绍了软件测试情况。2相关的概念与技术2.1OSI参考模型与TCP/IP体系结构2.1.1OSI参考模型开放系统互联参考模型OSI是由国际标准化组织ISO制定的标准化开放式的计算机网络层次结构模型,其结构如图1所示。可以看出,该结构共有七层,各层主要实现如下功能:物理层,利用传输介质实现相邻节点间的物理连接,主要对机械、电气、功能和规程四个方面及信号传输速率方面进行规定;数据链路层,完成管理数据的传输,提供差错检测和恢复,并且提供流量控制,最终实现向上一层提供无差错、高可靠性的传输链路;网络层,执行路由算法和流量控制算法,完成数据分组传输,它是通信子网的最高层;传输层,提供端到端的无差错传输,同时,它也提供属于局通信网络接口,比如SOCKET;会话层,完成用户之间会话的组织、协调、分配用户名等;表示层,解决数据格式问题,规定编码方式;应用层,OSI的最高层,利用应用进程提供网络访问手段。图图1OSI参考模型2.1.2TCP/IP体系结构由于TCP/IP比其之前的OSI模型更具体实现,随着互联网的不断发展,遵循TCP/IP结构的网络不断普及,因此现在通常采用TCP/IP代表Internet体系结构。TCP/IP的目的是在网络标准不同的情况下解决互联问题,可以说,网络互联是TCP/IP的核心。TCP/IP的体系结构如图2所示。图2图2OSI参考模型与TCP/IP结构TCP/IP在设计时重点并没有放在具体通信的实现上,所以对最后两层没有做出具体规定,同时表明它允许不同类型的通信网络参与通信。它的四个层次功能如下。应用层,提供常用的应用程序及自定义的应用程序,数据传输时用TCP/IP协议来进行;传输层,提供端到端的应用程序之间的通信,可以使用传输控制协议TCP(TransmissionControlProtocol)或用户数据报协议UDP(UserDatagramProtocol)协议,前者提供可靠传输,传送单位是报文段,后者提供不可靠服务,传输单位是数据报,即分组。此外,传输层另外一个功能就是区别应用程序;网际层,负责计算机之间的通信,采用的协议是IP协议,数据传送单位是分组,向上提供不可靠的传输服务;网络接口层,负责接收数据报,并实现发送,或者接收帧,提取IP数据报,交给互联网层。2.1.3OSI模型与TCP/IP体系结构的区别从前面的分析可以看出OSI模型和TCP/IP体系有许多不同之处,主要体现在问题的处理上面,例如:TCP/IP一开始就考虑的是异构网络的互联问题,并将IP看作是整个体系的重要组成部分,而ISO并没有认识到网际协议IP的重要性,导致最后只能单独划分一个子层来完成IP的作用;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涉及的几个基本概念字节顺序,不同的计算机采用不同的自己顺序存储数据,所以在这些数据进行通信时需要进行字节顺序的转换,所有传送给网络上套接字函数的IP地址和端口号均按照网络顺序安排,主要由sockaddr_in这个结构规范。特别要注意的是,应用程序建立地址结构之前,用户输入需要将主机序列转换为网络序列(使用htons函数,反之使用ntohs函数)。阻塞与非阻塞,套接字有同步阻塞和异步非阻塞两种方法,阻塞模式时,套接字需要等待操作全部完成才结束,而当套接字处于非阻塞模式时,套接字以是否有新数据到达作为阻塞的标志。阻塞方式套接字简单、方便,但是效率比较低,而非阻塞模式使用复杂点,但效率很高。但是仍需强调一点,Winsock提供了几种I/O模型来解决异步问题,如“选择”、“重叠”、“事件选择”、“异步选择”等[3]。2.3原始套接字从用户的角度来看,标准的流式套接字和数据报套接字这两类套接字似乎涵盖了TCP/IP应用的全部,因为基于TCP/IP的应用,从协议栈的层次(如图3所示)上讲,在传输层的确只可能建立于TCP或UDP协议之上,而流式套接字和数据报套接字又分别对应于TCP和UDP,所以几乎所有的应用都可以用这两类套接字实现。但是,当需要自定义数据包发送时或者需要分析所有经过网络的数据包的时候,就必须面临一种不同于前两者的方式—RawSocket,即原始套接字,程序员可以用它来发送和接收IP层以上的原始数据包,如ICMP,TCP,UDP等,不仅这样,它还可以实现如伪装本地IP、发送ICMP包等功能。图图3协议栈层次RawSocket广泛应用于高级网络编程,也是一种广泛的黑客手段。著名的网络sniffer、拒绝服务攻击(DOS)、IP欺骗等都可以以RawSocket实现。RawSocket与标准套接字(SOCK_STREAM、SOCK_DGRAM)的区别在于前者直接置"根"于操作系统网络核心(NetworkCore),而SOCK_STREAM、SOCK_DGRAM则“悬浮”于TCP和UDP协议的外围,如图4所示。图图4标准套接与原始套接字的关系3网络数据的采集技术分析3.1Windows下原始数据包捕获的实现网络上的数据包捕获机制主要依赖于所使用的操作系统,不同的操作系统下有不同的实现途径。在Windows环境下,可通过网络驱动程序接口规范(NDIS),WinSock的SOCK_RAW或虚拟设备驱动技术(VxD)等技术实现网络数据包的捕获功能。前面已经介绍到了,使用原始套接字可以绕过Socket提供的功能,对底层的协议进行使用与开发,可以根据自己的需要生成想要的数据报文等,下面开始介绍使用原始套接字对数据包捕获进行开发的相关技术知识。第一,使用套接字前,需要了解网卡接收数据的工作原理:在正常情况下,网络接口只响应两种数据帧,一种是与自己的硬件相匹配的数据帧,另一种四向所有计算机广播的数据帧。在系统中,数据帧的收发由网卡完成,网卡程序接收从网络发来的数据包,根据其硬件地址去判断是否与本机的硬件地址匹配,若匹配就通知CPU产生中断进行响应,然后调用驱动程序设置的网卡中断程序地址调用驱动程序接收数据,然后放入堆栈进行系统相关处理,若不匹配则直接丢弃该数据包[3]。对于网络接口,它一般具有4种数据接收模式:广播、组播、直接和混杂模式,只有当把接口设置为混杂模式时,网络接口才能接收所有的数据,无论地址是否匹配,所以在做本设计的时候一定要设置为混杂模式才能实现数据的采集。第二,需要了解套接字的工作程序和使用方法:一般来说,采用套接字开发网络程序需要经历以下几个基本步骤:启动、创建、绑定、监听(接受连接)、连接、发送/接收数据、关闭、卸载等。第三,具体到Windows下利用原始套接字捕获网络数据可以这样设计:启动套接字;创建一个原始套接字;将套接字与本地地址绑定;设置操作参数;设置网络接口为混杂模式;启动监听线程,开始接收数据;退出关闭套接字。3.2原始数据包捕获的关键函数启动函数WSAStartupintPASCALFARWSAStartup(DWORDwVersionRequested,LPWSADATAlpWSAData);每一个套接字应用程序都必须调用该函数进行一系列初始化工作,并且只有调用成功返回后,才能开始使用套接字,其中参数wVersionRequested是版本号,高字节是次版本号、低字节是主版本号,参数lpWSAData是指向WSADATA结构的指针。套接字创建函数socketSOCKETsocket(intaf,inttype,intprotocol);所有的通信在建立之前都必须创建一个套接字,socket函数的功能就是创建套接字,其中参数af指协议地址族(addressfamily),当建立的套接字是依赖于UDP或TCP的话,需要设置af为AF_INET,表示采用IP协议。参数type是指协议的套接字类型,采用流式套接字时用SOCK_STREAM,采用数据报套接字时用SOCK_DGRAM,采用原始套接字时用SOCK_RAW。参数protocol是协议字段,默认情况下可直接设置为0。绑定函数bindintbind(SOCKETs,structsockaddr_in*name,intnamelen);成功创建套接字后的下一步工作就是将本地网络接口与套接字进行绑定,其中参数s是创建的套接字,参数name是需要绑定的通信对象的信息结构体指针,namelen是该结构的长度。需要注意的是sockaddr_in结构:structsockaddr_in{shortsin_family;//地址族,设置为AF_INETunsignedshortsin_port;//指定的端口号structin_addrsin_addr;//IP地址charsin_zero[8];};由于主机序列与网络序列的关系,在程序中需要使用htons等函数进行转换工作。(4)设置接口模式函数WSAIoctlintWSAAPIWSAIoctl(SOCKETs,DWORDdwIoControlCode,LPVOIDlpvInBuffer,DWORDcbInBuffer,LPVOIDlpvOutBuffer,DWORDcbOutBuffer,LPDWORDlpcbBytesReturned,LPWSAOVERLAPPEDlpOverlapped,LPWSAOVERLAPPED_COMPLETION_ROUTINElpCompletionRoutine);其中,s为一个套接口的句柄,dwIoControlCode为操作控制代码,lpvInBuffer为输入缓冲区的地址,cbInBuffer为输入缓冲区的大小,lpvOutBuffer为输出缓冲区的地址,cbOutBuffer为输出缓冲区的大小,lpcbBytesReturned为输出实际字节数的地址,lpOverlapped为WSAOVERLAPPED结构的地址,lpCompletionRoutine为一个指向操作结束后调用的例程指针。调用成功后,WSAIoctl函数返回0,否则的话,将返回INVALID_SOCKET错误,应用程序可通过WSAGetLastError来获取错误代码。(5)数据接收函数recvintrecv(SOCKETs,char*buf,intlen,intflags);4网络流量监控系统各模块的设计与实现4.1开发背景介绍本设计开发平台采用MicrosoftVisualstudio6.0,它是目前使用比较广泛的Winsock开发平台,因此具有较强的适应性,能够在很多的操作系统平台上运行,设计后具有直观的简洁的操作界面,稳定性也比较高。4.2总体结构设计通过收集与分析简单网络流量监控软件的用户需求,总结出以下特征:需要实现对网络接口数据包的尽可能多的捕获,将网卡设置为混杂模式,然后进行数据包的采集;数据包的内容要进行一定的解析,对数据包的协议类型、源目地址、数据包截获时间、数据包内容需要进行分析;根据用户不同的要求能够依照特定地址范围、特定协议类型相关包等条件进行自定义监视;监视结果输出有实时流量图、列表等显示;实现日志记录,便于日后分析;对某些常见的攻击进行发现分析。总合以上系统要求与综合分析,本系统总体设计如下,采用VC++6.0编写,系统具有三个主要功能部分:数据捕获与显示模块、流量信息统计模块、流量绘制模块,如图5所示。图5系统总体设计结构图流量监控分析系统数据采集模块信息统计模块流量绘制模块数据采集模块:完成网络接口数据的捕获、解析和显示,可以根据用户定义条件组合来进行捕获,如只监视采用TCP或UDP协议的数据包,也可以监视用户希望关注的相关IP地址的数据包,同时完成数据封包日志记录,提高了系统的灵活性。同时,在对数据包的解析过程中对一些常见入侵攻击特征进行判断,发出预警。该模块采用编写原始套接字开发。信息统计模块:完成统计功能,如统计IP要实现统计接收到的数据报数量、接收到的数据中协议出错的数量、正在请求传输的数量、路由表中可用路由数量、丢弃的数量、需要重组/成功重组的数量等,统计ICMP需要完成发送/接收的消息数量、满足超过TTL的数量、重定向数量、时间戳请求/应答数量等;采用IP助手函数完成。流量绘制模块:完成总流量、输入流量、输出流量、瞬时流量值、最高流量值的显示;采用访问注册表网络性能数据完成有关数据的获取,通过流量图显示。4.3流程图设计根据上面对各个功能模块的划分,进行更进一步的分析和设计,得到数据采集、注册表网络性能块访问大致的工作流程图,如图6与图7所示。图6数据捕获处理流程图7网络性能数据块访问流程4.4各模块功能概述与实现4.4.1数据包采集中各类的关系经过上面的分析与设计,得到该系统的总体功能结构、工作流程,也确定了从编写套接字到最后捕获数据,要经过创建、绑定、设置工作模式、启动线程、接收数据等一系列的处理操作。为了实现处理中的每一步操作,设计了数据捕获的类关系,如图8所示。图图8数据包采集中各类的关系在上图中CSockSupport,CSockHelper,CPackInterDlg,CBinDataDlg等是封装了各部分主要处理功能的类。且这些类中封装了和这些类的操作相关的方法。将在后面对这些类的功能和实现进行详细介绍。4.4.2数据包捕获与分析模块(1)功能实现说明该功能模块主要由封装的CSockSupport,CsockHelper,CpackInterDlg,CbinDataDlg四个类完成,下面将对这些类进行详细说明。CsockSupport类:主要负责检查Socket是否支持2.0版本,在该类中封装了WSAStartup完成Socket的启动;CsockHelper类:主要实现了从获取本机信息结构、Socket创建、绑定、设置、启动线程、数据接收到协议分析的全部方法,详细处理流程见图9所示。GetLocalIP实现获取本机地址操作的方法,LPHOSTENTlphp是定义一个主机信息结构,获取过程由gethostname(szLocname,MAX_HOSTNAME_LAN)与gethostbyname(szLocname)完成;第一个参数是用于图9CSockHelper类处理流程放置本机名称的缓冲,第二个参数是缓冲区长度,最后利用inet_ntoa将IP地址转化为“.”式地址。StartCapture方法完成套接字的创建、绑定、设置操作方式和启动线程;具体完成如下:m_sockCap=socket(AF_INET,SOCK_RAW,IPPROTO_IP);//创建套接字bind(m_sockCap,(PSOCKADDR)&sa,sizeof(sa));//绑定setsockopt(m_sockCap,SOL_SOCKET,SO_REUSEADDR,(char*)&bopt,sizeof(bopt));//设置操作setsockopt(m_sockCap,IPPROTO_IP,IP_HDRINCL,(char*)&bopt,sizeof(bopt));//设置操作WSAIoctl(m_sockCap,SIO_RCVALL,&dwBufferInLen,sizeof(dwBufferInLen),dwBufferLen,sizeof(dwBufferLen),&dwBytesReturned,NULL,NULL);//混杂模式m_hCapThread=CreateThread(NULL,0,CaptureThread,this,0,NULL);//启动线程线程函数CaptureThread主要完成数据的接收。数据接收后,将缓冲区数据转化为IP数据格式后即可以开始解析过程,协议名称获取如下:for(inti=0;i<MAX_PROTO_NUM;i++)if(ProtoMap[i].ProtoNum==iProtocol)returnProtoMap[i].ProtoText;return“”;ParseIPPack方法完成数据包的解析:intiIphLen=sizeof(unsignedlong)*(pIpheader->h_lenver&0xf)//获取数据包长度协议解析:switch(iProtocol){caseIPPROTO_TCP:„„caseIPPROTO_UDP:„„caseIPPROTO_ICMP:„„default:„„}StopCapture完成关闭线程和套接字操作:if(m_hCapThread){TerminateThread(m_hCapThread,0);//中断进程CloseHandle(m_hCapThread);//关闭句柄m_hCapThread=NULL;}if(m_sockCap)closesocket(m_sockCap);//关闭套接字CbinDataDlg类主要完成对已捕获数据的存储和显示方法;CpackInterDlg类通过建立CbinDataDlg类和CsockHelper类对象实现数据捕获、解析、显示、存储等,同时它完成对捕获条件设置控件、日志记录控件的编写,在这里就不做详细介绍了。(2)界面设计(见图10)图10数据捕获模块界面4.4.3流量获取模块(1)设计说明设计思路:实际编程时,Windows系统内提供了一个系统性能的接口,只需要访问这个接口就可以得到网络性能相关的数据,如流量;根据这个想法,设计出了本功能模块的子功能模块如下:访问性能数据子模块:负责对注册表进行访问,获取流量数据;显示子模块:负责将数据绘制在窗口中;框架子模块:负责消息映射和消息处理;本模块中,将使用到一个注册表访问函数RegQueryValueEx,它根据开放的注册表键值与名字查找相关的类型和数据。它的函数原型如下:LONGRegQueryValueEx(HKEYhKey,LPCTSTRlpValueName,LPDWORDlpReserved,LPDWORDlpType,LPBYTElpData,LPDWORDlpcbData);参数说明:hKey为预定的注册表系统键值;lpValueName为需要查询的目标键值的名字;lpReserved保留,但是必须为NULL;lpType为键值类型;lpData输入/输出接收键值的数据;lpcbData输入/输出接收键值的缓冲大小标志。在WindowsNT下,当调用RegQueryValueEx时,若hKey被设置为HKEY_PERFORMANCE_DATA返回的数据并不是直接显示被请求的数据对象。所以程序需要遍历整个数据块,数据块中的逻辑结构如图11所示。图11注册表网络性能数据块逻辑结构参照图4-6可以很容易地确定性能数据块的查询过程,从数据块的性能数据结构PERF_DATA_BLOCK开始,然后索引到PERF_OBJECT_TYPE结构,而PERF_COUNTER_DEFINITION结构可以通过PERF_OBJECT_TYPE的成员HeaderByteLength找到位置偏移,每一个PERF_OBJECT_TYPE的成员DefinitionLength都能确定一个对应的PERF_INSTANCE_DEFINITION结构,PERF_INSTANCE_DEFINITION结构决定着PERF_COUNTER_BLOCK结构[3]。下面列出了获得网络接口流量的部分关键代码://得到当前的接口名字InterfaceName=Interfaces.GetAt(pos);//开辟性能数据缓冲unsignedchar*data=newunsignedchar[DEFAULT_BUFFER_SIZE];//从RegQueryValueEx返回的值:本例中忽略改变量//从网络对象(索引是510)查询性能数据RegQueryValueEx(HKEY_PERFORMANCE_DATA,"510",NULL,&type,data,&size)PERF_DATA_BLOCK*dataBlockPtr=(PERF_DATA_BLOCK*)data;下面详细说明,注册表数据性能块访问过程的实现://枚举链表中第一个对象PERF_OBJECT_TYPE*objectPtr=FirstObject(dataBlockPtr);//遍历链表for(inta=0;a<(int)dataBlockPtr->NumObjectTypes;a++){charnameBuffer[255];//判断是否是网络对象索引号是510if(objectPtr->ObjectNameTitleIndex==510){//偏移变量DWORDprocessIdOffset=ULONG_MAX;//找到第一个计数器PERF_COUNTER_DEFINITION*counterPtr=FirstCounter(objectPtr);//遍历链表for(intb=0;b<(int)objectPtr->NumCounters;b++){//判断接收的数据类型是否是我们需要的if((int)counterPtr->CounterNameTitleIndex==CurrentTrafficType)processIdOffset=counterPtr->CounterOffset;//下一个计数器counterPtr=NextCounter(counterPtr);}//数据类型不是我们需要的if(processIdOffset==ULONG_MAX){delete[]data;return1;}//找到第一个实例(instance)PERF_INSTANCE_DEFINITION*instancePtr=FirstInstance(objectPtr);//遍历整个实例for(b=0;b<objectPtr->NumInstances;b++){wchar_t*namePtr=(wchar_t*)((BYTE*)instancePtr+instancePtr->NameOffset);//得到这个实例的PERF_COUNTER_BLOCK PERF_COUNTER_BLOCK *counterBlockPtr =GetCounterBlock(instancePtr);//现在得到了接口的名字char*pName=WideToMulti(namePtr,nameBuffer,sizeof(nameBuffer));POSITIONpos=TotalTraffics.FindIndex(b);if(pos!=NULL){fullTraffic=*((DWORD*)((BYTE*)counterBlockPtr+processIdOffset));TotalTraffics.SetAt(pos,fullTraffic);}//如果当前的接口就是我们选择的接口if(InterfaceName==iName){traffic=*((DWORD*)((BYTE*)counterBlockPtr+processIdOffset));//判断处理的接口是否是新的if(CurrentInterface!=interfaceNumber){lasttraffic=acttraffic;trafficdelta=0.0;CurrentInterface=interfaceNumber;}else{trafficdelta=acttraffic-lasttraffic;lasttraffic=acttraffic;}delete[]data;return(trafficdelta);}//下一个实例instancePtr=NextInstance(instancePtr);}}//下一个对象objectPtr=NextObject(objectPtr);}delete[]data;return0;}catch(...){return0;}}(2)界面设计(见图12)图12流量监视模块界面4.4.4数据统计模块(1)可以利用微软的IP助手中的API函数实现IP的统计,网络管理员通过统计的数据可以在一定程度上发现网络性能瓶颈。涉及到的函数有GetUdpStatistic,GetTcpStatistic,GetIcmpStatistic,GetIStatistic,需要注意的是工程中要加载IPHelpapi.lib库。函数调用结果通过列表可以直观显示出来,网络管理人员可以通过其中统计数量的变化监视网络性能。(2)界面设计(见图13)图图13统计模块界面4.4.5常见攻击分析功能本设计中对部分常见的攻击行为进行了分析,在类CsockHelper中包解析过程中加入了常见攻击行为数据包的判断和报警,比如Land、PingofDeath等攻击,部分实现代码如下:if(pIpheader->sourceIP==pIpheader->destIP)pd=1;elseif(pIpheader->total_len>65535)pd=2;„„switch(pd){case1:AfxMessageBox("数据包源目的地址相同,疑是Land攻击");sprintf(sLandErrIP,"请注意监控该IP的数据:%s",szSourceIP);AfxMessageBox(sLandErrIP);break;case2:AfxMessageBox("受到疑似ping拒绝服务攻击");sprintf(sLandErrIP,"注意监控源IP的数据:%s",szSourceIP);AfxMessageBox(sLandErrIP);break;„„default:pd=0;break;}根据以后的开发需要,可设计更加丰富的规则对比库进行更多报警分析。实现更为完善的攻击分析服务。5系统测试5.1测试环境5.1.1硬件环境处理器P42.0GMhz以上;内存512M以上;多台普通搭载网卡的PC、经过路由器或交换机互联。5.1.2操作系统及软件运行环境操作系统Win2000/NT等;VC++6.0。5.2测试步骤首先,用多台PC搭建局域网络。其次,选定一台PC进行测试:数据包捕获(含设定条件)、封包日志保存、流量峰值、数据统计。确定每个功能模块的测试要求。对每个功能模块进行数据合法性检查、数据一致性检查。进行各模块的功能测试后,对关键模块进行回归测试。5.3测试结果评价本设计在Win2000/NT环境试运行下,编码后经过多次测试并将发现的错误及时修改,系统运行正常,基本达到设计目标,运行结果比较良好。结论互联网的迅猛发展,流量检测和统计分析成为整个网络安全管理系统的基础部分。网络管理员可以根据数据流量的变化规律,发现网络故障与攻击行为,及时采取措施,减少损失。网络流量分析系统是一个比较复杂的系统,由于时间关系,本设计只完成了大概框架,通过编写套接字、访问注册表等方法实现了部分主要功能,并没有完全完成详细指标,比如只提供了局域网内流量实时监测、数据包解析、简单统计等功能,这些都有待于进一步改进、深入与完善,下一步工作的重点将是提供更多监控功能,对网络行为进行更深入的分析。在整个设计过程中,重点放在了数据捕获与流量实时监控两个功能上,进而描述了采用套接字开发流量监控系统中的思路和关键事项,阐述了开发过程中碰到的一些技术问题,对功能需求与细节实现进行了详细分析与设计。通过这次开发过程,提高了我独立地分析、解决问题的能力,而且掌握了从需求分析、整体设计、详细设计到代码实现的软件开发流程,使我对软件工程中的理论有了更深入的认识。参考文献陈伯成,范闽,李英杰.利用网络监听维护子网系统安全的一种方法[J].计算机工程与应用.2000,(10):133-135。李凌.Winsock网络编程实用教程[M].北京:清华大学出版社,2003.11:9-35。曹衍龙,刘海英.VisualC++网络通信编程实用案例精选(第二版)[M].北京:人民邮电出版社,2006.5:425-437。孙贤淑.IP网络流量测量的研究与应用[D].北京:北京邮电大学[硕士论文],2005。刘欣然.支持高精度告警的网络入侵检测系统的设计与实现[D].北京:北京邮电大学[硕士论文],2005。许勇,吴忠堂.网络流量采集与分析系统中数据采集的研究与实现[D].广州:华南理工大学[硕士论文],2004。IP助手函数[OL].,2007-05-14。致谢本文是在秦智老师的热情关心和指导下完成的,他丰富的知识和严谨的治学作风使我受益匪浅,对顺利完成本课题起到了极大的作用,特别是在网络编程技术、网络数据包的分析、流量统计方法等方面得到了很大帮助。在此向他表示我最衷心的感谢!在论文完成过程中,本人在程序设计、网络编程调试方面,还得到了金虎老师和贺增杰等很多同学的热心帮助,本人向他们表示深深的谢意!最后向在百忙之中评审本文的各位专家、老师表示衷心的感谢!作者简介姓名:冯跃性别:男出生年月:1983-12-13民族:汉E-mail:fengyue-asdf@声明本论文的工作是2007年2月至2007年6月在成都信息工程学院网络工程系完成的。文中除了特别加以标注地方外,不包含他人已经发表或撰写过的研究成果,也不包含为获得成都信息工程学院或其他教学机构的学位或证书而使用过的材料。除非另有说明,本文的工作是原始性工作。关于学位论文使用权和研究成果知识产权的说明:本人完全了解成都信息工程学院有关保管使用学位论文的规定,其中包括:学校有权保管并向有关部门递交学位论文的原件与复印件。学校可以采用影印、缩印或其他复制方式保存学位论文。学校可以学术交流为目的复制、赠送和交换学位论文。学校可允许学位论文被查阅或借阅。学校可以公布学位论文的全部或部分内容(保密学位论文在解密后遵守此规定)。除非另有科研合同和其他法律文书的制约,本论文的科研成果属于成都信息工程学院。特此声明!作者签名:2007年06月日毕业设计(论文)原创性声明和使用授权说明原创性声明本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。作者签名:日期:指导教师签名:日期:使用授权说明本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。作者签名:日期:学位论文原创性声明本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。作者签名:日期:年月日学位论文版权使用授权书本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。涉密论文按学校规定处理。作者签名:日期:年月日导师签名:日期:年月日指导教师评阅书指导教师评价:一、撰写(设计)过程学生在论文(设计)过程中的治学态度、工作精神□优□良□中□及格□不及格学生掌握专业知识、技能的扎实程度□优□良□中□及格□不及格学生综合运用所学知识和专业技能分析和解决问题的能力□优□良□中□及格□不及格研究方法的科学性;技术线路的可行性;设计方案的合理性□优□良□中□及格□不及格完成毕业论文(设计)期间的出勤情况□优□良□中□及格□不及格二、论文(设计)质量论文(设计)的整体结构是否符合撰写规范?□优□良□中□及格□不及格是否完成指定的论文(设计)任务(包括装订及附件)?□优□良□中□及格□不及格三、论文(设计)水平论文(设计)的理论意义或对解决实际问题的指导意义□优□良□中□及格□不及格论文的观念是否有新意?设计是否有创意?□优□良□中□及格□不及格论文(设计说明书)所体现的整体水平□优□良□中□及格□不及格建议成绩:□优□良□中□及格□不及格(在所选等级前的□内画“√”)指导教师:(签名)单位:(盖章)年月日评阅教师评阅书评阅教师评价:一、论文(设计)质量1、论文(设计)的整体结构是否符合撰写规范?□优□良□中□及格□不及格2、是否完成指定的论文(设计)任务(包括装订及附件)?□优□良□中□及格□不及格二、论文(设计)水平1、论文(设计)的理论意义或对解决实际问题的指导意义□优□良□中□及格□不及格2、论文的观念是否有新意?设计是否有创意?□优□良□中□及格□不及格3、论文(设计说明书)所体现的整体水平□优□良□中□及格□不及格建议成绩:□优□良□中□及格□不及格(在所选等级前的□内画“√”)评阅教师:(签名)单位:(盖章)年月日教研室(或答辩小组)及教学系意见学位论文原创性声明本人郑重声明:所呈交的学位论文,是本人在导师的指导下进行的研究工作所取得的成果。尽我所知,除文中已经特别注明引用的内容和致谢的地方外,本论文不包含任何其他个人或集体已经发表或撰写过的研究成果。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式注明并表示感谢。本人完全意识到本声明的法律结果由本人承担。学位论文作者(本人签名): 年月日学位论文出版授权书本人及导师完全同意《中国博士学位论文全文数据库出版章程》、《中国优秀硕士学位论文全文数据库出版章程》(以下简称“章程”),愿意将本人的学位论文提交“中国学术期刊(光盘版)电子杂志社”在《中国博士学位论文全文数据库》、《中国优秀硕士学位论文全文数据库》中全文发表和以电子、网络形式公开出版,并同意编入CNKI《中国知识资源总库》,在《中国博硕士学位论文评价数据库》中使用和在互联网上传播,同意按
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 苏教版五年级数学上册第二单元2-5《梯形面积计算的练习》听评课记录
- 花城粤教版音乐七年级上册歌曲《校园的早晨》听评课记录1
- 高中数学人教B版必修三第七章7.4《数学建模活动:周期现象的描述》听评课记录
- 员工消防安全培训知识课件
- 辽海版美术八年级下册《第4课 剪纸拼贴》听评课记录1
- 花城版音乐八上第1单元《平湖秋月》听评课记录1
- 部编版 初中语文七年级下 第2单元第8课《木兰诗》听评课记录2
- 高中数学人教版必修第一册:2.2《基本不等式》听评课记录设计
- 苏教版数学一上册第8单元《10以内的加法和减法 加法与减法》第(听评课记录)
- 人教版二年级下册数学《有余数除法》听评课记录
- 2025年电信人工智能学习考试题库(含答案)
- 监理实施细则模板(信息化、软件工程)
- 2025年无房产证二手房交易协议书样本
- CNAS-CL01:2018 检测和校准实验室能力认可准则
- 中考名著《唐诗三百首》习题集
- 人民卫生营养与食品卫生学第8版营养与食品卫生学
- 2025年安徽省交通控股集团有限公司招聘笔试参考题库含答案解析
- GB/T 29912-2024城市物流配送汽车选型技术要求
- 《信息安全技术 网络攻击定义及描述规范》
- 《森林疗养基地建设技术导则》(T-CSF 001-2019)
- 《酒店客户关系管理 》课件-项目三 酒店客户关系管理制度
评论
0/150
提交评论