如果路由器在其路由表中找不到目标 IP 地址,它将如何处理数据包?

网络工程 路由器 ARP icmp
2022-02-05 23:28:50

如果路由器接收到目标硬件地址是广播地址的 ARP 请求,并且目标 IP 地址是路由器在其路由表中找不到的地址。在这种情况下路由器会做什么?它是否会缓存 IP/硬件源地址对并将 ICMP 消息“目标网络不可达”发送回源?

2个回答

ARP 是第 2 层的东西——它是第 2 层地址 (MAC) 与第 3 层地址 (IPv4) 相关联的方式。路由器(任何节点)只会响应它拥有的地址的 ARP 请求——分配给它的接口或别名的地址。它会默默地忽略所有其他人。

如果您的路由器设置为处理proxy-arp的古老坏主意,那么是的,它将响应它能够到达的任何请求。因此,如果有到所请求地址的路由——包括默认路由,它将用它的 MAC 进行应答,否则请求将被忽略。如果你有两个代理arp'ing路由器,一个有路由,一个没有,两者都会看到请求,但只有一个有路由的会回答。

如果没有任何响应 ARP 请求,请求节点本身将生成“主机不可达”错误。

如果路由器在其路由表中找不到目标 IP 地址,它将如何处理数据包?

如果路由器没有到目标 IP 的路由,它会丢弃数据包并向源 IP 返回 ICMP Destination unreachable消息。

如果路由器接收到目标硬件地址是广播地址的 ARP 请求,并且目标 IP 地址是路由器在其路由表中找不到的地址。

路由器仅响应其自身 IP 地址之一的 ARP 请求。所有其他请求都将被忽略。是否知道到 ARPed IP 地址的路由并不重要。(正如@Ricky 已经很好解释的那样,包括过时的代理 ARP 位。)