网络流量监控软件的设计与实现毕业设计论文(编辑修改稿)内容摘要:

断程序地址调用驱动程序接收数据,然后放入堆栈进行系统相关处理,若不匹配则直接丢弃该数据包。 对于网络接口,它一般具有 4种数据接收模式:广播、组播、直接和混杂模式,只有当把接口设置为混杂模式时,网络接口才能接收所有的数据,无论地址是否匹配, 所以在做本设计的时候一定要设置为混杂模式才能实现数据的采集。 第二,需要了解套接字的工作程序和使用方法: 一般来说,采用套接字开发网络程序需要经历以下几个基本步骤: 启动、创建、绑定、监听(接受连接)、连接、发送 /接 收数据、关闭、卸载等。 第三,具体到 Windows下利用原始套接字捕获网络数据可以这样设计:( 1)启动套接字;( 2)创建一个原始套接字; ( 3)将套接字与本地地址绑定;( 4)设置操作参数;( 5)设置网络接口为混杂模式;( 6)启动监听线程,开始接收数据;( 7)退出关闭套接字。 原始 数据包捕获的关键函数 ( 1)启动函数 WSAStartup int PASCAL FAR WSAStartup (DWORD wVersionRequested , LPWSADATA lpWSAData); 每一个套接字应用程序都必须调用该函数进行一系列初始化工作,并且只有调用成功返回后,才能开始使用套接字,其中参数 wVersionRequested是版本号,高字节是次版本号、低字节是主版本号,参数 lpWSAData是指向 WSADATA结构的指针。 ( 2)套接字创建函数 socket SOCKET socket (int af , int type , int protocol)。 所有的通信在建立之前都必须创建一个套接字, socket函数的功能就是创建套接字,其中参数 af指协议地址族( address family),当建立的套接字是依赖于 UDP或 TCP的话,需要设置 af为 AF_INET,表示采用 IP协议。 参数 type是指协议的套接字类型,采用流式套接字时用 SOCK_STREAM,采用数据报套接字时用 SOCK_DGRAM,采用原始套接字时用 SOCK_RAW。 参数 protocol是协议字段,默 认情况下可直接设置为 0。 3. 网络流量监控系统各模块的设计与实现 开发环境介绍 本设计开发平台采用 Microsoft Visualstudio ,它是目前使用比较广泛的 Winsock开发平台,因此具有较强的适应性,能够在很多的操作系统平台上运行,设计后具有直观的简洁的操作界面,稳定性也比较高。 总体结构设计 通过收集与分析简单网络流量监控软件的用户需求,总结出以下特征: ( 1)需要实现对网络接口数据包的尽可能多的捕获 , 将网卡设置为混杂模式,然后进行数据包的采 集; ( 2)数据包的内容要进行一定的解析,对数据包的协议类型、源目地址、数据包截获时间、数据包内容需要进行分析; ( 3)根据用户不同的要求能够依照特定地址范围、特定协议类型相关包等条件进行自定义监视; ( 4)监视结果输出有实时流量图、列表等显示; ( 5)实现日志记录,便于日后分析 ; ( 6)对某些常见的攻击进行发现分析。 总合以上系统要求与综合分析,本系统总体设计如下,采用 VC++ 编写,系统具有三个主要功能部分:数据捕获与显示模块、流量信息统计模块、流量绘制模块,如图 所示。 数据采 集模块:完成网络接口数据的捕获、解析和显示,可以根据用户定义条件组合来进行捕获,如只监视采用 TCP 或 UDP 协议的数据包,也可以监视用户希望关注的相关 IP地址的数据包,同时完成数据封包日志记录,提高了系统的灵活性。 同时,在对数据包的解析过程中对一些常见入侵攻击特征进行判断,发出预警。 该模块采用编写原始套接字开图 系统总体设计结构图 流量监控分析系统 数据采集模块 信息统计模块 流量绘制模块 发。 信息统计模块:完成统计功能,如统计 IP 要实现统计接收到的数据报数量、接收到的数据中协议出错的数量、正在请求传输的数量、路由表中可用路由数量、丢弃的数量、需要重组 /成功重组的数量等,统计 ICMP 需要完 成发送 /接收的消息数量、满足超过 TTL的数量、重定向数量、时间戳请求 /应答数量等;采用 IP 助手函数完成。 流量绘制模块:完成总流量、输入流量、输出流量、瞬时流量值、最高流量值的显示;采用访问注册表网络性能数据完成有关数据的获取,通过流量图显示。 流程图设计 本系统总体设计如下,采用 VC++,系统具有三个主要功能部分:数据捕获与显示模块、流量信息统计模块、流量绘制模块。 根据上面对各个功能模块的划分,进行更进一步的分析和设计,得到数据采集、注册表网络性能块访问大致的工作流程图,如图 所示: 图 数据捕获流程图 代码分析 ( 1) 功能实现说明 该功能模块主要由封装的 CSockSupport, CsockHelper ,CpackInterDlg, CbinDataDlg四个类完成 , 下面将对这些类进行详细说明。 CsockSupport类 : 主要负责检查 Socket是否支持 , 在该类中封装了 WSAStartup完成 Socket的启动 ; CsockHelper类 : 主要实现了从获取本机信息结构 、 Socket创建、绑定、设置、启动线程、 数据接收到协议 分析的全部方法。 GetLocalIP实现获取本机地址操作的方法 ,LPHOSTENT lphp是定义一个主机信息结构 , 获取过程由 gethostname(szLoame,MAX_HOSTNAME_LAN)与 gethostbyname(szLoame)完成 ; 第一个参数是用于放置本机名称的缓冲 , 第二个参数是缓冲区长度 , 最后利用 i_ntoa将 IP地址转化为 “.” 式地址。 StartCapture方法完成套接字的创建、绑定、设置操作方式和启动线程 ; 具体完成如下 : m_sockCap = socket(AF_INET , SOCK_RAW , IPPROTO_IP)。 //创建套接字 bind(m_sockCap, (PSOCKADDR)amp。 sa, sizeof(sa))。 //绑定 setsockopt(m_sockCap, SOL_SOCKET, SO_REUSEADDR, (char*)amp。 bopt, sizeof(bopt)) //设置操作 setsockopt(m_sockCap, IPPROTO_IP, IP_HDRINCL, (char*)amp。 bopt, sizeof(bopt)) //设置操作 m_hCapThread = CreateThread(NULL, 0, CaptureThread, thi。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。