本文介绍地址解析协议(ARP)的基础知识。读者将了解该协议的工作原理和使用方式。
注意: 有关路由和交换的完整入门指南,请参阅 Ubiquiti 宽带路由与交换专家(UBRSS)指南,该指南可在我们的 培训 部分下载。
目录
什么是 ARP?
设备使用地址解析协议(ARP),通过将硬件地址映射到要访问的目标 IP 地址来发现网络中的其他主机。换言之,ARP 使主机能够在二层帧中插入正确的目标 MAC 地址,从而访问三层数据包中更通用的目标 IP 地址。发送数据包前,主机会查询其 ARP 缓存;该缓存是一个包含所有已知 IP 地址和 MAC 地址映射关系的表。
共享二层网络中的 ARP
如果三层目标 IP 地址与源 IP 地址属于同一个本地网络,主机会向二层广播地址(FF:FF:FF:FF:FF:FF)发送 ARP 请求。在下面的示例中,交换机会将 ARP 请求泛洪到所有端口。如果源 IP 所属的主机存在于本地网络中,则会返回 ARP 回复 消息。该回复消息将在二层帧头中包含源 MAC 地址。

向本地主机发送单播消息前的 ARP 发现、回复和缓存概览。交换机会通过所有接口泛洪来自主机 1 的 ARP 请求。主机 2 使用 10.0.0.12 地址,因此会响应 ARP 请求。
三层网络中的 ARP
如果三层目标 IP 地址与主机的本地网络属于不同网络,则数据包会转发到本地网关。此时不会以广播形式发送 ARP 请求,而是将其发送到网关的目标 MAC 地址。ARP 请求还会包含设备尝试访问的远程三层主机的目标 IP 地址。
这个过程也称为 AND 运算,即将目标 IP 地址与发送方的网络 ID 进行比对。该过程对于跨本地网段路由流量至关重要:流量会从一个网关转发到另一个网关,直到最后一跳到达能够在本地访问原始目标三层 IP 接收方的网关。请注意,在下图中,源 MAC 地址和目标 MAC 地址会发生变化,但 IP 信息保持不变。

主机 1 会将前往 10.0.0.0 的流量发送到其默认网关(路由器)。路由器会分别为主机 2 和主机 1 发送 ARP 请求,并将它们的 IP 地址和 MAC 地址存储在 ARP 缓存中。请注意,两台主机并不知道对方的 MAC 地址,而是使用路由器的 MAC 地址进行通信。