-
ARP用途
用来将一个主机或路由器的ip地址
解析成为对应的2层的mac地址
-
ARP可以列入3层,也可以列入2层
因为ARP其实是位于2层和3层之间的,3层即以上使用的是ip地址,2层使用的是mac地址
而ARP就是负责这两种地址的转换:ip地址 → ARP → mac地址 -
ARP高速缓存
存在于主机或者路由器中
网络层使用的是 ip地址,而在实际链路中使用的是mac地址
ip地址是可变的32bit,而mac地址是不可变的48bit;二者格式不同,因此不存在简单的映射
网络是动态的,可能新加入主机,或者撤走主机
因此在每个主机中设有一个ARP高速缓存
,在缓存中放一个从ip地址到mac地址的映射表
此表会动态更新(新增 / 超生存期删除),应对网络的动态性 -
ARP工作过程
1、当主机A要向本局域网中的主机B发送ip数据报时,先查找自己的ARP高速缓存,判断是否有主机B的ip地址到其mac的映射:
若有,则将此mac地址写入mac帧首部,然后过局域网进行发送。完成退出。
若没有,可能时B刚入网或者A刚上电缓存是空的,此时主机A就自动运行ARP进程,按下面的步骤来寻找B的mac地址:
2、主机A的ARP进程
在所在局域网上广播发送一个ARP请求分组,如下图,该ARP分组的主要内容是:我的ip地址是:209.0.0.5
,我的硬件地址是:00-00-C0-15-AD-18
,我想知道 ip地址为209.0.0.6
的主机的mac地址。
然后本主机上所有运行的ARP进程都会收到这个广播分组。
ARP请求分组是以广播形式
发送的。
3、若主机B的ip地址与广播分组想要查询的ip地址一致,就收下这个ARP请求分组,并向主机A发送ARP响应单播分组(把自己的mac地址放在其中)。ARP响应单播分组的主要内容:我的ip地址是209.0.0.6
,我的硬件地址是08-00-2B-00-EE-0A
ip地址与广播分组想要查询的ip地址不一致的主机不接受这个ARP请求广播分组
ARP响应分组是以单播形式发送的。
4、主机A
在收到B的ARP响应单播分组
后,就在自己的ARP高速缓存
中写入主机B的ip地址到mac地址的映射
。
另外主机A向主机B发送了数据报,很有可能不久后B也要向A发送数据报(B也有可能向A发送ARP请求分组)。
因此为了减少网络上的通信量,主机A在发送ARP请求广播分组时也会把A 自己的ip地址到mac地址的映射关系
写入自己发出的ARP请求广播分组
,主机B
收到A的ARP请求广播分组
就把A的ip地址到mac地址的映射
存入B 自己的ARP高速缓存
。 -
ARP高速缓存的意义
若不使用ARP高速缓存,那么主机每发送一个数据报就要进行一次ARP请求广播,大大增加网络通信量。
有了ARP高速缓存,主机可以先查映射表,没有才会发送ARP请求广播 -
ARP需要对ARP高速缓存中每一条映射项目都设置生存时间
超过生存时间的映射项目就删掉
应对链路中mac地址更新的情况 -
ARP协议只能完成同一个局域网下ip地址到mac地址的映射
若目的主机和源主机不在一个局域网上,源主机则无法从目的主机的ip地址解析出目的主机的mac地址(实际上也不需要知道,此种情况能保证数据送达即可)。此时需要通过ARP的代理来实现数据的跨网传送。 -
ARP代理
解决不同物理网络主机的通讯问题,通过查看路由表来判断有没有到达目的网段的路由,如果可达并且接口开启了ARP代理的功能,则以参与中间转发的路由器自己的mac地址 去回复ARP响应分组。
如下图,主机H1需要向ip数据报发往H4,H1向自己所在局域网发送ARP广播请求分组,路由器R1(已开启ARP代理)收到此广播后发现目的主机的所在网络号可达,于是R1用自己接口的MAC地址回复ARP应答分组给H1,同时R1也会记录下H1的ip地址和mac地址的映射关系。H1收到R1的ARP应答分组后将目的ip地址与路由器R1的mac地址绑定,以后此目的ip地址的数据报就往R1发。
同理,R1再发送ARP请求广播分组,以同样的方法获取R2的mac地址,IP数据报传到R2
最终R2将分组成功发送到H4
如此需要进行若干次ARP解析
简言之就是:确认可达,代回复,接收分组,(新一轮)转发ARP分组 …
-
1、ARP在分组从A到B的过程中
若A和B连接到同一个网络上:主机A使用ARP就可以得到B的mac地址,然后使用B的mac地址将分组组装成帧,发送给B
2、ARP在分组从A到F的过程中:
地址解析方面要经过下面三个步骤:
A通过ARP解析出路由器R1的mac地址,将分组发给R1
R1再通过ARP解析出R2的mac地址,将分组发给R2
R2再通过ARP解析出F的mac地址,将分组交付F(在整个发送过程中A都不知道F的mac地址) -
为什么不直接使用mac地址,而是使用ARP来将ip地址转换成mac地址?
若要众多不同网络通过mac地址来通信,需要复杂的mac地址转换工作,比ARP还要复杂
上述调用ARP协议的复杂过程是由计算机自动运行的,对用户透明 -
不需要使用ARP的情况
1、源主机的ARP高速缓存中已经有了该项目的ip地址的项目
2、源主机发送的是广播分组
3、源主机和目的主机使用的是点对点链路