![多重开关--其如何工作?](https://linux22.com/image/1432416/%E5%A4%9A%E9%87%8D%E5%BC%80%E5%85%B3--%E5%85%B6%E5%A6%82%E4%BD%95%E5%B7%A5%E4%BD%9C%EF%BC%9F.png)
前段时间,我在阅读有关网络硬件的文章时,偶然发现了关于网络交换机工作原理的解释 - 基本上,它说交换机会维护一个内部数据库,记录连接到每个端口的 MAC 地址,当它接收到数据包时,它会在其数据库中查找目标 MAC,并将数据包转发到正确的端口。
这让我很疑惑——如果你将交换机连接到交换机上,会发生什么情况,就像这样:
Computer A
|
Switch 1
|
Switch 2
|
Computer B
我家网络的一部分就是这样设置的,所以显然它仍然可以正常工作。但是,如果计算机 A 想要向计算机 B 发送数据包,交换机 1 如何知道将数据包转发到交换机 2?由于交换机 1 不直接连接到计算机 B,如果交换机 2 不向交换机 1 提供该信息,它如何能在其数据库中拥有计算机 B 的 MAC 地址?
答案1
如果交换机 1 不知道该帧(不是数据包!)要发送到哪个端口,它将淹没所有端口(除了该帧的源端口)。其中一个端口将连接到交换机 2,这意味着交换机 2 会获取该帧。
如果交换机 2 不知道该帧应该发送到哪个端口,它将泛洪所有端口(除了该帧的源端口)。其中一个端口将连接到计算机 B。
因此,计算机 B 最终获得该帧,同时所有其他设备都忽略它。
现在您可以将这些点连接起来。当计算机 B 响应时,交换机 2 将获悉发往计算机 A 的帧将发送到与其连接的交换机 1 的端口,而交换机 1 将获悉发往计算机 B 的帧将发送到与其连接的交换机 2 的端口。
答案2
交换机上的物理端口算作 OSI 第 1 层。到达此特定端口的所有 MAC 地址都代表网络设备的物理地址(OSI 第 2 层)。每个活动端口上可以有 0、1 或多个 MAC(或 CAM 或任何交换机供应商的名称)地址。事实上,如果没有其他信息(管理员或某些专门设计的协议会提供更多信息),交换机根本不知道连接的是什么类型的设备。
因此,将一台交换机连接到另一台交换机时,一台交换机知道的所有 MAC 地址都可以复制到另一台交换机。如果是一台虚拟交换机,则所有 MAC 地址都属于同一个未命名的 LAN。如果是一台更好的交换机,则可以配置多个虚拟 LAN (VLAN),并且每个 VLAN 都有自己的一组 MAC 地址。它们可以在多个 VLAN 中重复。
如果交换机通过多个接口接收到相同的物理地址,通常会被检测并计为“MAC 翻转”。这意味着交换机无法确定要通过哪个端口发送具有特定 MAC 地址的数据包。
如果 MAC 地址在最近几分钟内没有出现,交换机通常会忘记端口上的 MAC 地址。这很好;否则交换机可能会收到过多的信息,这些信息随着时间的推移可能会相互矛盾。
有时,由于网络错误或网络内的黑客攻击,某些设备可能会生成大量 MAC 公告。如果公告的 MAC 地址数量太多,交换机无法记住,它可能会决定忘记最佳数据包传送。如果不确定 MAC 地址位于哪个端口,数据包可能会像广播一样传输到所有端口(名称为 arp-spoofing 的攻击成功)。
如果管理员意识到潜在的风险,可以对每个端口上可能出现的不同 MAC 地址数量进行限制。如果已知通过端口一次只能连接一台计算机,则可以将其配置为“我们只能有一个 mac”(草图上从计算机 A 到交换机 1 的端口类型)。如果不知道,或者另一台交换机连接到端口,则可以合理地提高限制,甚至保持无限制(在普通交换机上,无限制实际上只有几千个)。
希望能帮助到你。