Answers:
好问题。我将用动画来回答:
主机A发送帧时,交换机的MAC地址表中没有任何内容。接收到帧后,它将记录主机A的MAC地址到交换机端口的映射。由于它不知道目标MAC地址在哪里,因此会将帧泛洪到所有端口。
这样可以确保如果主机B存在(此时主机尚不知道),它将收到它。希望主机B接收到该帧后,将生成一个响应帧,这将使交换机能够从返回帧中学习MAC地址映射。
您可以在此处(我从中获取动画的位置)了解有关Switch工作原理的更多信息。我还建议阅读整个文章系列,以更仔细地了解数据包如何通过网络移动。
关于“ 泛洪与广播” 一词的最后一点说明。交换机从不广播帧,广播不是交换机可以采取的措施。交换机只能淹没一帧。甲广播是简单地用一个目的地MAC地址的帧ffff.ffff.ffff
。由于最终效果是相同的,但实际上却是不同的,因此常常会感到困惑。
交换机不使用 ARP,但是ARP可以首先防止这种情况的发生,这有两个原因:
如果节点A将IP数据包发送到不在其ARP缓存中的节点B,它将首先发送ARP请求(这是一个广播数据包,并且将自动被交换机泛洪到所有端口)。当节点B发送其ARP答复时,交换机将学习其MAC地址。因此,在实际数据传输发生时,交换机已经知道参与者的MAC地址,并且不需要泛洪数据包。
当许多设备的链路断开时,它们将发送免费的ARP数据包。除了更新网络上其他节点的ARP缓存外,GARP还将填充交换机的MAC地址表。
IPv6不使用ARP,但NDP可以达到类似的目的。
因此,总的来说,尽管交换机肯定会将帧泛洪到他们尚未学习的单播地址,但您不必像您想的那样频繁,因为交换机通常有机会事先从广播帧中学习节点的地址。但是,您绝对可以使用已使其MAC表溢出或刚刚重新启动的交换机对其进行观察。
当交换机接收到帧时,它将使用源MAC地址和接收帧的端口更新其MAC地址表。如果目标MAC地址不在其MAC地址表中(未知单播),则它将帧泛洪到除接收帧的端口之外的所有端口。