如果主机向其子网之外的 IP 发出 ARP 请求怎么办?

网络工程 转变 MAC地址 ARP
2022-03-03 04:02:21

我在论坛上阅读了其他类似的问题,但没有人完全回答我的问题。但是要了解我的困惑,您需要知道我还有什么困惑。

ARP 是第 2 层还是第 3 层协议?例如,交换机是否知道 ARP 请求的存在,或者它所看到的只是“从 a:b:c:d 到 FF:FF:FF:FF:FF:FF 的帧”?

假设交换机不知道什么是 ARP 请求,如果我为子网外部的 IP 地址创建 ARP 请求会发生什么(假设我已经手动完成此操作并绕过了使主机到达的行为网关代替)?交换机会不会因为不知道这个 IP 在子网之外的事实而只是广播它,将帧传送到下一个交换机,这同样对第 3 层恶作剧视而不见,也会广播它,造成混乱?

混乱会继续,还是像路由器这样的 L3 实体最终会丢弃数据包?

4个回答

交换机将广播转发到所有端口。他们不关心它是什么样的广播,也不知道第 3 层信息。所以是的,他们会转发它。L3 设备(如路由器)将丢弃广播。不确定你认为什么是“混乱”。

如果您为未连接到网络的主机的主机地址发送广播 ARP 请求,则 ARP 请求将简单地超时,因为您的网络上没有主机会要求该地址。无论地址是否在您的网络范围内,都会发生这种情况。

交换机不知道帧的有效载荷,例如 ARP 请求,只知道源地址和目的地址,并且 ARP 请求是广播的,这意味着交换机会将请求发送到除帧进入交换机的接口之外的所有接口。交换机是透明设备,不查看帧有效负载或更改帧。

ARP 是第 2 层还是第 3 层协议?

可以说,它是第 3 层协议(由于属于 IP 核心协议)。从技术上讲,它直接位于第 2 层之上,为什么有人称它为“第 2 层协议”,我认为这是错误的。

交换机是否知道 ARP 请求的存在,或者它所看到的只是“从 a:b:c:d 到 FF:FF:FF:FF:FF:FF 的帧”?

后者。交换机只关心 L2 目标地址进行转发。EtherType/下一层无关紧要。

如果我为子网之外的 IP 地址创建 ARP 请求会发生什么

ARP 请求是广播的,没有答案。

交换机会不会因为不知道这个 IP 在子网之外的事实而只是广播它,将帧传送到下一个交换机,这同样对第 3 层恶作剧视而不见,也会广播它,造成混乱?

完全没有混乱,只是跨越广播域 (VLAN) 的广播。

像路由器这样的 L3 实体最终会丢弃数据包吗?

是的。像这样的有限广播不会由路由器转发,只能由网桥转发。

ARP 是第 2 层还是第 3 层协议?

ARP 是允许 IP 在以太网上运行而无需预先配置从 IP 到 MAC 地址的映射的粘合剂。所以从逻辑上讲,你可以说它适合第 2 层和第 3 层。

假设我已经手动完成了

至少在 Linux 上不需要手动执行此操作,您只需在路由表中添加一个具有所需接口且没有下一跳的条目。

如果交换机不知道这个 IP 在子网之外这一事实,是否会广播它,将帧发送到下一个交换机,这也对第 3 层恶作剧视而不见,也会广播它,

是的,交换机通常不知道也不关心子网。

造成混乱?

不,以太网是一棵树。并且以太网交换机永远不会“按原路”转发帧。这就是允许每个设备只看到一次发送到以太网的广播的原因。

如果以太网网络不是一棵树,您将有“混乱”,但即使没有您篡改的 arp 请求,您也会有混乱。

像路由器这样的 L3 实体最终会丢弃数据包吗?

路由器不转发 ARP 数据包。


您的子网外 ARP 请求很可能根本不会收到任何响应。但是,您可能会通过几种方式最终得到回复。

  • 网络管理员可能在同一个 L2 基础架构上运行多个 IP 子网。其他子网中的系统可能(或可能不)响应 ARP 请求,尽管源“超出子网”。
  • 网络中的路由器可能启用了“代理 ARP”并回复 ARP 请求以获取其路由到的目的地。
  • 一些系统可能有多个接口,地址位于不同的子网中,并且可能会在其任何接口上响应对任何本地地址的 ARP 请求,而不是将 IP 地址紧密绑定到接口。