交换机工作原理

在可操作的网络拓扑里发送以太网帧,观察交换机如何学习 MAC 地址表、如何区分未知单播泛洪与广播,以及如何从泛洪进化到精准转发。

进阶 约 18 分钟 交互实验交换机MAC 地址表泛洪以太网帧广播

跟随步骤学习:播放动画、单步执行、点击左侧步骤随时跳转。

开始学习

点击 播放 或 下一步 开始。每一步动画都对应一条原理解释, 右侧面板展示来自模拟器的实时数据;学完动画后,页面底部有完整图文正文。

本教程目标: 理解以太网帧结构中目的 MAC 与源 MAC 的作用;掌握交换机「学习源 MAC、查表转发」的核心流程;区分未知单播泛洪与广播帧这两种「发到所有端口」的现象;观察 MAC 地址表的动态学习过程与老化机制。

图文正文ARTICLE

即使不播放动画,也可以通过以下内容理解本教程的知识点。

以太网帧与 MAC 地址

以太网二层传输的基本单位是帧。一个典型以太网帧的结构:

目的 MAC(6 字节) | 源 MAC(6 字节) | 类型(2 字节) | 数据载荷 | FCS 校验

  • 目的 MAC 告诉交换机「这帧要送给谁」;
  • 源 MAC 告诉交换机「这帧从哪台设备发出」;
  • 类型字段标识上层协议(如 0x0800 表示 IPv4,0x0806 表示 ARP)。

MAC 地址共 48 位,通常写成 6 组十六进制(如 AA:BB:CC:11:22:33)。前 24 位是厂商标识(OUI),后 24 位由厂商分配。全 1 的 FF:FF:FF:FF:FF:FF 是广播地址。

交换机的两个核心动作:学习与转发

交换机维护一张 MAC 地址表(CAM 表),记录「MAC 地址 ↔ 端口」。收到一帧时执行两个动作:

① 学习源 MAC:把「帧的源 MAC + 入端口」写入表(带老化时间,通常 300 秒,超时未再出现就删除)。学习只看源地址,与目的地址无关。

② 查表转发目的 MAC:

  • 表中有目的 MAC → 从对应端口单播转发(精准送达);
  • 表中没有目的 MAC → 未知单播泛洪:从除入端口外的所有端口发出去;
  • 目的 MAC 是广播地址 → 广播泛洪:同样从所有端口发出;
  • 目的 MAC 恰好在入端口(少见)→ 不转发,直接丢弃。

泛洪与广播的区别

两者都表现为「发往所有端口」,但语义完全不同:

未知单播泛洪 广播帧
目的 MAC 某个具体单播地址(表里查不到) FF:FF:FF:FF:FF:FF
触发原因 地址表暂时没学到 帧本身就是广播
收到后处理 只有 MAC 匹配的设备收下,其他设备丢弃 所有设备都必须接收处理
持续性 通信一次后学到了,之后精准转发 每个广播帧都会泛洪

典型的广播流量是 ARP 请求:「谁是 192.168.1.1?请告诉 192.168.1.100」—— 发出时还不知道对方 MAC,只能广播。所以观察交换机的第一个 ARP 请求是广播,而后续单播能否精准转发,取决于地址表是否已经学全。

交换机 vs 集线器,以及 MAC 表老化

集线器(Hub) 工作在物理层:把收到的信号简单复制到所有端口,所有设备共享带宽、处于同一个冲突域。交换机工作在数据链路层:按 MAC 表转发,每对端口可以同时通信,冲突域被隔离到端口级别。

交换机的地址表是动态学习 + 老化的:设备挪到别的端口、或长时间不通信,对应表项会失效。表项满时会触发新的泛洪行为。这也是「同一台交换机,白天流量正常、深夜反而出现泛洪」这类现象的排查思路之一:检查 MAC 表是否老化或溢出。

如果交换机之间形成环路,广播帧会无限复制导致广播风暴 —— 这正是生成树协议(STP)要解决的问题。