路由器发送的ARP包的目的IP

网络工程 路由器 ARP
2022-02-23 07:35:45

我发现主机的 ARP 表与路由器的 ARP 表有点不同。路由器 ARP 表仅将 MAC 地址映射到属于路由器与其接口连接的子网的 IP 地址。例如,如果路由器连接到 2 个子网:200.1.1.0 255.255.255.0 和 200.1.2.0 255.255.255.0,您只能在其 ARP 表中找到 IP 200.1.1.xxx 和 200.1.2.xxx 而在主机中您可以找到每个可能的 IP 地址。

我的问题是:当路由器转发数据包时,如果它需要找到下一跳的MAC地址,哪个IP将填充ARP数据包的目标IP?下一跳 IP 还是原始数据包目标 IP?

3个回答

路由器不会为它们转发的每个数据包执行 arp,而是依靠路由表(或 cef 的 fib 表)来为每个目的地找到正确的网关。他们只对第一个数据包的网关地址执行 arp,或者当条目由于老化而从 arp 表中删除时。

ARP 数据包不在第 3 层转发,它们仅在本地网络上有用,因为 mac 地址仅在本地 L2 网络上重要。此外,ARP 数据包是一个 L2 数据包,它们在帧头中只有 L2 目标/源地址。

有关何时在第 3 层(路由器、L3 交换机、防火墙等)转发普通数据包(非 ARP)的更多信息:转发决策基于数据包中包含的目标 IP 地址。当数据包被转发到路径中的下一个路由器时,仅更改数据包的目标 MAC 地址,这确保接收路由器可以正确引导数据包。

在主机中,您可以找到所有可能的 IP 地址。

仅当它们已被手动添加到表中,或者(静态)路由指示目标是“本地”(即“在线”)。这也可以对路由器进行。

路由器和主机使用完全相同的逻辑来解析第 2 层地址和第 3 层地址。在第 2 层,src 是请求的设备,dst 是广播地址(ff:ff:ff:ff:ff:ff)。ARP 请求中的第 3 层信息将类似——src ip/mac 是设备请求的接口地址,dst ip 将是所需的目标,而 mac 将为零,因为这就是它正在寻找的。