地址解析协议 ARP 和逆地址解析协议 RARP

什么是ARP/RARP协议

当我们已经知道一个机器(主机或路由器)的IP地址,需要找出其相对应的物理地址(MAC地址);或者反过来,已经知道了物理地址,需要找到对应的IP地址。这时ARP和RARP协议就登场了。

下图很清楚的揭示了ARP协议和RARP协议的功能:
ARP:通过IP地址找到对应主机的物理地址的协议
RARP:通过物理地址找到对应主机的IP地址的协议
在这里插入图片描述

逆地址解析协议 RARP

逆地址解析协议RARP再过去有着重要的作用,但是现在的DHCP协议(另有文章专门介绍)已经包含了RARP协议的功能,因此已经很少在单独使用RARP协议,逆地址解析协议的功能就是通过硬件地址解析出IP地址。

地址解析协议ARP

网络层使用的是IP协议,但是在实际网络的链路上传输数据的时候,最终还是必须使用该网络的硬件地址(MAC地址),因此当我们发送数据的时候就必须要知道目的端的物理地址,ARP协议就是根据目的端的IP地址获取硬件地址的协议。

地址解析协议实现IP到MAC地址转换的方法就是:在主机ARP高速缓存中存放一个IP地址到硬件地址的映射表,并且这个映射表还会动态更新。

每一个主机都设有ARP高速缓存(ARP cache),里面有本局域网上的各主机和路由器的IP地址到硬件地址的映射表,这些都是该主机目前知道的一些地址。

主机怎样维护ARP高速缓存表呢?

举例说明:
当主机A要向当前局域网上的一个主机B发送IP数据报时,就先在其ARP高速缓存中查看有无主机B对应的硬件地址,如果有就查找出对应的硬件地址,再把这个硬件地址写入MAC帧中,然后将该MAC帧发送到主机B。

但是ARP缓存表中可能并不能成功查找到主机B的硬件地址(主机B可能才刚刚进入当前局域网),这这种情况下主机A就会运行ARP程序,按照以下步骤找到主机B的硬件地址

1) ARP进程在本局域网广播发送一个ARP请求,主要内容是 “我的IP:209.0.0.5,我的MAC:00-00-C0-15-AD-18,我想知道IP地址为209.0.0.6的主机的硬件地址”
在这里插入图片描述
2) 在本局域网上运行的所有ARP进程都会收到该ARP请求

3) 主机B在接收到ARP请求后发现请求的是自己的硬件地址,于是将自己的硬件地址写入ARP响应,并发送回去,响应的内容是 “我就是209.0.0.6,我的硬件地址是:08-00-2B-00-EE-01”。并将主机A的IP地址和硬件地址映射关系保存起来,方便以后给主机A发送消息。
除了主机B的其他主机不会理睬这个ARP请求。ARP请求是以广播的形式发送,但是响应却是以单播的形式发送。
在这里插入图片描述
4) 主机A收到主机B的ARP响应后,就在自己的ARP高速缓存中写入主机B的IP地址和硬件地址的映射

生存时间

ARP为高速缓存中的每一个项映射都设置了一个生存时间,但凡是超过生存时间的项都会被删除。

生存时间是很有必要的,假设这样一个场景:主机A和主机B进行过通信,因此主机A中保存着主机B的IP和硬件地址的映射关系,此时主机B的网络适配器坏了并且立即更换了一台,主机B的硬件地址发生了变化。此时主机A想要给主机B发送数据,但是主机B的硬件地址已经改变,主机A不能正确的找到主机B的硬件地址,也就无法正常发送数据。如果存在生存时间呢,主机B的硬件地址变化了,我不能立即给主机B发送数据,但是只要主机A中高速缓存的项目过期,我就必须要重新根据获取主机B的硬件地址,于是可以正常发送数据了。

ARP解决的是同一个局域网的问题

注意:APR协议解决的是同一个局域网上的主机或路由器IP地址和硬件地址的映射问题。

如果要找的IP的发出ARP请求的主机不在同一个局域网中,对不起,ARP协议什么也做不了。

实际上也没必要这么做,两个不同局域网的主机进行通信时需要中间路由器的多次转发,因此我需要知道的是和我挨得最近的主机的硬件地址,这就是链路层的"一跳"

我们利用下图进行分析:
两个不同局域网的主机 H1 和 H2,主机H1想要发送数据给主机H2
第一跳: 主机H1将数据发送给路由器R1,主机H1通过ARP协议获取路由器R1的硬件地址,并发送数据帧
第二跳: 路由器R1将数据发送给路由器R2,路由器R1通过ARP协议获取到路由器R2硬件地址,并发送数据帧
第三跳 路由器R2将数据发送给主机H2,路由器R2通过ARP协议获取到主机H2硬件地址,并发送数据帧
在这里插入图片描述

归纳APP四种典型情况:
1)发送方是主机,要把IP数据报发送到本网络的另一台主机,这时用ARP找到目的主机的硬件地址。
2)发送方是主机,要把IP数据报发送到另一个网络的一台主机,这时用ARP找打本网络的一台路由器的硬件地址,剩下的工作交给路由器来完成。
3)发送方是路由器,要把IP数据报发送到本网络的另一台主机,这时用ARP找到目的主机的硬件地址。
4)发送方是路由器,要把IP数据报发送到另一个网络的一台主机,这时用ARP找打本网络的一台路由器的硬件地址,剩下的工作交给路由器来完成。

主要参考书籍 《计算机网络第五版》

发布了146 篇原创文章 · 获赞 82 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/qq_40860852/article/details/102918870