实验八协议分析器程序的设计和实现_第1页
实验八协议分析器程序的设计和实现_第2页
实验八协议分析器程序的设计和实现_第3页
实验八协议分析器程序的设计和实现_第4页
实验八协议分析器程序的设计和实现_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验八协议分析器程序的设计和实现1.实验目的:(1) 掌握对网络上传输数据包的捕获方法。(2) 解析Ethernet网数据帧头部的全部信息。(3) 解析IP、ICMP数据包(4) 解析传输层和应用层相关协议的头部信息(5) 设置过滤规则,能过滤相应协议的数据包。(6) 要求有良好的编程规范与注释信息,要求有详细的说明文档,包括程序的设计思想、 活动图、关键问题以及解决方法。2实验环境:(1) VC6. 0(2) 局域网能连接In terneto3 程序设计的关键问题以及解决方法有哪些?当应用程序通过IP网络传送数据时,数据被送入TCP/IP协议栈屮,然后从上至下逐一通过每一 层,直到最后被当作

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

3、络层首部传输层首部应用层数据以太网尾部4 描述程序设计过程,并画出程序活动图。协议分析器总体结构:协议分析器的整体结构按功能应分为三个部分,自底向上分别是数据捕获模块、协议解析模块和用户显示模块。用户界面显示协议解析模块i数据包数据捕获模块ARPParseHTTPPacket0IPParseRARPPacketOParseIPPacketOParseARPPacketQ1)解析Ethernet帧2)解析ARP数据包3)解析IP数据包4)解析ICMP, TCP和UDP数据包5 给出关键代码,并附注释。1)角军析 Ethernet 帧 typedef structBYTE DesMacAddr6;

4、址BYTE SrcMacAddr6;WORD Len gthOrType; MAC_HEADER;/MAC帧类型定义/目的地/源地址数据长度或类型-0x0800;=0x0806;con st u_short MAC_TYPE_IPcon st u_short IAC_TYPE_ARPcon st u short MAC TYPE RARP二 0x8035;MAC_HEADER* pMacHdr 二(MAC_HEADER*) pPkt;/ Mac目的地址stritem. Format (Desti nation address : %02X:%02X:%02X:%02X:%02X:%02X,z,

5、pMacHdr-DesMacAddr0,pMacHdr-DesMacAddr1,pMacHdr-DesMacAddr2,pMacHdr-DesMacAddr3J,pMacHdr-DesMacAddr4, pMacHdr-DesMacAddr5);/ Mac源地址 strltem. Format (Source address: %02X:%02X:%02X:%02X:%02X:%02X,z,pMacHdr-SrcMacAddr0J,pMacHdr-SrcMacAddr1J,pMacHdr-SrcMacAddr2,pMacHdr-SrcMacAddr3,pMacHdr-SrcMacAddr4,p

6、MacHdr-SrcMacAddr (5);类型/长度字段辻(ntohs (pMacHdrLengthOrType) 1500)/ 类型字段(Ethernet V2. 0)/根据类型字段调用相应的上层协议处理函数辻(ntohs (pMacHdr-LengthOrType) = IAC_TYPE_IP)strltem = IP;ParselPPacket(BYTE*)pMacHdr+sizeof(MAC_HEADER),iLe n-sizeof(MAC_HEADER);else if (ntohs(pMacHdr-LengthOrType) = MAC_TYPE_ARP)strltem = AR

7、P;ParseARPPacket(BYTE*)pMacHdr+sizeof(MAC_HEADER), iLe n-sizeof(MAC_HEADER);else if (ntohs(pMacHdr-LengthOrType) = MAC_TYPE_RARP)strltem = RARP;ParseRARPPacket(BYTE*)pMacHdr+sizeof (MAC_HEADER), iLe n-sizeof(MAC_HEADER);else/IP协议/ARP协议/RARP协议/其他strltem 二UNKNOWN;else /长度字段(IEEE802格式)strltemFormat(Le

8、ngth: %d bytes, n tohs(pMacHdr-Le ngthOrType);/*解析IEEE802数据帧,省略*/ 2) 解析ARP数据包/ARP头部结构 typedef structu_short hardware_type; u_short proto_type;u char hardware addr le n;u_char proto_addr_le n;u_short operati on _code;u char src mac addr6; u char scr_ip_addr4;u_char dest_mac_addr6.;u_char dest_ip_addr

9、4; 16位硬件类型 16位协议类型/8位硬件地址长度8位协议地址长度 16位操作码/源Ethernet网地址/源IP地址/目的Ethernet网地址/目的IP地址 ARPJEADER;/ARP报文操作码类型,1为请求, const u_short ARP_OP_REQUEST con st u short ARP OP REPLYARP_HEADER* pARPHdr 二(ARP_ n tohs (pARPHdr-hardware_type); ntohs(pARPHdr-proto_type); pARPHdr-hardware_addr_le n; pARPHdr-proto_addr_

10、le n;/操作类型2位应答=1; /ARP 请求=2; /ARP 应答 HEADER*) pPkt;/硬件类型/上层协议类型/硬件地址长度/协议地址长度if (n tohs(pARPHdr-operation_code)(Request);二二 ARP_OP_REQUEST) strItem 二else if (n tohs(pARPHdr-operation_code)二二 ARP_OP_REPLY) stritem 二(Reply);/源 Mac 地址 stritem. Format (/zSe nder,s hardware address: %02X:%02X: %02X:%02X:

11、%02X:%02X,z,pARPHdr-src_niac_addr 0,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_n toa(ipAddr) :/转化为点分十进制字符串/目的Mac地址stritem. Format (Targets hardwar

12、e address: %02X:%02X:%02X:%02X:%02X:%02Xz,, pARPHdr- de s t_mac_addr0, pARPHdr-dest_mac_addr1, pARPHdr-dest_mac_addr2,pARPHdr- de s t_mac_addr 3, pARPHdx-dest_mac_addr4, pARPHdr-dest. jnac_addr5);/目的IP地址memcpy (&ipAddr, pARPHdr-dest_ip_addr, sizeof ( in _addr);inet_n toa(ipAddr) :/转化为点分十进制字符串刀填充字段长度

13、strItem. Format(Frame paddi ng: %d bytes, iLe n-sizeof(ARP_HEADER);3)解析IP数据包/IIP头部结构typedef struct114位头部长度114位版本号unsigned char hdr_len :4; un sig ned char vers ion :4; unsig ned char tos;118位服务类型un sig ned short un 誓?rW。n, idenshort un sig ned shorife37;frag_asig ned char ttl;nd_flags;n 16位总长度1116位标

14、识符 只d丄=亠c d UL /宀切118位生存时间un sig ned shortchecksum;un sig ned longsource_ipun sig ned longdest_ip;unsigned char protocol;118位上层协议号1116位校验和1132位源IP地址TTR4?侍曰的TP M tl卜 IPJEADER;IP_HEADER* pIPHdr 二(IP_HEADER*)pPkt;I*解析IP头部各字段并显示输出*1II根据不同上层协议调用相应解析函数switch (pIPHdr-protocol) case IPPROTO_TCP:stritem = TC

15、P;ParseTCPPacket (BYTE*)plPHdr+订PHdrLe n,让e n-订PHdrLe n) ; break; case IPPROTO_UDP:stritem = UDP;ParseUDPPacket(BYTE*)plPHdr+iIPHdrLe n, iLe n-ilPHdrLe n); break;case IPPROTO_ICMP:stritem =ParselCMPPacket(BYTE*)plPHdr+iIPHdrLe n, iLe niIPHdrLe n); break;default:stritem 二OTHERS;4) 解析ICMP, TCP和UDP数据包/ICMP基本头部typedef structBYTE type;BYTE code;USHORT cksum; ICMP_BASE_HEADER; 8位类型 8位代码 16位校验和/ICMP回显头部(回显请求、回显应答)typedef structICMP_BASE_HEADER base_hdr; /基本头部USHORTid; 16位标识符USHORTseq; 16 位序列号 ICMP_ECHO_HEADER;typedef/ /ICMP差错报文头部(j駁时及目的不可达)structICMP BASE HEADER b

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论