交换机如何学习不在其查找表中的 MAC 地址?

网络工程 转变 MAC地址
2021-07-11 15:50:07

我有一个比较愚蠢的问题。假设交换机刚刚启动,它接收到一个帧,其中包含不在其 MAC 地址表中的网络设备的目标 MAC 地址。

那会发生什么?它是否广播(MAC地址ff:ff:ff:ff:ff:ff)并从连接的设备接收答案,或者是否有专用于所使用的协议?我不认为交换机使用 ARP(地址解析协议)?

3个回答

好问题。我会用动画来回答:

在此处输入图片说明

当主机 A 发送帧时,交换机的 MAC 地址表中没有任何内容收到帧后,它会记录主机 A 的MAC 地址到交换机端口的映射。由于它不知道目标 MAC 地址在哪里,它会将泛洪到所有端口。

这确保如果主机 B 存在(此时交换机还不知道),它将接收它。希望主机 B 在收到帧后会生成一个响应帧,这将允许交换机从返回帧中学习 MAC 地址映射。

您可以在此处阅读有关 Switch 如何工作的更多信息(我从此处获取动画)。我还建议阅读整个系列文章,以更深入地了解数据包如何在网络中移动

关于术语FloodingBroadcast 的最后一个说明交换机从不广播帧,广播不是交换机可以执行的操作。一个交换机只能泛洪一个帧。广播是简单地用一个目的地MAC地址的帧ffff.ffff.ffff这经常被混淆,因为最终效果是一样的,但它们实际上是不同的

交换机不使用ARP,但 ARP 可以帮助防止这种情况的发生,原因有两个:

  1. 如果节点 A 正在向节点 B 发送一个不在其 ARP 缓存中的 IP 数据包,它将首先发送一个 ARP 请求(这是一个广播数据包,将被交换机自动泛洪到所有端口)。当节点 B 发送其 ARP 回复时,交换机将获知其 MAC 地址。因此,当实际数据传输发生时,交换机已经知道参与者的 MAC 地址,并且不需要泛洪数据包。

  2. 许多设备,当它们的链接上升时,会发送一个免费的 ARP数据包。除了更新网络上其他节点的 ARP 缓存外,GARP 还会填充交换机的 MAC 地址表。

IPv6 不使用 ARP,但NDP实现了类似的目的。

所以总的来说,虽然交换机肯定会将帧泛洪到他们没有学习到的单播地址,但这并不像你想象的那么频繁,因为它通常有机会事先从广播帧中学习节点的地址。但是,您绝对可以使用 MAC 表溢出或刚刚重新启动的交换机来观察它

当交换机收到帧时,它会使用源 MAC 地址和接收帧的端口更新其 MAC 地址表。如果目标 MAC 地址不在其 MAC 地址表中(未知单播),它会将帧泛洪到所有端口,除了接收帧的端口。