版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、成绩评定表学生姓名班级学号1103050409专业计算机科学与技术课程设计题目解析ARP数据包评语组长签字:成绩日期20 年 月曰课程设计任务书学院信息科学与工程学院专业计算机科学与技术学生姓名班级学号课程设计题目解析ARP数据包实践教学要求与任务:1. 课程设计的目的是对网络上的 ARP数据包进行解析,从而熟悉 ARP数据包的结构,对ARP协议有更好的理解和认识。2. 通过编写程序,获取网络中的 ARP数据包,解析数据包的内容, 将结果显示在标准输出上,并冋时写入日志文件。工作计划与进度安排:第15周星期一:设计任务分析和总体设计星期二:软件算法和流程设计星期二:软件编码实现星期四:软件总体
2、调试星期五:交课程设计报告、答辩、验收程序指导教师:201年 月曰专业负责人:201 年 月曰学院教学副院长:201 年 月曰摘要1I1课程设计目的1I2课程设计要求2 ;II3相关知识3 ;I4课程设计分析6 :I5程序代码8 ;I6 运行结果与分析 12 :I7个人心得1II8参考文献12;I摘要本文首先介绍了解析ARP数据包课程设计的目的与意义,本次课程设计的 要求,接着说明了,什么是 ARP ARR数据报消息格式以及ARP协议的工作流 程加强我们对ARP协议的认识,然后分析了本次课程设计的难点、重点、参 考算法、核心代码,以及对运行结果的分析,还有一些相关知识的拓展。最 后对本次课设进
3、行了个人心得的总结。1课程设计目的课程设计的目的是对网络上的 ARP数据包进行解析,从而熟悉II ARP数据包的结构,对ARP协议有更好的理解和认识。IIII 2课程设计要求IIIIi 通过编写程序,获取网络中的 ARP数据包,解析数据包的内容,II 将结果显示在标准输出上,并同时写入日志文件。【II 程序的具体要求如下所示::II(1) 以命令行的形式运行,如下所示::IIParseArp log_file其中,arpparse为程序名;log_file为日志文件名。 ;II(2) 程序输出内容如下所示:II 源IP地址 源MAC地址 目的IP地址 目的MAC地址 操作 时间 1II各部分的
4、说明如下所示::II 源IP地址:输出ARP消息格式中的源IP地址字段1III 源MAC地址:输出ARP消息格式中的源物理地址字段1II 目的IP地址:输出ARP消息格式中的目的IP地址字段。1I 目的MAC地址:输出ARP消息格式中的目的物理地址字段1II i 操作:输出ARP消息格式中的操作字段,若为 ARP请求,II 则为1,若为ARP应答,则为2。II 时间:该ARP包产生的时间。II(3) 当程序接收到键盘输入 Ctrl+C时字段退出。3 相关知识(1) 什么是 ARP地址解析协议(Address Resolution Protocol ARP 是在仅知道主机的IP 地址时确定其物理
5、地址的一种协议。因 IPv4 和以太网的广泛应用,其主要用 作将IP地址翻译为以太网的 MAC地址,但其也能在 ATM和FDDIIP网络中使 用。从 IP 地址到物理地址的映射有两种方式:表格方式和非表格方式。 ARP 具体说来就是将网络层(IP层,也就是相当于OSI的第三层)地址解析为数据 连接层(MAC层,也就是相当于OSI的第二层)的MAC地址。在以太网协议中规定,同一局域网中的一台主机要和另一台主机进行直接 通信,必须要知道目标主机的 MAC地址。而在TCP/IP协议栈中,网络层和传 输层只关心目标主机的IP地址。这就导致在以太网中使用IP协议时,数据链 路层的以太网协议接到上层IP协
6、议提供的数据中,只包含目的主机的IP地址。 于是需要一种方法,根据目的主机的IP地址,获得其MAC地址。这就是ARP 协议要做的事情。所谓地址解析(address resolution )就是主机在发送帧前将 目标IP地址转换成目标MAC地址的过程。另外,当发送主机和目的主机不在同一个局域网中时,即便知道目的主机 的MAC地址,两者也不能直接通信,必须经过路由转发才可以。所以此时, 发送主机通过ARP协议获得的将不是目的主机的真实 MAC地址,而是一台可 以通往局域网外的路由器的某个端口的 MAC地址。于是此后发送主机发往目 的主机的所有帧,都将发往该路由器,通过它向外发送。这种情况称为 AR
7、P 代理( ARP Proxy)。(2)ARP数据报的消息格式网络上的每台主机或设备都有一个或多个IP地址。IP地址是网络层的地址,在网络层,数据被组装成IP包。但是发送IP包需要物理设备的支持(通 常是Ethernet设备,在本课程设计中我们指定为 Ethernet设备),即发送端必 须知道目的物理地址才能将IP包发送出去,所以需要一种将IP地址映射为物 理地址的机制。ARP协议就是用来完成这个任务的。ARP协议能够在同一个 物理网络中,在给定目的主机或设备的IP地址的条件下,得到目的主机或设 备的物理地址。ARP协议的数据包格式如图所示:08162431 (位)硬件类型协议类型物理地址长度
8、协议地址长度操作源物理地址(八位组03)源物理地址(八位组45)源IP地址(八位组01)源IP地址(八位组23)目的物理地址(八位组 01)目的物理地址(八位组25)目的IP地址(八位组03)ARP数据包的消息格式F面对数据包的各个部分进行说明硬件类型:指定硬件接口类型。例如,值为1表示Ethernet协议类型:指定发送方支持的上层协议的类型物理地址长度:指定物理(硬件)地址的长度协议地址长度:网络层协议的地址长度。若为IP协议,其值为4操作:指定ARP的操作类型,例如,1表示ARP请求,2表示ARP应答源物理地址:指定发送方的IP地址目的物理地址:指定目的物理地址。目的IP地址:指定目的IP
9、地址ARP分组必须在数据链路层中被封装成侦,才能发送出去封装形式如图所示1ARP消息卩V帧头部帧数据将ARP数据包封装成一个帧(3)ARP协议的工作流程。1) 在发送一个ARP分组之前,源主机首先根据目的IP地址,在本地ARP高 速缓存表中查找与之对应的目的物理地址。如果找到对应的物理地址,就 不用进行地址解析,否则需要进行地址解析。2) 实现地址解析的第一步是产生 ARP请求分组。在相应的字段写入本地主机的源物理地址、源IP地址,在目的物理地址字段写入 0,并在操作字段 写入1。3) 将ARP分组发送到本地的数据链路层,并封装成帧。以源物理地址作为 源地址,以物理广播地址(FF-FF-FF-
10、FF-FF-FF)作为目的地址,通过物理 层发送出去。4) 由于采用了广播地址,因此网段内所有的主机或设备都能接受到该帧。除 了目的主机外,所有接受到该分组的主机和设备都会丢弃该分组,因为目 的主机能够识别ARP消息中的目的IP地址。5) 目的主机发送 ARP 应答分组。在 ARP 应答分组中,以请求分组中源物理地址、源IP地址作为其目的物理地址、目的IP地址,并将目的主机自身 的物理地址、IP地址填入应答分组的源物理地址、源IP地址字段,并在 操作字段中写入 2。该分组通过数据链路层以点对点的方式发送出去(因 为现在目的方已经知道双方的物理地址) 。6) 源结点接收到 ARP 应答分组,知道
11、对应于目的 IP 地址的目的物理地址, 将它作为一条新记录加入到 ARP 高速缓存表。源结点将有完整源 IP 地址、源物理地址、目的 IP 地址、 目的物理地址的信息 和数据作为一个发送分组,传送给它的数据链路层并封装成桢,然后以点对 点的方式发送到目的主机。4 课程设计分析1. 课程设计中的重点及难点1) 程序中会用到 Winpcap, Winpcap 是 Win32 环境下数据包捕获的开放代 码函数库。基于Winpcap的应用程序一般按照下面几个步骤进行设计: 输出网卡设备列表。选择网卡并打开。捕获数据包时,可能需要设置过滤器。 捕获数据包或者发送数据包。2)在程序设计过程中需要注意网络一
12、主机字节顺序的转化。由于不同的计算机系统所采用的数据表示方式不同,对于2B或4B的数据,有的采用低字节地址存放数据的高权值位,而有的却以低地址字节存放数 据低权位值,在网络的数据传输中,我们应该统一表示,所以我们在 捕获数据包后,应将数据包头部的表示长度或类型的数据转换成本地 机的表达形式。可以利用函数ntohs()将网络字节序转换为主机字节序。3)选择网卡并打开时,注意选择可用的网卡。2. 参考算法1)取得当前网卡设备列表。2)选择Ether net网卡并打开,注意判断所选网卡是否为实际存在的可用网 卡。3)设置过滤器,此处的过滤器正则表达式为“arp”或者“ether protoWarp”
13、4)捕获数据包并进行处理(包括输出各IP地址,物理地址,操作类型以 及时间)。由于要记录日志文件,为了便于输出流参数,建议采用 pcap_ next_ex(函数。流程图如图所示:5程序代码#in clude#in clude #i nclude#in cludepcap.h#i nclude#pragma comme nt(lib,ws2_32.lib)#pragma comme nt(lib,wpcap .li b) /定义ARP包数据struct arppktun sig ned short hdtyp;un sig ned short protyp;un sig ned char hds
14、ize;un sig ned char prosize;un sig ned short op;u_char smac6;u_char sip4;u_char dmac6;/硬件类型/协议类型/硬件地址长度/协议地址长度/ (操作类型)操作值:ARP/RARP/源MAC地址/源IP地址/目的MAC地址u_char dip4;/ 目的 IP 地址;void packet_ha ndler(c onst pcap_pkthdr *header,c onst u_char *pkt_data,ostrea m& out) /从 ARP包中找到头部位置arppkt* arph = (arppkt *)
15、(pkt_data +14);/输出源IP地址for(int i=0;i3;i+)outsipi).;out.setf(ios:left);outsetw(3)sip3) ; out.unsetf(ios:left);/ 输出源 MAC 地址char oldfillchar=out.fill(0);out.setf(ios:uppercase);for(i=0;i5;i+) outhexsetw(2)smaci)-;outhexsetw(2)smac5) ; out.fill(oldfillchar);out.unsetf(ios:hex|ios:uppercase);/ 输出目的 IP 地址
16、for(i=0;i3;i+) outdip3).;out.unsetf(ios:left);outsetw(3)dip3) ;out.unsetf(ios:left);/ 输出目的 MAC 地址out.fill(0);out.setf(ios:uppercase);for(i=0;i5;i+)outhexsetw(2)dmaci)-; outhexsetw(2)dmac5) ; out.fill(oldfillchar);out.unsetf(ios:hex|ios:uppercase);/输出操作类型 outop)ts.tv_sec);out.fill(0); outtm_hour:setw
17、(2)tm_min:setw(2)tm_sec; out.fill(oldfillchar);outendl;void main(int argc,char *argv )/ 命令行参数/检查输入命令格式 if(argc!=2)coutPlease input command: ParseArp output_fileendl;return;/初始化网络设备相关参数 pcap_if_t *alldevs; pcap_if_t *d;pcap_t *adhandle;char errbufPCAP_ERRBUF_SIZE;u_int netmask;char packet_filter=ethe
18、r proto arp; struct bpf_program fcode; struct pcap_pkthdr *header; const u_char *pkt_data;/获取网络设备列表 if(pcap_findalldevs(&alldevs,errbuf)=-1)coutError in pcap_find all devs:next)/ 网卡设为混杂模式,接收所有帧 if(adhandle=pcap_open_live(d-name,1000,1,300,errbuf)=NULL) coutaddresses!=NULL) break; if(d=NULL)coutaddre
19、sses-netmask)-sin_addr.S_un.S_addr; / 编译过滤器,只捕获 ARP 包if(pcap_compile(adhandle,&fcode,packet_filter,1,netmask)0) coutnUnable to compile the packet filter.Check the syntax.n; pcap_freealldevs(alldevs);return;/设置过滤器if(pcap_setfilter(adhandle,&fcode)0) coutnError setting the filter.n; pcap_freealldevs(a
20、lldevs); return;/显示提示信息及每项含义coutlistening on description.endlendl;ofstream fout(argv1,ios:app); /日志记录文件 /为了查看日志时的方便,其中加入了日期记录 time_t t;time(&t);fout.seekp(0,ios:end);if(fout.tellp()!=0)foutendl;foutttARP request(1)/reply(2) onctime(&t); coutSourAddressIp AddrOPSour MAC Address foutSourIp AddrOPTimee
21、ndl;Sour MAC Address Des Ip AddrDes Ip AddrDesDesMACMACAddress /释放设备列表 pcap_freealldevs(alldevs);/ 开始截获 ARP 包Time=0) / 循环解析 ARP 数据包if(result=0)continue;/ 解析 ARP 包,结果输出到屏幕与文件 packet_handler(header,pkt_data,cout); packet_handler(header,pkt_data,fout);6运行结果与分析E:TestParsArpDebugPir&eArp log”txtLiqtQning
22、;CMicrosoft Sour rP Addr 132.168 J 4Realty lO/ieu/weu Ethernet NICDm 帕亡 Address0O_ 0QQ-G0 00OP1lim12:24:24Packet Scheduler.+Sour MAC Address G0-22-19-U-*4CmI-D的 IP Addr132.163.1 .254192.ES.1.239斗 0-I6-9F-3(3-35192.168.1.23600-QO-BO0E1112:2:33192.G8J40-16-9F-3F-3O-35192 JG8. t 23GG0-GO-QO-0G-OG-G0112
23、:25:34132.G8.1.2304a-l6-9F-3F-3Q-35192.168.1 236eO-GD-QO-OG-OG-GQ112:26:35192 68.1.6560-169F-3F-S0-S5192 1G8.1.2509-00-0O-06-0G-OS112:27:23192.6S.1.25919268.1 .23060-00-06-BS-0G-ee112:27:3&相关扩展与分析:本课程设计还可以在 Linux环境下用rawsocket完成。算法和代码提示:1) 调用socket ()打开协议簇为 PF_PACKET的原始套接字,这样我们就可以收到数据链路帧:int fd = soc
24、ket(PF_PACKET,SOCK_RAM,hto ns(ETH_P_ALL);2) 对打开的套接字调用ioct1(),将网卡设置为混杂模式,这样我们就可以接受到局域网中所有的包(包括目的地址不是本机的帧):struct ifreq req;memset (&req ,0,sizeof(req);strncpy(req.ifr_name, ethO,strlen( ethO”+1);ioctl(fd,SIOCGIFFLAS,&req);req.ifr_flags|=IFF_PROMISC;/ 设置为混杂模式icotl(fd, SIOCGIFFLAGS,&req);3) 利用 recvfrom ()接收包:recvform(fd,buffer,sizeof(buffer),0,(struct sockaddr *)&from,&from_len);4) 接收到包后,判断是否为 ARP 包,若是 ARP 包则进行
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《第一章 行星地球》试卷及答案-高中地理必修1-人教版-2024-2025学年
- 半年工作总结和下半年工作计划
- 计算机等级考试二级WPS Office高级应用与设计试卷及解答参考
- 圆锁父母发言稿
- 2024年广告发布合同的广告内容规范与责任分配
- 2024年度化肥品质鉴定合同书
- 2024年影视制作合同:电视剧制作与发行
- 2024年建筑合同范本:工程建设的权利和义务
- 2024年应急通信电缆敷设合同
- 2024年影视作品制作及版权转让合同
- 海洋工程柔性立管发展概况
- 汉语教师志愿者培训大纲
- 护理导论 评判性思维
- SPC培训资料_2
- 学习适应性测验(AAT)
- ADS创建自己的元件库
- MATLAB仿真三相桥式整流电路(详细完美)
- 2019年重庆普通高中会考通用技术真题及答案
- 天秤座小奏鸣曲,Libra Sonatine;迪安斯,Roland Dyens(古典吉他谱)
- 钢筋混凝土工程施工及验收规范最新(完整版)
- 光缆施工规范及要求
评论
0/150
提交评论