- 1、本文档共12页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
践中深入理解ARP协议
践中深入理解ARP协议
0.说明
有兴趣的朋友可以继续关注我的博客,我将会陆续撰写各种协议的实践分析文章。
在同一个网络(无特别说明,均指以太网络)中进行通信的主机,必须要拥有目标主机的MAC地址才能够正确地将数据发送给目标主机,那么如何知道目标主机的MAC地址呢?可以通过ARP协议。ARP协议就是用来获取目标IP地址所对应的MAC地址的,也就是说,ARP协议可以动态地在三层IP地址和二层MAC地址之间建立一种映射关系。可以用如下示意图来形象表示其作用:
可以看到上面的图示是把ARP协议划分到网络层,也既是认为它是一个网络层的协议,这是出于它为网络层的IP协议提供服务而考虑的。但实际上,由于ARP协议用以解析出IP地址(逻辑地址)所对应数据链路层中的地址(物理地址/硬件地址),所以把其划分在数据链路层也是没有问题的,这并没有严格的定义。
我们下面将通过具体的实践过程来分析四种常见的ARP包:ARP请求包、ARP响应包、无偿ARP包与IP地址冲突检测,同时也会分析一下ARP代理的发生过程。
这里会使用的环境如下:
网络设备模拟器:GNS3
抓包软件:Wireshark
1.网络环境搭建
为了简洁起见,这里不设置一个较大的网络环境来满足前面四种情况ARP包分析的需要,而是在分析不同的ARP情况时分别搭建较小的网络环境,这样可以使我们的分析更有针对性。
2.ARP包报文格式
如下:
注意我们关注的是28字节的ARP包,只不过上面的图还包含了以太网首部字段信息(显然以太网首部的帧类型为ARP,在分析IP协议时提到过,这是一个数据分用的概念)。
因为对于ARP包的分析,其实我们更关心的应该是ARP请求包、ARP响应包、无偿ARP包或者ARP代理相关的知识,而后面的实践也主要是分类地进行讨论。所以下面先给出一个普通ARP包(请求包)的实际结构,然后再给出每一个字段的具体含义(参考了《TCP/IP详解 卷1:协议》的部分内容),先作一个基本的了解,最后再详细分析这些包产生的过程:
一个普通ARP包(请求包的实际结构)
ARP包各字段具体含义(对比上面实际抓到的包)
字段 含义 硬件类型 占16位
表示硬件地址的类型,值为1即表示以太网地址,也就是MAC地址 协议类型 点16位
表示要映射的协议地址类型,值为0x0800即表示IP地址,因为本文都是在IP协议的基础上进行分析的(即网络层逻辑地址为IP地址),所以所抓到的包的该字段类型都为0x0800 硬件地址长度 占8位
指出硬件地址的长度,单位为字节,因为本文针对的是以太网,而以太网地址为MAC地址,占48位,即6字节,所以后面抓到的包中该字段的值都为6,不再作特别说明 协议地址长度 占8位
指出三层逻辑地址的长度,单位为字节,因为本文针对的是以太网地址和IP地址的映射,而IP地址占32位,即6字节,所以后面抓到的包中该字段的值都为4,不再作特别说明 操作字段 指出操作类型,对应的值如下:
ARP请求:1
ARP响应:2
RARP请求:3
RARP响应:4
但因为RARP现在已经很少使用了,所以本文不会讨论 发送端以太网地址 占48位
准确上说是“发送端硬件地址”,但因为本文只针对以太网进行讨论,所以表述为“发送端以太网地址” 发送端IP地址 占32位
准确上说是“发送端网络层逻辑地址”,但因为本文只针对的是以太网地址和IP地址的映射的讨论,所以表述为“发送端IP地址” 目的以太网地址 占48位 目的IP地址 占32位
3.在实践中分析ARP的实现过程:ARP请求、ARP响应
(1)网络环境搭建
本节主要是抓取ARP请求包和ARP响应包来分析ARP请求与响应的一个详细过程,以及对应ARP包中相关字段的含义,这个实践的网络环境比较简单,如下:
在R1路由器上做如下配置:
R1#conf?t
R1(config)#int?f0/0
R1(config-if)#no?shu
R1(config-if)#ip?add?192.168.1.1?255.255.255.0
R1(config-if)#do?wr
在R2路由器上做如下配置:
R2#conf?t
R2(config)#int?f0/0
R2(config-if)#no?shu
R2(config-if)#ip?add?192.168.1.2?255.255.255.0
R2(config-if)#do?wr
然后在R1路由器上查看arp缓存表:
R1#show?arp
Protocol??Address??Age?(min)??Hardware?Addr???Type???Interface
Internet??192.168.1.1?????-???cc01.127f.0000??ARPA
文档评论(0)