解析ARP数据包课程设计_第1页
解析ARP数据包课程设计_第2页
解析ARP数据包课程设计_第3页
解析ARP数据包课程设计_第4页
解析ARP数据包课程设计_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

--本页仅作为文档封面,使用时请直接删除即可--

--内页可以根据需求调整合适字体及大小----本页仅作为文档封面,使用时请直接删除即可--

--内页可以根据需求调整合适字体及大小--解析ARP数据包课程设计(总18页)南京工程学院(课程设计)院系:通信工程学院课程名称:计算机网络与通信设计名称:解析ARP数据包班级:算通081班 姓名:周洁学号:1设计时间:2011年06月13日——2011年06月16日目录课程设计目的………2课程设计要求………2相关知识………………3ARP数据报的消息格式……3ARP协议的工作流程………..4课程设计分析……….6课程设计中的重点及难点………………..6参考算法………….………………7核心代码…………..8相关扩展………………15心得体会………………16参考文献………………17课程设计目的:本课程设计的目的是对网络上的ARP数据包进行解析,从而熟悉ARP数据包的结构,对ARP协议有更好的理解和认识。课程设计要求:通过编制程序,获取网络中的ARP数据包,解析数据包的内容,将结果显示在标准输出上,并同时写入日志文件。程序的具体要求如下所示:1,以命令行的形式运行,如下所示:11ARP其中,11ARP为程序名;11为日志文件名。2,程序输出内容如下所示:源IP地址源MAC地址目的IP地址操作时间各部分的说明如下所示:源IP地址:输出ARP消息格式中的源IP地址字段;源MAC地址:输出ARP消息格式中的源物理地址字段;目的IP地址:输出ARP消息格式中的目的IP地址字段;目的MAC地址:输出ARP消息格式中的目的物理地址字段;操作:输出ARP消息格式中的操作字段,若为ARP请求,则为1,若为ARP应答,则为2;时间:该ARP包产生的时间。3,当程序接收到键盘输入Ctrl+C时字段相关知识ARP数据报的消息格式网络上的每台主机或设备都有一个或多个IP地址。IP地址是网络层的地址,在网络层,数据被组装成IP包。但是发送IP包需要物理设备的支持(通常是Ethernet设备,在本课程设计中我们指定为Ethernet设备),即发送端必须知道目的物理地址才能将IP包发送出去,所以需要一种将IP地址映射为物理地址的机制。ARP协议就是用来完成这个任务的。ARP协议能够在同一个物理网络中,在给定目的主机或设备的IP地址的条件下,得到目的主机或设备的物理地址。ARP协议的数据包格式如图所示:08162431(位)硬件类型协议类型物理地址长度协议地址长度操作源物理地址(八位组0~3)源物理地址(八位组4~5)源IP地址(八位组0~1)源IP地址(八位组2~3)目的物理地址(八位组0~1)目的物理地址(八位组2~5)目的IP地址(八位组0~3)ARP数据包的消息格式下面对数据包的各个部分进行说明硬件类型:指定硬件接口类型。例如,值为1表示Ethernet协议类型:指定发送方支持的上层协议的类型物理地址长度:指定物理(硬件)地址的长度协议地址长度:网络层协议的地址长度。若为IP协议,其值为4操作:指定ARP的操作类型,例如,1表示ARP请求,2表示ARP应答源物理地址:指定发送方的IP地址目的物理地址:指定目的物理地址。目的IP地址:指定目的IP地址ARP分组必须在数据链路层中被封装成侦,才能发送出去封装形式如图所示ARP消息ARP消息帧头部帧数据帧头部帧数据将ARP数据包封装成一个帧b)ARP协议的工作流程。在发送一个ARP分组之前,源主机首先根据目的IP地址,在本地ARP高速缓存表中查找与之对应的目的物理地址。如果找到对应的物理地址,就不用进行地址解析,否则需要进行地址解析。实现地址解析的第一步是产生ARP请求分组。在相应的字段写入本地主机的源物理地址、源IP地址,在目的物理地址字段写入0,并在操作字段写入1。将ARP分组发送到本地的数据链路层,并封装成帧。以源物理地址作为源地址,以物理广播地址(FF-FF-FF-FF-FF-FF)作为目的地址,通过物理层发送出去。由于采用了广播地址,因此网段内所有的主机或设备都能接受到该帧。除了目的主机外,所有接受到该分组的主机和设备都会丢弃该分组,因为目的主机能够识别ARP消息中的目的IP地址。目的主机发送ARP应答分组。在ARP应答分组中,以请求分组中源物理地址、源IP地址作为其目的物理地址、目的IP地址,并将目的主机自身的物理地址、IP地址填入应答分组的源物理地址、源IP地址字段,并在操作字段中写入2。该分组通过数据链路层以点对点的方式发送出去(因为现在目的方已经知道双方的物理地址)。源结点接收到ARP应答分组,知道对应于目的IP地址的目的物理地址,将它作为一条新记录加入到ARP高速缓存表。源结点将有完整源IP地址、源物理地址、目的IP地址、目的物理地址的信息和数据作为一个发送分组,传送给它的数据链路层并封装成桢,然后以点对点的方式发送到目的主机。四、课程设计分析课程设计中的重点及难点程序中会用到Winpcap,Winpcap是Win32环境下数据包捕获的开放代码函数库。基于Winpcap的应用程序一般按照下面几个步骤进行设计:输出网卡设备列表。选择网卡并打开。捕获数据包时,可能需要设置过滤器。捕获数据包或者发送数据包。在程序设计过程中需要注意网络—主机字节顺序的转化。由于不同的计算机系统所采用的数据表示方式不同,对于2B或4B的数据,有的采用低字节地址存放数据的高权值位,而有的却以低地址字节存放数据低权位值,在网络的数据传输中,我们应该统一表示,所以我们在捕获数据包后,应将数据包头部的表示长度或类型的数据转换成本地机的表达形式。可以利用函数ntohs()将网络字节序转换为主机字节序。选择网卡并打开时,注意选择可用的网卡。参考算法取得当前网卡设备列表。选择Ethernet网卡并打开,注意判断所选网卡是否为实际存在的可用网卡。设置过滤器,此处的过滤器正则表达式为“arp”或者“etherproto\\arp”。捕获数据包并进行处理(包括输出各IP地址,物理地址,操作类型以及时间)。由于要记录日志文件,为了便于输出流参数,建议采用pcap_next_ex()函数。流程图如图所示:开始开始获取网卡列表获取网卡列表选取Ethernet网卡选取Ethernet网卡打开网卡(混杂模式)打开网卡(混杂模式)编译设置过滤器编译设置过滤器捕获ARP包并将其相应内容输出捕获ARP包并将其相应内容输出核心代码ARP数据包结构structarppkt{ unsignedshorthdtyp;; pcap_freealldevs(alldevs);n";pcap_freealldevs(alldevs);return;}n";pcap_freealldevs(alldevs);return;}循环捕获ARP包,并进行解析while((result=pcap_next_ex(adhandle,&header,&pkt_data))>=0){输出ARP数据包的各个域的内容到文件和屏幕上}源程序#include<>#pragmacomment(lib,"")0001 unsignedshortprotyp; unsignedcharhdsize; unsignedcharprosize; unsignedshortop; u_charsmac[6]; u_charsip[4]; u_chardmac[6]; u_chardip[4];};voidpacket_handler(constpcap_pkthdr*header,constu_char*pkt_data,ostream&out);voidmain(intargc,char*argv[]){ if(argc!=2) { cout<<"Usage:arpparselogfilename"<<endl; cout<<"pressanykeytocontinue."<<endl; _getch(); return; } pcap_if_t*alldevs; pcap_if_t*d; pcap_t*adhandle; charerrbuf[PCAP_ERRBUF_SIZE]; u_intnetmask; charpacket_filter[]="etherproto\\arp"; structbpf_programfcode; structpcap_pkthdr*header; constu_char*pkt_data; if(pcap_findalldevs(&alldevs,errbuf)==-1) { cout<<"Errorinpcap_findalldevs:"<<errbuf; return; } for(d=alldevs;d;d=d->next) { if((adhandle=pcap_open_live(d->name,1000,1,300,errbuf))==NULL) { cout<<"\nUnabletoopentheadapter."; pcap_freealldevs(alldevs); return; } if(pcap_datalink(adhandle)==DLT_EN10MB&&d->addressess!=NULL) break; }if(d==NULL){cout<<"\nNointerfacesfound!MakesureWinpcapisinstalled.\n";return;}n";pcap_freealldevs(alldevs);return;}n";pcap_freealldevs(alldevs);return;}cout<<"\t\tlisteningon"<<d->description<<"..."<<endl<<endl;;(ios::left);out<<setw(3)<<int(arph->sip[3])<<"";(ios::uppercase);for(i=0;i<5;i++)out<<hex<<setw(2)<<int(arph->smac[i])<<'-';out<<hex<<setw(2)<<int(arph->

温馨提示

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

评论

0/150

提交评论