所有帧都必须传送到本地网段中的节点。如果目的 IPv4 主机在本地网络上,帧将使用此设备的 MAC 地址作为目的 MAC 地址。

 
如果目的 IPv4 主机不在本地网络上,则源节点需要将帧传送到作为网关的路由器接口,或用于到达该目的地的下一跳。源节点将使用网关的 MAC 地址作为帧(其中含有发往其它网络上主机的 IPv4 数据包)的目的地址。
 
路由器接口的网关地址存储在主机的 IPv4 配置中。当主机创建通往某台目的主机的数据包时,会将目的 IP 地址与其自己的 IP 地址进行比较,以确定两个 IP 地址是否位于相同的第 3 层网络上。如果接收主机不在同一网络上,源主机将使用 ARP 过程来确定网关路由器接口的 MAC 地址。
 
如果网关条目不在表中,正常的 ARP 过程就会发送 ARP 请求来检索与路由器接口的 IP 地址关联的 MAC 地址。
代理 ARP
 
有时,主机可能会发送 ARP 请求,要求映射本地网络范围以外的 IPv4 地址。在这种情况下,设备发送 ARP 请求是想获取不在本地网络中的 IPv4 地址,而不是请求与网关的 IPv4 地址关联的 MAC 地址。为了向这些主机提供 MAC 地址,路由器接口可能会使用代理 ARP 代表这些远程主机进行响应。这意味着,请求设备的 ARP 缓存中将会包含映射至本地网络以外任何 IP 地址的网关的 MAC 地址。使用 ARP 代理时,就好像路由器接口是具有 ARP 请求所请求的 IPv4 地址的主机一样。路由器通过“仿造”身份,承担了将数据包路由到“真正”目的设备的职责。
 
当旧版的 IPv4 无法确定目的主机是否与源主机在同一逻辑网络上时,就会发生使用 ARP 代理的过程。在这种情况下,ARP 始终会发送 ARP 请求,要求获取目的 IPv4 地址。但如果路由器接口禁用了代理 ARP,这些主机便无法将请求传出本地网络。
 
另一种使用代理 ARP 的情况是:主机认为它已经直接连接到目的主机所在的逻辑网络。如果主机配置了错误的掩码,通常会发生这种情况。
 

ARP过程——目的主机在本地网络之外_职场

如图所示,主机 A 配置了错误的子网掩码 /16。此主机认为它已经直接连接到所有的 172.16.0.0 /16 网络,而不是 172.16.10.0 /24 子网。
 
结果,当主机 A 尝试与 172.16.0.1 到 172.16.255.254 范围内的任何 IPv4 主机通信时,将会发送 ARP 请求,要求获取该 IPv4 地址。路由器可能会使用代理 ARP 响应对主机 C (172.16.20.100) 和主机 D (172.16.20.200) 的 IPv4 地址的请求。随后,主机 A 将使这些地址的条目映射到路由器 (00-00-0c-94-36-ab) 中 e0 接口的 MAC 地址。
 
还有一种使用代理 ARP 的情况是主机没有配置默认网关。代理 ARP 可以帮助网络中的设备到达远程子网,而无需配置路由或默认网关。
 
默认情况下,Cisco 路由器在 LAN 接口上启用了代理 ARP。