LAN外的ARP请求;目标机器或路由器响应?

网络工程 arp
2021-07-10 03:17:13

如果我向目标计算机发送 ARP 请求,目标计算机位于 Internet 上并且之间有 2 个路由器,那么我的请求 (0001) 数据包中的目标 IP 地址是什么?它是路由器 IP 地址,即我的网关,还是目标机器地址?

例如:可以说,我想从做一个ARP请求Computer AComputer C,并且该方案如下。

Router1 => Internet => Router2 => Computer C 

目标 IP 地址是什么,Router1或者Computer C

请帮我解决一下这个。我有点困惑。

谢谢你。

3个回答

使用您的原始图表:

OP的原图

当计算机 A 尝试与计算机 C 通信时,以下步骤将路由器 1 的软件分配地址解析为其硬件分配的媒体访问控制地址: 根据计算机 A 上路由表的内容,IP 确定转发 IP 地址到用于到达计算机 C 是通过路由器 1,即其默认网关的 IP 地址。然后,主机 A 检查自己的本地 ARP 缓存,以查找与路由器 1 匹配的硬件地址。

如果计算机 A 在缓存中没有找到映射,它会向本地网络上的所有主机广播一个 ARP 请求帧,并询问“路由器 1 的硬件地址是什么?” 源主机 A 的硬件和软件地址都包含在 ARP 请求中。

本地网络上的每台主机都会收到 ARP 请求并检查是否与自己的 IP 地址匹配。如果主机没有找到匹配项,它将丢弃 ARP 请求。

路由器 1 确定 ARP 请求中的 IP 地址与自己的 IP 地址匹配,并将主机 A 的硬件/软件地址映射添加到其本地 ARP 缓存中。

然后路由器 1 将包含其硬件地址的 ARP 回复消息直接发送回主机 A。

当主机 A 收到来自路由器的 ARP 回复消息时,它会使用路由器 1 的硬件/软件地址映射更新其 ARP 缓存。

一旦确定了路由器接口 1 的媒体访问控制地址,主机 A 就可以将 IP 流量发送到路由器 1,方法是将其寻址到路由器接口 1 媒体访问控制地址。然后,路由器通过与本节中讨论的相同的 ARP 过程将流量转发到主机 C。

这是从Microsoft Technet文章中更新的以匹配您的示例。另一个带有很好例子的参考资料是瞻博网络描述。

简而言之,主机 A 在与外部 IP 地址/主机通信时,将查看其默认网关以进行外部 IP 解析,并假设到主机 C 的流量将由该网关转发。

这完全取决于A和R1-1的子网掩码如何设置,以及R1的配置是否包含proxy-arp。

在规范配置中,A 和 R1-1 必须共享相同的子网掩码,并且它们的地址必须匹配相同的子网。当这种情况发生时,A 知道 C 为“不属于同一(子)网”,因此必须在 A 路由表中找到与 C 地址匹配的路由器。在最常见的情况下,R1-1 被称为默认网关,因此如果 R1-1 的 MAC 尚不清楚,并且发送 ARP 以发现它。详细信息在这个答案中

但也有可能出现不同的情况:如果 A 的子网掩码太短以至于 C 的 IP 也匹配它(并且 R1 接口正确配置了正确划分网络的掩码),那么 A 相信 C 在同一个 LAN 上,并且尝试向其发送 ARP。

R1 看到 ARP 并且知道这样的帧永远不会到达他知道(因为其更合适的子网掩码)在他身后的 C,因此他将以 C 回复,但提供 R1-1 MAC 地址。这个回复(称为“代理 ARP”)实际上愚弄了 A,让 A 现在相信 C 在他自己的网络上有 R1-1 MAC 地址。因此它将通过发送带有 C IP 和 R1-1 MAC 的数据包与 C 对话,就像正常路由过程产生的结果一样。

在上面的地形 A --- R1 ---- R2 ---- C

一旦 R2 收到来自 R1 的数据包——它将发出一个 ARP 请求以找出 C 的 MAC 地址,并且只有在 C 的回复之后,它才能将数据包转发给 C。

那是对的吗?