【计算机网络】-地址解析协议ARP

前言

在网络实际传输中,我们经常会遇到这样的问题:知道了目标机器的(主机或路由器)的IP地址,需要找出其相应的硬件地址。本文要讲的地址解析协议ARP就是用来解决这样的问题的。
作者水平有限,有任何问题欢迎在文章下方留言!

ARP协议所在层

由于是IP协议使用了ARP协议,而众所周知IP协议处于网络层,因此通常就把ARP协议划归网络层。
但ARP协议的用途是为了从网络层使用的IP地址,解析出在数据链路层使用的硬件地址,因此,有的教科书会按照协议的作用,把ARP协议划归在数据链路层。这样划分当然也是可以的。

ARP协议所要解决的问题

我们知道,网络层使用的是IP地址,使用IP地址可以屏蔽下层一些很复杂的细节。但在实际网络的链路上传送数据帧时,最终还是必须使用该网络的硬件地址。我们在IP地址和硬件地址转换时会遇到如下问题:

1、IP地址和下面的网络的硬件地址之间并不存在简单的映射关系。
2、在一个网络上可能经常会有新的主机加入进来,或撤走一些主机。
3、更换网络适配器也会使主机的硬件地址改变。

ARP协议解决上述问题的方法

ARP协议在主机的ARP高速缓存中存放一个从IP地址到硬件地址的映射表,并且这个映射表还会动态更新(新增或超时删除)。

ARP高速缓存

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

ARP如何工作

我们通过一个例子来说明。
当主机A要向同处于本局域网的主机B发送IP数据报时,就先在其ARP高速缓存中查看有无主机B的IP地址。
如有,那么就在ARP高速缓存中直接查出其对应的硬件地址,将其写入MAC帧并进行发送。
如果没有,那么可能是主机B刚刚入网,或者是主机A刚刚加电,高速缓存还是空的。这个时候,主机A就自动运行ARP,按照以下步骤找出主机B的硬件地址。

1、ARP进程首先在本局域网上广播发送一个ARP请求分组,主要内容是:“我的IP地址是192.168.3.102,硬件地址是DC-41-A9-40-5D-99。我想知道IP地址为192.168.3.103的硬件地址。”
2、本局域网上的所有主机上运行的ARP进程都收到此ARP请求分组。
3、主机B收到该ARP请求分组后,发现自己的IP地址与ARP请求分组中所要查询的IP地址一致,就收下这个ARP请求分组,并向主机A发送ARP响应分组,在其中说明自己的硬件地址,此外,主机B还会把主机A的IP地址到硬件地址的映射写入自己的ARP高速缓存中。而其他主机收到该ARP请求分组后,由于他们的IP地址与ARP请求分组中所要查询的IP地址不一致,则不予理睬。
4、主机A收到主机B的ARP响应分组后,就在其ARP高速缓存中写入主机B的IP地址到硬件地址的映射。

ARP映射超时删除

ARP对保存在高速缓存中的每一个映射地址项目都设置了一个生存时间,凡是超过生存时间的项目就从高速缓存中删掉。
设置ARP映射的生存时间非常重要,例如,如果主机A已经存了主机B的硬件地址,但主机B突然更换了网络适配器,这时主机B的硬件地址就变了,但是主机A不知道,主机A在后续和主机B通信时,仍使用原先的硬件地址,这样就找不到主机B了。但是如果我们有了ARP映射生存时间,一但过了一段不长的生存时间后,A的ARP高速缓存就把主机B原先的硬件地址删除掉,然后主机A再次在本局域网上广播发送ARP请求分组,便又找到了B。

ARP协议跨局域网地址解析

请注意,ARP解决的是同一个局域网上的主机或路由器的IP地址和硬件地址的映射问题。那如果目标主机和源主机不在一个局域网上该怎么办呢?
这个时候源主机发送的ARP请求分组就找到本局域网上的一个路由器,并把IP数据报转交给路由器,然后剩下的工作交给路由器来完成。而路由器则会从转发表中找出下一跳的路由器,一直转跳直到找到目标主机,并把IP数据报最终交付给目标主机。

延伸问题

有的人可能在想,既然在网络链路上传送的数据帧最终是按照硬件地址找到目标主机的,那为什么我们还要用IP地址,而不直接使用硬件地址进行通信呢?这样做似乎还能不要ARP地址解析协议。
答案当然是不行的。由于全世界存在着各式各样的网络,它们都使用了不同的硬件地址。要使这些异构网络能够互相通信就必须进行非常复杂的硬件地址转换工作,因此由用户或用户主机来完成这项工作几乎是不可能的事情。
但IP编址把这个复杂的问题解决了。连接到互联网的主机只需各自拥有一个唯一的IP地址,它们之间的通信就像是连接在同一个网络上那样简单方便。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值