协议分析器程序的设计报告(青岛理工袁超)

协议分析器程序的设计报告(青岛理工袁超)

ID:47561474

大小:599.00 KB

页数:14页

时间:2020-01-15

协议分析器程序的设计报告(青岛理工袁超)_第1页
协议分析器程序的设计报告(青岛理工袁超)_第2页
协议分析器程序的设计报告(青岛理工袁超)_第3页
协议分析器程序的设计报告(青岛理工袁超)_第4页
协议分析器程序的设计报告(青岛理工袁超)_第5页
资源描述:

《协议分析器程序的设计报告(青岛理工袁超)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、......协议分析器设计报告协议分析器是一种常用的网络数据收集软件,它是在广播式网络环境下利用计算机网络接口截获目的地计算机的数据报文的一种工具。1.协议分析器的基本原理Ethernet是目前应用最广泛的计算机连网方式,它是基于总线结构的,物理层采用广播方式。当一台主机向另一台主机发送数据时,发送主机会将包含目的主机MAC地址的数据帧发送到总线上,因此同一链路上所有活跃主机的网卡都能接收到该帧。正常情况下,网卡收到数据帧后,会先检测帧头的目的地址字段,如果该地址不是本机的MAC地址,则丢弃不管,因此只有具有该地址的

2、目的主机会接受这个数据帧。但是,如果某个主机上的程序能够修改网卡的接收方式,使其成为“混杂”模式,即程序可以接收网络上所有的数据帧而不理会帧头的目的地址,利用这一点,就可以实现协议分析器。因此协议分析器就是一种能将本地网卡状态设成“混杂”模式并接收网络上所有数据帧的软件。协议分析器工作在网络环境中的底层,拦截所有正在网络上传送的数据,并且通过相应的解析处理,可以实时分析这些数据的内容,进而分析所处的网络状态和整体拓扑布局。当应用程序通过IP网络传送数据时,数据就被送入TCP/IP协议栈中,然后由上至下逐一通过每一层,

3、直到最后被当做一串比特流送入网络。其中每一层对收到的数据都要增加一些首部信息这个过程被称作封装。通过以太网传输的比特流被称作帧。在传输的另一端,当目的主机收到一个以太网数据帧时,数据就开始从协议栈有底向上逐层解析,去掉各层协议所加上的报文头部。每层协议均要检查报头中的协议标识字段,以确定要接收数据的上层协议,最终从报文中解析出应用层数据后交给应用程序处理。协议分析器就是从网络中捕获数据包并对其进行解析的过程。因此我们需要了解每层协议所规定的报文格式,然后由底向上逐层对数据包进行解码,最后将分析的结果显示出来。2.协议

4、分析器总体结构设计此次编程的编程环境为:(1)操作系统:WindowsXPSP2;(2)开发语言:C++/MFC;(3)编译环境:MSVisualC++6.0;(4)第3方函数库:Winpcap3.1;协议分析器的整体结构按功能分成3个部分,自底向上分别是数据捕获模块、协议解析模块和用户显示模块。整体结构图1所示。学习好帮手......图1协议分析器整体结构图3数据捕获模块设计数据捕获模块的主要功能是进行数据采集,这个是整个系统的基础和数据来源。程序使用Winpcap来捕获网络中原始数据包。Winpcap是数据包捕获

5、的开放代码函数库,它可以完成以下主要功能:(1)捕获网络中的的原始数据包。(2)使用用户自定义规则对数据包进行过滤。(3)发送用户自己构造的数据包到网络中。(4)统计网络流量。(5)使用Winpcap捕获数据包的算法使用Winpcap来捕获数据包的算法一般分为以下几步:(1)获取并列出当前网络设备列表。(2)由用户选择并打开指定网卡。(3)根据过滤规则设置过滤器。(4)捕获数据包并进行解析处理。编程流程如图2所示。学习好帮手......图2数据包捕获流程图4协议解析模块设计该模块的主要功能就是对捕获的数据包按照数据链

6、路层(MAC)、网络层(IP、ARP)、传输层(TCP、UDP、ICMP)的层次结构自底向上进行解析,最后将解析结果显示输出。协议解析过程如图3所示。图3协议解析流程图学习好帮手......4.1解析Ethernet帧Ethernet帧结构中,前导码、帧前定界符和帧校验和(CRC)3个字段均属于物理层内容,而我们使用的Winpcap抓包驱动程序不包含这些字段,因此只需解析目的地址、源地址、长度/类型和数据4个字段即可。图4Ethernet帧结构4.2解析ARP数据包此处不做过多说明,主要代码分析见本文第5部分。图5A

7、RP报文结构4.3解析IP数据包为了提高效率,可以使用链表结构存储IP数据包信息,同时还可以使用模板类map来存储IP数据包信息。图6IP报文结构学习好帮手......4.4解析ICMP、TCP、和UDP数据包解析ICMP、TCP和UDP数据包与解析IP报文类似,首先定义出各报文头部的数据结构类型,然后使用报头指针对结构成员进行访问。针对数据长度为8位的字段通过结构成员直接存取,对于16位和32位长度的字段使用ntohs()或ntohl()转化为主机字节序列后再做后续处理;对于长度小于8位的字段(如标志位或子字段)可

8、以通过结构体中定义位域存取。图7ICMP报文结构图8TCP报文结构图9UDP报文结构5部分主要源代码分析学习好帮手......5.1数据捕获模块5.1.1获取并列出网络设备列表pcap_if_t*pAdaptersList=NULL;//网卡列表指针pCharerrbuf[PCAP_ERRBUF_SIZE];//错误消息缓冲区pcap_find

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。