计网:网络层协议ARP

ARP(地址解析协议)用于解决网络层IP地址与链路层硬件地址之间的映射问题。当主机需要通信时,它会在ARP高速缓存中查找目标IP的硬件地址,若不存在,则通过广播ARP请求获取。ARP缓存会定期更新以保持映射信息的时效性。在跨网段通信时,ARP帮助路由器解析下一跳的硬件地址。使用IP地址而非硬件地址简化了异构网络间的通信,使得用户无需关注底层复杂的地址转换过程。
摘要由CSDN通过智能技术生成

1.背景

在实际应用中,我们经常会遇到这样的问题:已经知道了一个机器的IP地址(主机或路由器)后,就需要找出其相应的硬件地址。
地址解析协议 ARP(Address Resolution Protocol) 就是来解决这样的问题的。

2.ARP

我们知道,网络层使用的是 IP 地址,但在实际网络的链路上传送数据帧时,最终还是必须使用该网络的硬件地址。但 IP 地址和下面的网络硬件地址之间由于格式的不同和不存在简单的映射关系(例如,IP 地址有32位,而局域网的硬件地址是48位)。此外,在一个网络上可能经常会有新的主机加入进来,或者撤走一些主机,更换网络适配器(网卡)也会使主机的硬件地址发生改变。

地址解析协议ARP(工作在网络层) 解决这个问题的方法是在主机 ARP 高速缓存中存放一个从 IP 地址到硬件地址的映射表,并且这个映射表还经常动态更新(新增或删除)。

每一台主机都设有一个 ARP 高速缓存(ARP cache),里面有本局域网上的各主机和路由器的 IP 地址到硬件地址的映射表,这些都是该主机目前知道的一些地址。那么主机是怎样的知道的呢?
在这里插入图片描述

在这里插入图片描述

当主机 A 要向本局域网上的某台主机 E 发送 IP数据报时,就先在其 ARP 高速缓存中查看有无主机 E 的 IP 地址:

  • 若有,就在ARP 高速缓存中查出其对应的硬件地址,再把这个硬件地址写入MAC帧,然后通过局域网把该MAC帧发往此硬件地址;

  • 若没有(可能是主机 E 才入网,也有可能是主机 A 刚加电,其ARP 高速缓存还是空的),主机 A 就自动运行 ARP,然后按照以下步骤找出主机 E 的硬件地址:

    1)ARP 进程在本局域网上广播发送一个 ARP请求分组,内容是:我是 209.0.0.5,硬件地址是 00-00-C0-15-AD-18,我想知道主机 209.0.0.6 的硬件地址;

    2)在本局域网上的所有主机上运行的 ARP 进程都会收到此 ARP 请求分组;

    3)主机 E 的 IP 地址与 ARP 请求分组中要查询的 IP地址一致,就收下这个 ARP请求分组,并向主机 A 发送 ARP响应分组,同时在这个 ARP响应分组中写下自己的硬件地址,其他主机则是不理睬这个ARP 请求分组(因为问的不是自己,IP地址对不上)。ARP响应分组的主要内容是:我的 IP地址是 209.0.0.6,我的硬件地址是 08-00-2B-00-EE-0A。
    注意:虽然ARP请求分组是广播发送的,但ARP响应分组是普通的单播。

    4)主机 A 收到主机 E 的 ARP响应分组后,就在其 ARP 高速缓存中写入主机 E 的 IP地址到硬件地址的映射。

3.ARP 高速缓存

当主机 A 向 E 发送数据报时,很可能不久后主机 E 还要向主机 A 发送数据报,因而主机 E 也可能向主机 A 发送ARP请求分组。为了减少网络上的通信量,主机 A 在发送其 ARP请求分组时,就把自己的 IP地址到硬件地址的映射写入ARP请求分组中。

当主机 E 收到 A 的 ARP请求分组时,就把主机 A 的这一地址映射写入自己的ARP 高速缓存中,以后通信就方便多了。

ARP 对保存在告诉缓存中的每一个映射地址项目都要设置生存时间(例如,10~20分钟)。凡超过生存时间的项目就从高速缓存中删除掉。

4.ARP跨网段

ARP是解决同一个局域网上的主机或路由器的 IP 地址和硬件地址的映射问题。如果要找的主机和源主机不在同一个局域网上,如下:
在这里插入图片描述
主机H1 就无法解析出另一个局域网上主机H2 的硬件地址(实际上主机H1 也不需要知道远程主机H2 的硬件地址)。

  • H1发送给H2的 IP 数据报首先需要通过与 H1 连接在同一个局域网上的路由器 R1 来转发,因此 H1 这时需要把路由器 R1 的 IP 地址解析为硬件地址 HA3,以便能够把 IP 数据报传送到路由器 R1;
  • 然后,R1 从转发表找出了下一跳路由器 R2,同时使用 ARP 解析出 R2 的硬件地址为 HA5,于是 IP 数据报就按照 HA5 转发到路由器 R2;
  • 路由器R2 在转发这个 IP数据报时用类似的方法解析出目的主机 H2 的硬件地址 HA2,使 IP 数据报最终交付主机 H2。

从 IP 地址到硬件地址的解析式自动进行的,主机的用户对这种解析过程是不知道的。

下面归纳出使用 ARP 的四种典型情况:
在这里插入图片描述

  1. 发送方是主机(如 H1),要把 IP 数据报发送到同一个网络的另一个主机(如 H2), 这时 H1 发送 ARP 请求分组(在网1上广播),找到目的主机 H2 的硬件地址。

  2. 发送方是主机(如 H1),要把 IP 数据报发送到另一个网络的另一个主机(如 H2),这时 H1 发送 ARP 请求分组(在网1上广播),找到网1 上的一个路由器 R1 的硬件地址。剩下的工作由路由器 R1 完成。R1 要做的事是下面的 3 或 4。

  3. 发送方是路由器(如 R1),要把 IP 数据报转发到与 R1 连接在同一个网络(网2)的主机(如 H3),这时 R1 发送 ARP 请求分组(在网2上广播),找到目的主机 H3 的硬件地址。

  4. 发送方是路由器(如 H1),要把 IP 数据报转发到网 3 上的一台主机(如 H4)。H4 与 R1 不是连接在同一个网络上的,这时 R1 发送 ARP 请求分组(在网2上广播),找到网2 上的一个路由器 R2 的硬件地址。剩下的工作由路由器 R2 完成。

在许多情况下需要多次使用 ARP,但都是以上几种情况反复使用而已。

5.一个问题

既然在网络链路上传送的帧最终是按照硬件地址找到目标主机的,那么我们为什么还要使用抽象的 IP 地址,而不直接使用硬件地址进行通信?这样似乎可以避免使用ARP。

答:由于全世界存在着各式各样的网络,它们使用不同的硬件地址,要使这些异构网络能互相通信就必须进行非常复杂的硬件地址转换工作,由用户或用户主机来完成这项工作几乎是不可能的事。但 IP 编址把这个复杂问题解决了,连接到互联网的主机只需各自拥有一个唯一的 IP 地址,它们之间的通信就像连接在同一个网络中那样简单方便,因为上述的 ARP 调用都是由计算机软件自动进行的,对用户来说是看不见这种调用过程的。
因此,在虚拟的 IP 网络上用 IP 地址进行通信给广大的计算机用户带来了很大方便。

柳下月如花下月,今年人忆去年人。
2022.3.13

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值