当转发表只有出口接口时路由器如何知道其下一跳的MAC地址

网络工程 MAC地址
2021-07-25 09:29:51

假设源通过路由器 A 和路由器 B 向其目的地发送数据包。

在路由器 A 的转发表中,它只会有目的地的 IP 地址和它自己的一个接口(出口接口)的 IP 地址之间的映射我们不知道 B 的入口接口的 IP 地址。

鉴于 ARP 在将 IP 地址转换为 MAC 地址之前必须知道其子网中的 IP,A 出口接口的链路层如何查找 B 入口接口的 MAC(或等效)地址?

2个回答
  • 对于多点接口,每个路由表条目至少需要保存目的地(子网)和下一跳的 IP 地址。
  • 对于点对点接口(最常见的是隧道),表条目需要具有目的地(子网)和接口。
  • 每个多点接口都需要知道自己的 IP 地址和网络掩码(=本地范围)。
  • 点对点接口可能没有 IP 地址。任何传输的数据包都只是在另一端接收到。
  • 下一跳的 MAC 地址(如果适用)通过 ARP 解析并缓存在本地 ARP 表中,通常与路由表分开

如果路由器 B 不与源相邻,那么它的 IP 地址和 MAC 地址都没有意义。源发送到路由器 A(可能是它的默认网关),路由器 A 查询自己的路由表并转发到路由器 B,然后路由器 B 转发到目的地。

链路层广播域)通常相当于IP子网因此,源和路由器 A 共享的链路层在路由器 A 结束。路由器 A 和路由器 B 之间有另一个链路层,路由器 B 和目的地之间有第三层。

当您将路由器接口设置为网络的下一跳时,路由器假定网络直接连接到该接口。在你的例子中,路由器 A 将假设网络直接连接到出口接口,没有路由器 B 的概念。它会向每个目的地发出 ARP 请求,当它收到响应时,它会将数据包转发出去根据它返回的响应。

现在,这是如何工作的。RouterB 需要配置为支持Proxy ARP。它将响应来自路由器 A 的 ARP 请求,并返回其入口接口的 MAC 地址。