通过回复其他主机请求来学习 MAC 地址

网络工程 MAC地址 arp
2021-07-12 15:22:38

我有一个关于 ARP 的问题:

如果主机A希望将消息发送到主机B和ARP表主机A不包含MAC地址为主机B,然后他发送一个ARP请求,主机B回复其MAC地址。

现在,如果网络上有第三台主机 C的 ARP 表也为空,会发生什么情况当这第三台主机 C接收并忽略主机 As ARP 请求时,它是否处理主机 B的 ARP 回复

换句话说:网络上的主机是否从未发送给它们的 ARP 回复中学习其他主机的 MAC 地址?

在大学里,我听说这是交换机了解哪些主机可以通过其端口访问的方式,但如果主机这样做,则不会。

先感谢您 !

2个回答

根据RFC826,答案是否定的。

RFC 中的算法明确指出,只有当主机是数据包的目标时,才会将地址添加到本地表中。

但是,如果主机 C 已经有主机 A 的旧条目并且不是最新的,则主机 C 将更新其表。

某些特定的 ARP 实现可能会侦听 ARP 查询以填充缓存,但没有测试就无法知道它。

编辑以回应评论:

RFC 提到:

否定条件表示处理结束并丢弃数据包。

然后在算法中我们有:

?我是目标协议地址吗?

Yes:
  If Merge_flag is false, add the triplet <protocol type,
      sender protocol address, sender hardware address> to
      the translation table.

因此,对于主机 C,上述问题的答案是否定的,它不会进入“将发送器硬件添加到转换表”这一步,它只是停止处理。

此外,正如xpacRon Maupin所提到的 ,在现代的交换环境中,主机 C 甚至不会看到从 B 到 A 的答案。

所有主机都会看到 ARP 请求,但只有请求者会看到 ARP 回复。由于 ARP 回复是单播返回给请求者的,主机 C 甚至永远不会看到来自主机 B 的 ARP 回复。

主机填充其 ARP 缓存的方式与交换机填充其 MAC 地址表的方式不同。交换机查看通过交换机端口的所有流量以填充其 MAC 地址表。