欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

    解析ARP数据包课程设计.doc

    • 资源ID:4297037       资源大小:751.50KB        全文页数:14页
    • 资源格式: DOC        下载积分:16金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要16金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    解析ARP数据包课程设计.doc

    -本页仅作为文档封面,使用时请直接删除即可-内页可以根据需求调整合适字体及大小-解析ARP数据包课程设计(总18页)南京工程学院(课程设计)院系:通信工程学院课程名称:计算机网络与通信 设计名称:解析ARP数据包 班级:算通081班 姓名:周洁 学号:1设计时间:2011年06月13日2011年06月16日目录1. 课程设计目的22. 课程设计要求23. 相关知识31) ARP数据报的消息格式32) ARP协议的工作流程.44. 课程设计分析.61) 课程设计中的重点及难点.62) 参考算法.73) 核心代码.85. 相关扩展156. 心得体会167. 参考文献17一、 课程设计目的: 本课程设计的目的是对网络上的ARP数据包进行解析,从而熟悉ARP数据包的结构,对ARP协议有更好的理解和认识。二、 课程设计要求: 通过编制程序,获取网络中的ARP数据包,解析数据包的内容,将结果显示在标准输出上,并同时写入日志文件。程序的具体要求如下所示:1,以命令行的形式运行,如下所示:11ARP其中,11ARP为程序名;11为日志文件名。,程序输出内容如下所示: 源地址 源地址 目的地址 操作时间各部分的说明如下所示: 源IP地址:输出ARP消息格式中的源IP地址字段;源MAC地址:输出ARP消息格式中的源物理地址字段;目的IP地址:输出ARP消息格式中的目的IP地址字段;目的MAC地址:输出ARP消息格式中的目的物理地址字段; 操作:输出ARP消息格式中的操作字段,若为ARP请求, 则为1,若为ARP应答,则为2;时间:该ARP包产生的时间。3,当程序接收到键盘输入Ctrl+C时字段三、 相关知识a) ARP数据报的消息格式 网络上的每台主机或设备都有一个或多个IP地址。IP地址是网络层的地址,在网络层,数据被组装成IP包。但是发送IP包需要物理设备的支持(通常是Ethernet设备,在本课程设计中我们指定为Ethernet设备),即发送端必须知道目的物理地址才能将IP包发送出去,所以需要一种将IP地址映射为物理地址的机制。ARP协议就是用来完成这个任务的。ARP协议能够在同一个物理网络中,在给定目的主机或设备的IP地址的条件下,得到目的主机或设备的物理地址。ARP协议的数据包格式如图所示: 0 8 16 24 31(位) 硬件类型 协议类型物理地址长度协议地址长度 操作 源物理地址(八位组03) 源物理地址(八位组45) 源IP地址(八位组01) 源IP地址(八位组23) 目的物理地址(八位组01) 目的物理地址(八位组25) 目的IP地址(八位组03)ARP数据包的消息格式下面对数据包的各个部分进行说明l 硬件类型:指定硬件接口类型。例如,值为1表示Ethernetl 协议类型:指定发送方支持的上层协议的类型l 物理地址长度:指定物理(硬件)地址的长度l 协议地址长度:网络层协议的地址长度。若为IP协议,其值为4l 操作:指定ARP的操作类型,例如,1表示ARP请求,2表示ARP应答l 源物理地址:指定发送方的IP地址l 目的物理地址:指定目的物理地址。l 目的IP地址:指定目的IP地址ARP分组必须在数据链路层中被封装成侦,才能发送出去封装形式如图所示ARP消息帧头部 帧数据 将ARP数据包封装成一个帧b)ARP协议的工作流程。1) 在发送一个ARP分组之前,源主机首先根据目的IP地址,在本地ARP高速缓存表中查找与之对应的目的物理地址。如果找到对应的物理地址,就不用进行地址解析,否则需要进行地址解析。2) 实现地址解析的第一步是产生ARP请求分组。在相应的字段写入本地主机的源物理地址、源IP地址,在目的物理地址字段写入0,并在操作字段写入1。3) 将ARP分组发送到本地的数据链路层,并封装成帧。以源物理地址作为源地址,以物理广播地址(FF-FF-FF-FF-FF-FF)作为目的地址,通过物理层发送出去。4) 由于采用了广播地址,因此网段内所有的主机或设备都能接受到该帧。除了目的主机外,所有接受到该分组的主机和设备都会丢弃该分组,因为目的主机能够识别ARP消息中的目的IP地址。5) 目的主机发送ARP应答分组。在ARP应答分组中,以请求分组中源物理地址、源IP地址作为其目的物理地址、目的IP地址,并将目的主机自身的物理地址、IP地址填入应答分组的源物理地址、源IP地址字段,并在操作字段中写入2。该分组通过数据链路层以点对点的方式发送出去(因为现在目的方已经知道双方的物理地址)。6) 源结点接收到ARP应答分组,知道对应于目的IP地址的目的物理地址,将它作为一条新记录加入到ARP高速缓存表。7) 源结点将有完整源IP地址、源物理地址、目的IP地址、目的物理地址的信息和数据作为一个发送分组,传送给它的数据链路层并封装成桢,然后以点对点的方式发送到目的主机。四、课程设计分析1. 课程设计中的重点及难点1) 程序中会用到Winpcap,Winpcap是Win32环境下数据包捕获的开放代码函数库。基于Winpcap的应用程序一般按照下面几个步骤进行设计:l 输出网卡设备列表。l 选择网卡并打开。l 捕获数据包时,可能需要设置过滤器。l 捕获数据包或者发送数据包。2) 在程序设计过程中需要注意网络主机字节顺序的转化。由于不同的计算机系统所采用的数据表示方式不同,对于2B或4B的数据,有的采用低字节地址存放数据的高权值位,而有的却以低地址字节存放数据低权位值,在网络的数据传输中,我们应该统一表示,所以我们在捕获数据包后,应将数据包头部的表示长度或类型的数据转换成本地机的表达形式。可以利用函数ntohs()将网络字节序转换为主机字节序。3) 选择网卡并打开时,注意选择可用的网卡。2. 参考算法1) 取得当前网卡设备列表。2) 选择Ethernet网卡并打开,注意判断所选网卡是否为实际存在的可用网卡。3) 设置过滤器,此处的过滤器正则表达式为“arp”或者“ether protoarp”。4) 捕获数据包并进行处理(包括输出各IP地址,物理地址,操作类型以及时间)。由于要记录日志文件,为了便于输出流参数,建议采用pcap_next_ex()函数。流程图如图所示:开始获取网卡列表选取Ethernet网卡打开网卡(混杂模式)编译设置过滤器捕获ARP包并将其相应内容输出3. 核心代码l ARP数据包结构struct arppkt unsigned short hdtyp; ;pcap_freealldevs(alldevs); n" pcap_freealldevs(alldevs); return;n" pcap_freealldevs(alldevs); return;l 循环捕获ARP包,并进行解析while(result=pcap_next_ex(adhandle,&header,&pkt_data)>=0) 输出ARP数据包的各个域的内容到文件和屏幕上 l 源程序#include<>#pragma comment(lib,"") 0001unsigned short protyp;unsigned char hdsize;unsigned char prosize;unsigned short op;u_char smac6;u_char sip4;u_char dmac6;u_char dip4;void packet_handler(const pcap_pkthdr *header,const u_char *pkt_data,ostream& out);void main(int argc,char *argv )if(argc!=2)cout<<"Usage:arpparse logfilename"<<endl;cout<<"press any key to continue."<<endl;_getch();return;pcap_if_t *alldevs;pcap_if_t *d;pcap_t *adhandle;char errbufPCAP_ERRBUF_SIZE;u_int netmask;char packet_filter="ether proto arp"struct bpf_program fcode;struct pcap_pkthdr *header;const u_char *pkt_data;if(pcap_findalldevs(&alldevs,errbuf)=-1)cout<<"Error in pcap_findalldevs:"<<errbuf;return;for(d=alldevs;d;d=d->next) if(adhandle=pcap_open_live(d->name,1000,1,300,errbuf)=NULL)cout<<"nUnable to open the adapter."pcap_freealldevs(alldevs);return;if(pcap_datalink(adhandle)=DLT_EN10MB&&d->addressess!=NULL)break;if(d=NULL) cout<<"nNo interfaces found! Make sure Winpcap is installed.n" return;n" pcap_freealldevs(alldevs); return;n" pcap_freealldevs(alldevs); return;cout<<"ttlistening on "<<d->description<<"."<<endl<<endl; (ios:left); out<<setw(3)<<int(arph->sip3)<<" " (ios:uppercase); for(i=0;i<5;i+) out<<hex<<setw(2)<<int(arph->smaci)<<'-' out<<hex<<setw(2)<<int(arph->smac5)<<" " (oldfillchar); (ios:hex|ios:uppercase); for(i=0;i<3;i+) out<<int(arph->dip3)<<'.'(ios:left);1. 计算机网络(第四版)大连理工大学出版社20032. 宋凯等著. 计算机网络. 北京:清华大学出版社 20103. 吴功宜等著. 计算机网络课程设计. 北京:机械工业出版社4. 李爱华等著. 面向对象程序设计(C+语言). 北京:清华大学出版社2010

    注意事项

    本文(解析ARP数据包课程设计.doc)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开