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


12

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

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


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

真的感谢大家的回答。

Answers:


28

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

在此处输入图片说明

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

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

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

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


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

2
@Ferrybig正确。不过,我想这句话略有不同...交换机之间的主要区别充斥一个单播帧,交换机淹没一个广播帧是怎样的下一个节点(或多个)会作何反应。没有诸如广播帧的开关之类的东西。(此评论和我的回答是关于转接流量,而不是往返于交换机的管理流量)
Eddie

5

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

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

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

IPv6不使用ARP,但NDP可以达到类似的目的。

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


4

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


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

1
对。它不会将其发送到接收帧的端口。
罗恩·莫平

3
我要补充一点的是,在设备回复之前,交换机不会学习新的(目标)MAC地址。
Ron Trunk

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

3
有可能。这就是为什么某些/许多交换机支持禁用未知单播(以及多播)的单播泛洪的原因。在三十年的联网中,我从未需要使用它。
Ricky Beam
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.