假设源通过路由器 A 和路由器 B 向其目的地发送数据包。
在路由器 A 的转发表中,它只会有目的地的 IP 地址和它自己的一个接口(出口接口)的 IP 地址之间的映射。我们不知道 B 的入口接口的 IP 地址。
鉴于 ARP 在将 IP 地址转换为 MAC 地址之前必须知道其子网中的 IP,A 出口接口的链路层如何查找 B 入口接口的 MAC(或等效)地址?
假设源通过路由器 A 和路由器 B 向其目的地发送数据包。
在路由器 A 的转发表中,它只会有目的地的 IP 地址和它自己的一个接口(出口接口)的 IP 地址之间的映射。我们不知道 B 的入口接口的 IP 地址。
鉴于 ARP 在将 IP 地址转换为 MAC 地址之前必须知道其子网中的 IP,A 出口接口的链路层如何查找 B 入口接口的 MAC(或等效)地址?
如果路由器 B 不与源相邻,那么它的 IP 地址和 MAC 地址都没有意义。源发送到路由器 A(可能是它的默认网关),路由器 A 查询自己的路由表并转发到路由器 B,然后路由器 B 转发到目的地。
在链路层(广播域)通常相当于IP子网。因此,源和路由器 A 共享的链路层在路由器 A 结束。路由器 A 和路由器 B 之间有另一个链路层,路由器 B 和目的地之间有第三层。
当您将路由器接口设置为网络的下一跳时,路由器假定网络直接连接到该接口。在你的例子中,路由器 A 将假设网络直接连接到出口接口,没有路由器 B 的概念。它会向每个目的地发出 ARP 请求,当它收到响应时,它会将数据包转发出去根据它返回的响应。
现在,这是如何工作的。RouterB 需要配置为支持Proxy ARP。它将响应来自路由器 A 的 ARP 请求,并返回其入口接口的 MAC 地址。