- 1、本文档共6页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验八-协议分析器程序的设计和实现
实验八 协议分析器程序的设计和实现实验目的:(1) 掌握对网络上传输数据包的捕获方法。(2) 解析Ethernet网数据帧头部的全部信息。(3) 解析IP、ICMP数据包(4) 解析传输层和应用层相关协议的头部信息(5)设置过滤规则,能过滤相应协议的数据包。(6)要求有良好的编程规范与注释信息,要求有详细的说明文档,包括程序的设计思想、活动图、关键问题以及解决方法。2实验环境:(1)Linux(2)局域网能连接Internet。3.程序设计的关键问题以及解决方法有哪些?数据捕获模块,协议解析模块和用户显示模块各个模块的制作与协议分析,当程序通过IP网络传送数据时,数据被送入TCP/IP协议栈中,然后由上至下逐一通过每一层,直到最后被当做一串比特流送入网络。每一层都对收到的数据增加一个首部信息。在数据捕获模块,要根据过滤规则设置过滤器,协议解析模块,设置不同的解析规则,分别对IP、ICMP、TCP、UDP、HTTP等数据包进行解析4.描述程序设计过程,并画出程序活动图。程序分为三个部分,数据捕获模块,协议解析模块和用户显示模块,数据捕获模块捕获网络中的原始数据包,使用用户自定义规则对数据包进行过滤,发送用户自己构造的数据包到网络中,统计网络流量。协议解析模块负责解析Ethernet帧,解析ARP数据包,解析IP数据包,解析ICMP、TCP和UDP数据包,解析HTTP数据包。5.给出关键代码,并附注释。获取并列出网络设备列表?pcap_if_t?*pAdaptersList=NULL;?????????//网卡列表指针?pChar?errbuf[PCAP_ERRBUF_SIZE];?????//错误消息缓冲区?pcap_findalldevs(pAdaptersList,errbuf);??//获取本地网络设备列表?int?iAdapterCount=0;?for(pcap_if_t?*pAdapter=pAdatersList;pAdapter!=NULL;pAdapter=pAdapter-next)?{?iAdapterCount++;?if(pAdapter-description)????????//如果有描述则输出详细信息?else?????????????????????????//否则输出网卡号?}由用户选择并打开指定网卡?//跳到指定网卡?pAdapter=pAdapterslist;?for(int?i=0;iiAdapterSelected;i++)?pAdapter=pAdapter-next;?//打开网卡,bpromiscMode标志设为1表示混杂模式?pcap_t?*hAdapterHandle;?hAdapterHandle=pcap_open_live(pAdapter-name,//网卡句柄??65535,?//允许数据包的最大长度?bPromiscMode,?//?混杂模式标志?300,?//读取数据超时?errbuf?);???????//错误信息缓冲区根据过滤规则设置过滤器?//pAdater指向要设置的网卡,首先获取子网掩码?u_int?uNetMask;?if(pAdapter-addresser)??uNetMask=((sockadder_in*)(pAdapter-addresser-addresses-netmask))-sin_addr.s_addr;?else?uNetMask=oxffffff;?//忽略子网掩码?char?szFilterCode[1024];?/*根据规则构造过滤表达式,并存放在szFileterCode缓冲区中*/?//编译过滤器?bpf_program?fpcode;?if?(pcap_compile(hAdapterHandle,fpCode,szFilterCode,TRUE,uNetMask)0)?{TRACE(“unale?to?compile?the?filter.error?Msg?%s”,pcap_geterr(hAdapterHandle));?return;?}?//设置过滤器?pcap_setfilter(hAdapterHandle,fpCode);?捕获数据包?While((iResult=pcap_next_ex(hAdapterHandle,pPktHdr,pPktData))=0)?{?//接收超时继续循环?if(iResult==0)continue;?//处理收到的数据包?PacketHandler();?}解析Ethernet帧?//MAC头部?typedef?struct?{??BYTE?DesMacAddr[6];??//目的地址?BYTE?SrcMacAddr[6];??//源地址?WORD?LengthO
文档评论(0)