网络协议分析课程设计

上传人:xzh****18 文档编号:33894081 上传时间:2018-02-18 格式:DOC 页数:17 大小:688KB
返回 下载 相关 举报
网络协议分析课程设计_第1页
第1页 / 共17页
网络协议分析课程设计_第2页
第2页 / 共17页
网络协议分析课程设计_第3页
第3页 / 共17页
网络协议分析课程设计_第4页
第4页 / 共17页
网络协议分析课程设计_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《网络协议分析课程设计》由会员分享,可在线阅读,更多相关《网络协议分析课程设计(17页珍藏版)》请在金锄头文库上搜索。

1、 网络编程语言课程大作业报告题 目: 协议分析器的设计与分析专 业: 计算机科学与技术班 级: 计科 5071 班学 号: 920070619姓 名: 万昌雄时 间: 2010-10-21I目 录1 概述 .11.1 目的 .11.2 选题 .12 课程大作业过程及结果 .12.1 编程环境及工具 .12.2 实现原理分析 .12.3 综合设计 .12.3.1 协议分析器总体结构的设计与实现 .12.3.2 数据捕获模块的设计与实现 .22.3.3 协议解析模块的设计与实现 .23 课程大作业总结 .43.1 小结 .43.2 我理解的网络通信编程 .53.3 改进设想 .5附录 关键代码 .

2、5网络编程语言课程大作业报告11 概述1.1 目的(1) 编写一个简化的协议分析器,了解数据通过网络传输时的封装与解析过程,加深理解 TCP/IP 协议栈的工作原理和网络应用软件开发能力(2) 掌握根据软件功能结构进行模块化设计的方法(3) 掌握 Winpcap 编程与抓包方法;了解使用原始套接字(raw socket)实现数据包捕获的方式;使用 Winpcap 库的流量统计和向网络中发包等高级特性。1.2 选题协议分析器程序2 课程大作业过程及结果2.1 编程环境及工具(1)操作系统:Windows XP SP2;(2)开发语言:C+ / MFC;(3)编译环境:MS Visual C+6.

3、0;(4)第 3 方函数库:Winpcap3.1;2.2 实现原理分析Ethernet 是目前应用最广泛的计算机连网方式,它是基于总线结构的,物理层采用广播方式。当一台主机向另一台主机发送数据时,发送主机会将包含目的主机 MAC 地址的数据帧发送到总线上,因此同一链路上所有活跃主机的网卡都能接收到该帧。正常情况下,网卡收到数据帧后,会先检测帧头的目的地址字段,如果该地址不是本机的 MAC 地址,则丢弃不管,因此只有具有该地址的目的主机会接受这个数据帧。但是,如果某个主机上的程序能够修改网卡的接收方式,使其成为“混杂”模式,即程序可以接收网络上所有的数据帧而不理会帧头的目的地址,利用这一点,就可

4、以实现协议分析器。因此协议分析器就是一种能将本地网卡状态设成“混杂”模式并接收网络上所有数据帧的软件。协议分析器工作在网络环境中的底层,拦截所有正在网络上传送的数据,并且通过相应的解析处理,可以实时分析这些数据的内容,进而分析所处的网络状态和整体拓扑布局。当应用程序通过 IP 网络传送数据时,数据就被送入 TCP/IP 协议栈中,然后由上至下逐一通过每一层,直到最后被当做一串比特流送入网络。其中每一层对收到的数据都要增加一些首部信息这个过程被称作封装。通过以太网传输的比特流被称作帧。在传输的另一端,当目的主机收到一个以太网数据帧时,数据就开始从协议栈有底向上逐层解析,去掉各层协议所加上的报文头

5、部。每层协议均要检查报头中的协议标识字段,以确定要接收数据的上层协议,最终从报文中解析出应用层数据后交给应用程序处理。协议分析器就是从网络中捕获数据包并对其进行解析的过程。因此我们需要了解每层协议所规定的报文格式,然后由底向上逐层对数据包进行解码,最后将分析的结果显示出来。网络编程语言课程大作业报告22.3 综合设计2.3.1 协议分析器总体结构的设计与实现协议分析器的整体结构按功能分成 3 个部分,自底向上分别是数据捕获模块、协议解析模块和用户显示模块。整体结构图 1 所示。以太网数据捕获模块协议解析模块用户界面网络流量数据包显示图 1 协议分析器整体结构图2.3.2 数据捕获模块的设计与实

6、现数据捕获模块的主要功能是进行数据采集,这个是整个系统的基础和数据来源。程序使用 Winpcap 来捕获网络中原始数据包。Winpcap 是数据包捕获的开放代码函数库,它可以完成以下主要功能:(1) 捕获网络中的的原始数据包。(2) 使用用户自定义规则对数据包进行过滤。(3) 发送用户自己构造的数据包到网络中。(4) 统计网络流量。(5) 使用 Winpcap 捕获数据包的算法使用 Winpcap 来捕获数据包的算法一般分为以下几步:(1) 获取并列出当前网络设备列表。(2) 由用户选择并打开指定网卡。(3) 根据过滤规则设置过滤器。(4) 捕获数据包并进行解析处理。 编程流程如图 2 所示。

7、 网络编程语言课程大作业报告3获取 网络设备列表打开设备 ,设为混杂模式编译过滤器设置过滤器循环捕获数据包关闭网络设备处理数据包图 2 数据包捕获流程图2.3.3 协议解析模块的设计与实现该模块的主要功能就是对捕获的数据包按照数据链路层(MAC) 、网络层(IP、ARP) 、传输层(TCP、UDP、ICMP)的层次结构自底向上进行解析,最后将解析结果显示输出。协议解析过程如图 3 所示。第三层协议类型为 ?P a r s e I P P a c k e t ( ) P a r s e A R P P a c k e t ( )解码结束E t h e r n e t V 2 . 0I PA R

8、P第四层协议类型为 ?P a r s e U D P P a c k e t ( )P a r s e I P P a c k e t ( ) P a r s e I C M P P a c k e t ( )U D PT C PI C M P开始解码P a r s e I P P a c k e t ( ) P a r s e A R P P a c k e t ( )解码结束I P第四层协议类型为 ?P a r s e U D P P a c k e t ( )P a r s e I P P a c k e t ( ) P a r s e I C M P P a c k e t ( )U

9、D PT C PI C M P开始解码图 3 协议解析流程图网络编程语言课程大作业报告4(1). 解析 Ethernet 帧Ethernet 帧结构中,前导码、帧前定界符和帧校验和(CRC)3 个字段均属于物理层内容,而我们使用的 Winpcap 抓包驱动程序不包含这些字段,因此只需解析目的地址、源地址、长度/类型和数据 4 个字段即可。前导码( 7 B )帧前定界符( 1 B )目的地址( 6 B )数据( 可变长度 )源地址( 6 B )长度 / 类型( 2 B )帧校验和( 4 B )图 4 Ethernet 帧结构(2).解析 ARP 数据包此处不做过多说明,主要代码分析见本文第 5

10、部分。硬件地址长度 ( 6 )上层协议类型 ( I P : 0 x 0 8 0 0 )硬件类型 ( E t h e r n e t : 1 )协议地址长度 ( 4 ) 操作 ( 请求 : 1 ; 应答 : 2 )发送端 M A C 地址接收端 I P 地址接收端 M A C 地址发送端 M A C 地址 发送端 I P 地址发送端 I P 地址 接收端 M A C 地址图 5 ARP 报文结构(3).解析 IP 数据包为了提高效率,可以使用链表结构存储 IP 数据包信息,同时还可以使用模板类 map来存储 IP 数据包信息。4 位版本4 位首部长度1 6 位总长度 ( 字节 )8 位服务类型

11、( T O S )3 位标志8 位生存时间 ( T T L )1 3 位片偏移1 6 位标识8 位协议 1 6 位首部校验和3 2 位源 I P 地址3 2 位目的 I P 地址3 2 位选项 ( 若有 )数据部分图 6 IP 报文结构(4).解析 ICMP、TCP、和 UDP 数据包网络编程语言课程大作业报告5解析 ICMP、TCP 和 UDP 数据包与解析 IP 报文类似,首先定义出各报文头部的数据结构类型,然后使用报头指针对结构成员进行访问。针对数据长度为 8 位的字段通过结构成员直接存取,对于 16 位和 32 位长度的字段使用 ntohs()或 ntohl()转化为主机字节序列后再做后续处理;对于长度小于 8 位的字段(如标志位或子字段)可以通过结构体中定义位域存取。1 6 位校验和( 不同类型和代码有不同的内容 )8 位类型 8 位代码图 7 ICMP 报文结构6 位保留1 6 位源端口号 1 6 位目的端口号3 2 位序列号3 2 位确

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 商业合同/协议

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号