已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
计算机网络 课程设计报告书 设计题目: 协议分析 专 业: 计算机科学与技术 班 级: 10 级 1 班 姓 名: 齐特(组长) 宁文倩 谢晗 指导教师: 苏宪利 完成日期: 2012 年 1 月 3 日 i 目目 录录 1 1 概述概述1 1.1 目的.1 1.2 选题 .1 2 2 课程作业过程及结果课程作业过程及结果1 2.1 编程环境及工具.1 2.2 实现原理分析.1 2.3 综合设计.2 2.3.1 协议分析器总体结构的设计与实现.2 2.3.2 数据捕获模块的设计与实现.2 2.3.3 协议解析模块的设计与实现.3 3 3 课程大作业总结课程大作业总结4 3.1 小结.4 3.2 改进设想.6 附录附录 关键代码关键代码6 网络编程语言课程大作业报告 1 1 1 概述概述 1.1 目的 (1)编写一个简化的协议分析器,了解数据通过网络传输时的封装与解析过程,加 深理解 tcp/ip 协议栈的工作原理和网络应用软件开发能力 (2)掌握 winpcap 编程与抓包方法;使用 winpcap 库的流量统计和向网络中发包等 特性。 1.2 选题 协议分析器程序 2 2 课程作业过程及结果课程作业过程及结果 2.1 编程环境及工具 (1)操作系统:windows 7 (2)开发语言:c 语言 (3)编译环境:ms visual c+6.0; (4)第 3 方函数库:winpcap3.1; 2.2 实现原理分析 协议分析器工作在网络环境中的底层,拦截所有正在网络上传送的数据,并且通过相 应的解析处理,可以实时分析这些数据的内容,进而分析所处的网络状态和整体拓扑布局。 当应用程序通过 ip 网络传送数据时,数据就被送入 tcp/ip 协议栈中,然后由上至下 逐一通过每一层,直到最后被当做一串比特流送入网络。其中每一层对收到的数据都要增 加一些首部信息这个过程被称作封装。通过以太网传输的比特流被称作帧。在传输的另一 端,当目的主机收到一个以太网数据帧时,数据就开始从协议栈有底向上逐层解析,去掉 各层协议所加上的报文头部。每层协议均要检查报头中的协议标识字段,以确定要接收数 据的上层协议,最终从报文中解析出应用层数据后交给应用程序处理。 协议分析器就是从网络中捕获数据包并对其进行解析的过程。因此我们需要了解每层 协议所规定的报文格式,然后由底向上逐层对数据包进行解码,最后将分析的结果显示出 来。 2.3 综合设计 2.3.1 协议分析器总体结构的设计与实现 协议分析器的整体结构按功能分成 3 个部分,自底向上分别是数据捕获模块、协议解 析模块和用户显示模块。 网络编程语言课程大作业报告 2 以太网 数据捕获模块 协议解析模块 用 户 界 面 网络流量 数据包 显示 图 1 协议分析器整体结构图 2.3.2 数据捕获模块的设计与实现 数据捕获模块的主要功能是进行数据采集,这个是整个系统的基础和数据来源。程序 使用 winpcap 来捕获网络中原始数据包。winpcap 是数据包捕获的开放代码函数库,它可 以完成以下主要功能: (1)捕获网络中的的原始数据包。 (2)使用用户自定义规则对数据包进行过滤。 (3)发送用户自己构造的数据包到网络中。 (4)统计网络流量。 (5)使用 winpcap 捕获数据包的算法 使用 winpcap 来捕获数据包的算法一般分为以下几步: (1)获取并列出当前网络设备列表。 (2)由用户选择并打开指定网卡。 (3)根据过滤规则设置过滤器。 (4)捕获数据包并进行解析处理。 编程流程如图 2 所示。 网络编程语言课程大作业报告 3 获取 网络设备列表 打开设备, 设为混杂模式 编译过滤器 设置过滤器 循环捕获数据包 关闭网络设备 处理数据包 图 2 数据包捕获流程图 2.3.3 协议解析模块的设计与实现 该模块的主要功能就是对捕获的数据包按照数据链路层(mac) 、网络层 (ip、arp) 、传输层(tcp、udp、icmp)的层次结构自底向上进行解析,最后将解析 结果显示输出。协议解析过程如图 3 所示。 第三层协议类型为? parseippacket()parsearppacket() 解码结束 ethernet v2.0 ip arp 第四层协议类型为? parseudppacket() parseippacket()parseicmppacket() udp tcp icmp 开始解码 parseippacket()parsearppacket() 解码结束 ip 第四层协议类型为? parseudppacket() parseippacket()parseicmppacket() udp tcp icmp 开始解码 图 3 协议解析流程图 网络编程语言课程大作业报告 4 (1).解析 arp 数据包 此处不做过多说明,主要代码分析见本文第 5 部分。 硬件地址长度(6) 上层协议类型(ip: 0x0800)硬件类型(ethernet: 1) 协议地址长度(4)操作(请求: 1; 应答: 2) 发送端mac地址 接收端ip地址 接收端mac地址 发送端mac地址发送端ip地址 发送端ip地址接收端mac地址 图 4 arp 报文结构 (2).解析 ip 数据包 为了提高效率,可以使用链表结构存储ip 数据包信息,同时还可以使用模板类 map 来存储 ip 数据包信息。 4位 版本 4位 首部长度 16位总长度(字节) 8位 服务类型(tos) 3位 标志 8位 生存时间(ttl) 13位片偏移16位标识 8位协议16位首部校验和 32位源ip地址 32位目的ip地址 32位选项(若有) 数据部分 图 5 ip 报文结构 3 3 课程大作业总结课程大作业总结 3.1 小结 (1).启动: 程序启动后首先出现网卡选择对话框,如图 3-1 所示,在设备列表中选择需要进行捕 获的网卡。 网络编程语言课程大作业报告 5 图 3-1 网卡选择界面 (1).界面: 图 3-2 程序界面 网络编程语言课程大作业报告 6 3.2 改进设想 程序解析了 arp、ip,但仍不全面,例如没有包括 http 等协议,以后可对可解析的协 议类型作进一步的扩充。 附录附录 关键代码关键代码 #include “pcap.h“ /*packet handler 函数原型*/ void packet_handler(u_char *param, const struct pcap_pkthdr *header, const u_char *pkt_data); int main() pcap_if_t *alldevs;/网卡列表指针 pcap_if_t *d;/网卡列表指针 int inum; int i = 0; pcap_t *adhandle; char errbufpcap_errbuf_size;/ /错误消息缓冲区 /获取本机设备列表 if(pcap_findalldevs(/获取本地网络设备列表 exit(1); /打印列表 for(d = alldevs; d != null; d = d-next) printf(“%d. %s“, +i, d-name); if(d-description)/如果有描述则输出详细信息 printf(“ (%s)n“, d-description); else printf(“ (no description available) n“);/提示没有描述 之后输出网卡号 printf(“enter the interface number (1-%d):“, i); scanf(“%d“, if(inum i) printf(“ninterface number out of range.n“);/错误信息 /释放设备列表 网络编程语言课程大作业报告 7 pcap_freealldevs(alldevs); return -1; /跳转到选中的适配器 for(d = alldevs, i = 0; i next, i+); /打开设备 if(adhandle = pcap_open(d-name,65536,0,1000,null,errbuf) = null) printf(“nunable to open the adapter.%s is not supported by winpcapn“, d- name); /释放设备列表 pcap_freealldevs(alldevs); return -1; printf(“nlistening on %s. n“, d-description);/进行描述 /释放设备列表 pcap_freealldevs(alldevs); /开始捕捉 pcap_loop(adhandle, 0, packet_handler, null); return 0; /每次捕捉到数据包时,libpcap 都会自动调用这个回调函数 void packet_handler(u_char *param, const struct pcap_pkthdr *header, const u_char *pkt_data) struct tm *ltime; char timestr16; time_t
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论