ARP(地址解析协议)

ARP(Address Resolution Protocol,地址解析协议)可以在以太网上,根据已知的IP地址查找主机的硬件地址。


一、ARP的工作原理

我们以以太网的工作环境作为背景来探讨这一协议(串行链路由于是点到点链路,故而不需要ARP)。在以太网的工作环境中,当主机需要向一个IP地址发送数据时,它需要将目标的物理地址(也就是MAC地址,也有文献称其为硬件地址)写在数据帧的目的MAC地址字段位置上,而这一动作的前提是,网络层已经知道了这一地址并且将其与逻辑目的地址建立了一个映射关系。这就好比在手机上存了一个电话号码并备注上了一个联系人一样,当需要打电话时,只需要查找该联系人的姓名即可,手机会帮我们自动选择他的电话号码拨过去。

当我们并不知道一台主机的IP地址与物理地址的映射关系的时候,就需要用到ARP。


二、ARP分类

1.ARP

我们用一个简单的比喻来形容ARP的工作过程。当你只知道你跟张三是同班同学却不知道他的具体座位时,你站起来大喊了一声:“我是王二,谁是张三?”于是张三说:”我是张三。“这样,你就知道了张三的具体位置,同时张三也知道了你的位置和姓名。

如下图所示为一个ARP请求报文的示例。

ARP(地址解析协议)_第1张图片

当一台主机需要访问一个与自己在同一个网络的IP地址但不知道目的主机的物理地址时,它就会发送一个ARP请求报文。

由于我们并不知道目标物理地址是什么,该报文的目标物理地址(即MAC地址)在数据帧的头部用二层广播地址FFFF.FFFF.FFFF来填充。

一个二层目的地址为广播地址的数据帧是会被发送给广播域内所有的成员的,如果网络规划正确,那么这其中一定会包含真正的接收者。

当真正的接收者收到该数据帧之后,会转交给自身的ARP程序,经过比对,发现其中的目的IP地址正是其所拥有的,就会对发送者做出回应,在回应报文中会将自身的物理地址写在发送者MAC地址的位置。

这样,目的主机根据发送者ARP请求报文中的MAC地址和IP地址获得了发送者的物理地址和逻辑地址,并且将会以明确的MAC地址和IP地址给发送者发送回应报文。

一次美妙的陌生人之间的互相介绍就这样完成了。看起来是不是很简单呢?

2.代理ARP

在一般情况下,只能为主机分配一个默认网关。如果需要互通的主机处在相同的网段却不在同一物理网络,并且连接主机的网关设备具有不同的网关地址,在这种场景中,如果发生网络故障,我们该如何防止业务中断呢?在这种场景中,需要代理ARP,其工作过程如下图所示。

ARP(地址解析协议)_第2张图片

可以看出,实际上,代理ARP只是一种服务,它并不是一种协议。并且,服务提供者对用户进行了“欺骗”,只是将自身的MAC地址回应给了用户,以此来达到代替用户转发数据的目的。

在默认情况下,在华为的设备上,这一功能是关闭掉的。

3.ARP 报文格式

ARP 协议包(ARP 报文)主要分为 ARP 请求包和 ARP 响应包,本节将介绍 ARP 协议包的格式。

ARP 协议是通过报文进行工作的,ARP 报文格式如图所示。

ARP(地址解析协议)_第3张图片

ARP 报文总长度为 28 字节,MAC 地址长度为 6 字节,IP 地址长度为 4 字节。

其中,每个字段的含义如下。

  • 硬件类型:指明了发送方想知道的硬件接口类型,以太网的值为 1。
  • 协议类型:表示要映射的协议地址类型。它的值为 0x0800,表示 IP 地址。
  • 硬件地址长度和协议长度:分别指出硬件地址和协议的长度,以字节为单位。对于以太网上 IP 地址的ARP请求或应答来说,它们的值分别为 6 和 4。
  • 操作类型:用来表示这个报文的类型,ARP 请求为 1,ARP 响应为 2,RARP 请求为 3,RARP 响应为 4。
  • 发送方 MAC 地址:发送方设备的硬件地址。
  • 发送方 IP 地址:发送方设备的 IP 地址。
  • 目标 MAC 地址:接收方设备的硬件地址。
  • 目标 IP 地址:接收方设备的IP地址。


ARP 数据包分为请求包和响应包,对应报文中的某些字段值也有所不同。

  • ARP 请求包报文的操作类型(op)字段的值为 request(1),目标 MAC 地址字段的值为 Target 00:00:00_00:00:00(00:00:00:00:00:00)(广播地址)。
  • ARP 响应包报文中操作类型(op)字段的值为 reply(2),目标 MAC 地址字段的值为目标主机的硬件地址。

免费 ARP 包

免费 ARP(Gratuitous ARP)包是一种特殊的 ARP 请求,它并非期待得到 IP 对应的 MAC 地址,而是当主机启动的时候,发送一个 Gratuitous ARP 请求,即请求自己的 IP 地址的 MAC 地址。

本节将介绍免费 ARP 包的结构、作用,以及如何发送免费 ARP 包。

免费 ARP 包的结构

免费 ARP 报文与普通 ARP 请求报文的区别在于报文中的目标 IP 地址。普通 ARP 报文中的目标 IP 地址是其他主机的 IP 地址;而免费 ARP 的请求报文中,目标 IP 地址是自己的 IP 地址。

作用

  • 免费 ARP 数据包有以下 3 个作用。
  • 该类型报文起到一个宣告作用。它以广播的形式将数据包发送出去,不需要得到回应,只为了告诉其他计算机自己的 IP 地址和 MAC 地址。
  • 可用于检测 IP 地址冲突。当一台主机发送了免费 ARP 请求报文后,如果收到了 ARP 响应报文,则说明网络内已经存在使用该 IP 地址的主机。
  • 可用于更新其他主机的 ARP 缓存表。如果该主机更换了网卡,而其他主机的 ARP 缓存表仍然保留着原来的 MAC 地址。这时,可以发送免费的 ARP 数据包。其他主机收到该数据包后,将更新 ARP 缓存表,将原来的 MAC 地址替换为新的 MAC 地址。

    小结

对于ARP,它是通过以太网二层广播以及已知单播回复的方式来获取物理地址(MAC地址)和逻辑地址(IP地址)之间的映射关系的。

你可能感兴趣的:(HCIA,路由交换,网络)