




已阅读5页,还剩9页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
网络软件开发技术实验报告实验八 协议分析器程序的设计和实现1 实验目的:(1) 掌握对网络上传输数据包的捕获方法。(2) 解析Ethernet网数据帧头部的全部信息。(3) 解析IP、ICMP数据包(4) 解析传输层和应用层相关协议的头部信息(5)设置过滤规则,能过滤相应协议的数据包。(6)要求有良好的编程规范与注释信息,要求有详细的说明文档,包括程序的设计思想、活动图、关键问题以及解决方法。2实验环境:(1)VC6.0(2)局域网能连接Internet。3程序设计的关键问题以及解决方法有哪些? 当应用程序通过IP网络传送数据时,数据被送入TCP/IP协议栈中,然后从上至下逐一通过每一层,直到最后被当作一串比特流送入网络。其中每一层对收到的数据都要增加一些首部信息,这个过程被称作封装。通过以太网传输的比特流称作帧。在传输的另一端,当目的主机收到一个以太网数据帧时,数据就开始从协议栈由底向上逐层解析,去掉各层协议所加上的报文头部。每层协议均要检查报文头部中的协议标识字段,以确定要接收数据的上层协议,最终从报文中解析出应用层数据后交给应用程序处理。本次要编写的协议分析器,就是从网络中捕获数据包并对其进行解析的过程。因此,我们需要了解每层协议所规定的报文格式,然后由底向上逐层对数据包进行解码,最后将分析的结果显示出来。4 描述程序设计过程,并画出程序活动图。协议分析器总体结构:协议分析器的整体结构按功能应分为三个部分,自底向上分别是数据捕获模块、协议解析模块和用户显示模块。 数据包捕获流程:捕获数据包的算法一般分为以下几步:(1) 获取并列出当前网络设备列表。(2) 由用户选择并打开指定网卡。(3) 根据过滤规则设置过滤器。捕获数据包并进行解析处理: 协议解析模块:对捕获的数据包按照数据链路层(MAC)、网络层(IP、ARP/RARP)、传输层(TCP、UDP、ICMP)和应用层(HTTP等)的层次结构自底向上进行解析,最后将解析结果显示输出。1) 解析Ethernet帧2) 解析ARP数据包3) 解析IP数据包4) 解析ICMP,TCP和UDP数据包 5 给出关键代码,并附注释。1) 解析Ethernet帧 typedef structBYTE DesMacAddr6;/目的地址BYTE SrcMacAddr6;/源地址WORD LengthOrType;/数据长度或类型 MAC_HEADER;/MAC帧类型定义const u_short MAC_TYPE_IP= 0x0800;const u_short MAC_TYPE_ARP= 0x0806;const u_short MAC_TYPE_RARP= 0x8035;MAC_HEADER* pMacHdr = (MAC_HEADER*) pPkt;/ Mac目的地址strItem.Format(Destination address: %02X:%02X:%02X:%02X:%02X:%02X,pMacHdr-DesMacAddr0,pMacHdr-DesMacAddr1,pMacHdr-DesMacAddr2,pMacHdr-DesMacAddr3,pMacHdr-DesMacAddr4,pMacHdr-DesMacAddr5);/ Mac源地址strItem.Format(Source address: %02X:%02X:%02X:%02X:%02X:%02X, pMacHdr-SrcMacAddr0,pMacHdr-SrcMacAddr1,pMacHdr-SrcMacAddr2,pMacHdr-SrcMacAddr3,pMacHdr-SrcMacAddr4,pMacHdr-SrcMacAddr5);/类型/长度字段if (ntohs(pMacHdr-LengthOrType) 1500)/类型字段(Ethernet V2.0)/根据类型字段调用相应的上层协议处理函数if (ntohs(pMacHdr-LengthOrType) = MAC_TYPE_IP)/IP协议strItem = IP;ParseIPPacket(BYTE*)pMacHdr+sizeof(MAC_HEADER), iLen-sizeof(MAC_HEADER);else if (ntohs(pMacHdr-LengthOrType) = MAC_TYPE_ARP)/ARP协议strItem = ARP;ParseARPPacket(BYTE*)pMacHdr+sizeof(MAC_HEADER), iLen-sizeof(MAC_HEADER);else if (ntohs(pMacHdr-LengthOrType) = MAC_TYPE_RARP)/RARP协议strItem = RARP;ParseRARPPacket(BYTE*)pMacHdr+sizeof(MAC_HEADER),iLen-sizeof(MAC_HEADER);else/其他strItem = UNKNOWN;else /长度字段(IEEE802格式)strItem.Format(Length: %d bytes, ntohs(pMacHdr-LengthOrType); /*解析IEEE802数据帧,省略*/2) 解析ARP数据包/ARP头部结构typedef structu_short hardware_type;/16位硬件类型 u_short proto_type;/16位协议类型u_char hardware_addr_len;/8位硬件地址长度u_char proto_addr_len;/8位协议地址长度u_short operation_code;/16位操作码u_char src_mac_addr6;/源Ethernet网地址u_char scr_ip_addr4;/源IP地址u_char dest_mac_addr6;/目的Ethernet网地址u_char dest_ip_addr4;/目的IP地址 ARP_HEADER;/ARP报文操作码类型,1为请求,2位应答const u_short ARP_OP_REQUEST= 1; /ARP请求const u_short ARP_OP_REPLY= 2; /ARP应答ARP_HEADER* pARPHdr = (ARP_HEADER*)pPkt;ntohs(pARPHdr-hardware_type);/硬件类型ntohs(pARPHdr-proto_type);/上层协议类型pARPHdr-hardware_addr_len;/硬件地址长度pARPHdr-proto_addr_len;/协议地址长度/操作类型if (ntohs(pARPHdr-operation_code) = ARP_OP_REQUEST)strItem = (Request);else if (ntohs(pARPHdr-operation_code) = ARP_OP_REPLY)strItem = (Reply);/源Mac地址strItem.Format(Senders hardware address: %02X:%02X:%02X:%02X:%02X:%02X,pARPHdr-src_mac_addr0,pARPHdr-src_mac_addr1,pARPHdr-src_mac_addr2,pARPHdr-src_mac_addr3,pARPHdr-src_mac_addr4,pARPHdr-src_mac_addr5);/源IP地址in_addr ipAddr;memcpy(&ipAddr, pARPHdr-scr_ip_addr, sizeof(in_addr);inet_ntoa(ipAddr);/转化为点分十进制字符串/目的Mac地址strItem.Format(Targets hardware address: %02X:%02X:%02X:%02X:%02X:%02X,pARPHdr-dest_mac_addr0,pARPHdr-dest_mac_addr1,pARPHdr-dest_mac_addr2,pARPHdr-dest_mac_addr3,pARPHdr-dest_mac_addr4,pARPHdr-dest_mac_addr5);/目的IP地址memcpy(&ipAddr, pARPHdr-dest_ip_addr, sizeof(in_addr);inet_ntoa(ipAddr);/转化为点分十进制字符串/填充字段长度strItem.Format(Frame padding: %d bytes, iLen-sizeof(ARP_HEADER);3) 解析IP数据包/IP头部结构typedef structunsigned charhdr_len:4;/4位头部长度unsigned charversion:4;/4位版本号unsigned chartos;/8位服务类型unsigned shorttotal_len;/16位总长度unsigned shortidentifier;/16位标识符unsigned shortfrag_and_flags;/3位标志+13位片偏移unsigned charttl;/8位生存时间unsigned charprotocol;/8位上层协议号unsigned shortchecksum;/16位校验和unsigned longsource_ip;/32位源IP地址unsigned longdest_ip;/32位目的IP地址 IP_HEADER;IP_HEADER* pIPHdr = (IP_HEADER*)pPkt; /*解析IP头部各字段并显示输出*/根据不同上层协议调用相应解析函数switch (pIPHdr-protocol)case IPPROTO_TCP:strItem = TCP;ParseTCPPacket(BYTE*)pIPHdr+iIPHdrLen, iLen-iIPHdrLen);break;case IPPROTO_UDP:strItem = UDP;ParseUDPPacket(BYTE*)pIPHdr+iIPHdrLen, iLen-iIPHdrLen);break;case IPPROTO_ICMP:strItem = ICMP;ParseICMPPacket(BYTE*)pIPHdr+iIPHdrLen, iLen-iIPHdrLen);break;default:strItem = OTHERS;4) 解析ICMP,TCP和UDP数据包/ICMP基本头部typedef structBYTEtype;/8位类型BYTEcode;/8位代码USHORTcksum;/16位校验和 ICMP_BASE_HEADER;/-/ICMP回显头部(回显请求、回显应答)typedef structICMP_BASE_HEADER base_hdr;/基本头部USHORTid;/16位标识符USHORTseq;/16位序列号 ICMP_ECHO_HEADER;/-/ICMP差错报文头部(超时及目的不可达)typedef structICMP_BASE_HEADER base_hdr;/基本头部ULONGunused;/32位未用,必须为0 ICMP_ERROR_HEADER;pICMPHdr-type;/类型pICMPHdr-code;/代码ntohs(pICMPHdr-cksum);/校验和/根据不同类型解析后续字段switch (pICMPHdr-type)case ICMP_ECHO_REQUEST:/回显请求报文case ICMP_ECHO_REPLY:/回显应答报文ICMP_ECHO_HEADER* pICMPEchoHdr = (ICMP_ECHO_HEADER*)pPkt;ntohs(pICMPEchoHdr-id);/标识符ntohs(pICMPEchoHdr-seq);/序列号if (iLen sizeof(ICMP_ECHO_HEADER)/选项数据for (int i=0; iunused);/保留字段/解析产生差错的数据报IP首部(含选项字段)及其载荷的前8个字节ParseIPPacket(BYTE*)pICMPErrHdr+sizeof(ICMP_ERROR_HEADER), iLen-sizeof(ICMP_ERROR_HEADER);break;5) 解析HTTP数据包/*HTTP消息的拷贝存放在pHttpPkt指向的缓冲区中 首先在HTTP消息中查找代表消息头结束的空行*/char* pStopPos = strstr(pHttpPkt, rnrn);/结束指针指向最后的空行if (pStopPos != NULL)/存在空行char* pBegPos = pHttpPkt;/每行的首指针char* pCurPos = pHttpPkt;/每行的尾指针int iLine = 1;while (pC
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 乡村公路业绩合同样本
- 2025企业办公租赁合同
- 人防车位产权合同样本
- app 使用合同标准文本
- 个人公司合伙人合同样本
- 修车店劳务合同样本
- 代理酒水协议合同标准文本
- 上海吊车买卖合同样本
- 仓库货物托盘收购合同样本
- 会务外包合同样本
- 甘肃省卫生健康委公务员考试招聘112人往年题考
- 数字化赋能护理质量管理研究进展与价值共创视角
- 冲压模具设计与制造工艺考试复习题库(含答案)
- 2025牡丹江辅警考试题库
- 电网工程设备材料信息参考价(2024年第四季度)
- 电子产品生产工艺流程手册
- 产业经济学完整版ppt全套教程课件(最新)
- 4D现场管理培训ppt课件(PPT 45页)
- GB-T 18348-2022 商品条码 条码符号印制质量的检验(高清版)
- 预防艾滋病、梅毒、乙肝母婴传播实验室检测
- pep小学英语四年级下课文及翻译
评论
0/150
提交评论