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

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

评论

如果考虑一下,当交换机不能实际切换帧时(例如,因为它的表中没有必要的地址),出于兼容性原因,它通常必须将该帧视为集线器。

非常感谢大家的回答。

#1 楼

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



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

这样可以确保如果主机B存在(此时主机尚不知道),它将收到它。希望主机B接收到该帧后,将生成一个响应帧,以使Switch能够从返回帧中学习MAC地址映射。

您可以在此处详细了解Switch的工作方式(我从中获取动画的位置)。我还建议阅读整个文章系列,以更仔细地了解数据包如何在网络中移动。

关于“泛洪与广播”一词的最后一点说明。交换机从不广播帧,广播不是交换机可以采取的措施。交换机只能淹没一帧。广播只是目标MAC地址为ffff.ffff.ffff的帧。由于最终效果是相同的,但实际上却是不同的,因此常常会感到困惑。

评论


洪泛和广播之间的主要区别在于下一个节点将如何反应

– Ferrybig
16年4月5日在20:47

@Ferrybig正确。但是我要说的是稍有不同...在一个交换机中填充一个单播帧和一个交换机中填充一个广播帧之间的主要区别是下一个节点的反应方式。没有诸如广播帧的开关之类的东西。 (此评论和我的回答是指转接流量,而不是往返于交换机的管理流量)

–艾迪
16年4月5日在21:16

#2 楼

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


如果节点A向节点B发送IP数据包不在其ARP缓存中,它将首先发送ARP请求(这是一个广播数据包,并且将自动被交换机泛洪到所有端口)。当节点B发送其ARP答复时,交换机将学习其MAC地址。因此,在实际数据传输发生时,交换机已经知道参与者的MAC地址,并且不需要泛洪数据包。
许多设备在链路建立后会发送免费的ARP数据包。 。除了更新网络上其他节点的ARP缓存外,GARP还将填充交换机的MAC地址表。

IPv6不使用ARP,但是NDP达到了类似的目的。 >
因此,总的来说,尽管交换机肯定会将帧泛洪到他们尚未学习的单播地址,但您不必像您想的那样频繁,因为它通常有机会事先从广播帧中学习节点的地址。但是,您绝对可以使用已使其MAC表溢出或刚刚重新启动的交换机对其进行观察。

#3 楼

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

评论


除了泛洪时,它不会将帧泛洪到接收帧的端口,对吗?

– Todd Wilcox
16年4月5日在18:44

对。它不会将其发送到接收帧的端口。

–罗恩·莫潘♦
16年4月5日在18:45

我只补充说,在设备回复之前,交换机不会学习新的(目标)MAC地址。

–罗恩·托恩(Ron Trunk)
16年4月5日在18:47

通过将框架泛洪到所有端口,是否存在安全风险?

–user24308
16年4月5日在18:51

有可能。这就是为什么某些/许多交换机支持禁用未知单播(以及多播)的单播泛洪的原因。在三十年的联网中,我从未需要使用它。

–瑞奇
16年4月5日在19:45