4.2.4 地址解析协议 ARP

  • 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、源主机和目的主机使用的是点对点链路

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值