外观
刚买回来的交换机通电就能用,它怎么知道每台电脑插在哪个口?
阶段 2 · 数据链路层 · 第 10 课
你买了一台 24 口的以太网交换机,从箱子里拿出来直接插上电源,把四台电脑分别插进 GE0/0/1 到 GE0/0/4 号端口。令人惊奇的是,你甚至不需要做任何命令行配置,电脑 A 就能直接把数据精准送给电脑 B,而插在 GE0/0/3 上的电脑 C 的网卡指示灯根本不会乱闪!
早期网络使用的**集线器(Hub)**是一个“大喇叭”:任何一个口收到的数据,都会无脑广播给所有其他端口,不仅所有人都能偷听,大家同时说话还会产生剧烈的碰撞冲突。为什么以太网交换机(Switch)插电即用、即插即通?它内部那张神奇的“端口导航地图”是怎样凭空建立起来的?
学完本课后,你将能够:
- 复述以太网交换机二层转发的核心三部曲:基于源 MAC 学习、基于目的 MAC 查表、命中单播转发 / 未命中泛洪。
- 读懂华为交换机
display mac-address输出,解释 MAC 地址、物理接口、VLAN 与表项动态老化时间。 - 推演在空 MAC 表状态下,首个数据帧与应答帧穿越交换机时的完整表项变化过程。
1. 先看图:交换机的大脑——MAC 地址表
以太网交换机内部维护着一张保存在高速内容寻址内存(CAM)中的映射表,称为 MAC 地址表(MAC Address Table)。
这张表记录了极简的对应关系:“某个 MAC 地址的设备,连在我背后的哪个物理接口上,属于哪个 VLAN”。
刚通电启动的那一瞬间,交换机的 MAC 地址表是一片空白的。它是如何从零自学成才的?请跟着一次完整的帧交互过程来观察:
第一步:入帧基于源 MAC“偷学”(学习机制)
- 主机 A(
MAC-A)想给主机 B(MAC-B)发送一个数据帧。主机 A 把帧推上网线,帧从交换机的GE0/0/1端口进入。 - 交换机硬件一看到有帧进来,立刻低头看帧头的 源 MAC(SMAC):
MAC-A! - 交换机心里立刻记下一笔:“
MAC-A这个家伙,刚才踩着我的GE0/0/1端口进来了!以后只要有人想找MAC-A,我直接从GE0/0/1扔出去就行了!” - 交换机在 MAC 表里新建一条动态条目:
MAC-A 对应 GE0/0/1,并启动该条目的老化计时器。
第二步:根据目的 MAC 查地图(查表与决策)
- 学完源 MAC 后,交换机抬起头看帧头的 目的 MAC(DMAC):
MAC-B。 - 交换机在自己的 MAC 地址表里搜索
MAC-B,此时可能遇到三种情形:
| 目的 MAC 查表结果 | 交换机执行的动作 | 动作背后的通俗逻辑 |
|---|---|---|
情况 1:表中查到了对应端口(如 GE0/0/2) | 单播转发(Unicast Forwarding) | 精准将该帧仅从 GE0/0/2 端口推送出去,GE0/0/3、GE0/0/4 完全不受打扰,彻底隔离冲突域! |
情况 2:表中完全查不到 MAC-B(未知单播帧) | 泛洪(Flooding)(Flooding,泛洪) | 交换机不知道 B 藏在哪个接口,只能将该帧复制多份,从除接收口 GE0/0/1 以外的所有端口转发出去,让全网设备去认领! |
情况 3:目的 MAC 为全 F 广播(FF-FF-FF-FF-FF-FF) | 泛洪(Flooding)(广播泛洪) | 明确是全网广播,同样从除入端口以外的所有其他端口原样送出。 |
第三步:回应帧让拼图彻底闭环
- 当未知单播帧泛洪到全网后,主机 C 发现不是找自己的,网卡硬件直接丢弃;
- 主机 B 发现确实是找自己的,于是给主机 A 回复一个应答帧(源 MAC 为
MAC-B,目的 MAC 为MAC-A),从GE0/0/2送入交换机。 - 交换机在
GE0/0/2收到应答帧时:- 看源 MAC:立刻学到
MAC-B 对应 GE0/0/2!至此,A 和 B 的位置全部搞定。 - 查目的 MAC:寻找
MAC-A。由于第一步已经学过了MAC-A 对应 GE0/0/1,交换机直接精准单播转发给GE0/0/1,这一次再也不需要泛洪了!
- 看源 MAC:立刻学到
2. 表项老化机制:如果电脑拔掉插到另一个口会怎样?
如果员工小李把笔记本电脑从工位 1(连在 GE0/0/1)拔掉,抱着电脑走到会议室插在工位 5(连在 GE0/0/5),交换机怎么知道小李换位置了?如果表项永久有效,发给小李的数据岂不是永远被错误地转发到空的工位 1?
为了解决移动与断线问题,交换机为所有动态学习到的条目引入了 老化时间(Aging Time):
- 倒计时刷新:在华为交换机上,动态 MAC 表项的缺省老化时间是 300 秒(5 分钟)。只要在 300 秒内再次收到来自该 MAC 的帧,计时器立刻重置为 300 秒。
- 超时清除:如果连续 5 分钟该电脑没有发送任何一帧数据,交换机就会将这条过期条目从内存中自动抹去。
- 接口迁移秒级更新:如果小李在 300 秒内换到了
GE0/0/5并发出了第一个帧,交换机在GE0/0/5收到它的瞬间,会发现“咦?同一个 MAC 居然从新端口进来了”,交换机立刻将表项强制更新为GE0/0/5,实现无缝漫游!
3. 实验 · 在华为 VRP 交换机上查看 MAC 地址表
在企业网络维护中,display mac-address 是定位终端物理位置的最强神技。以下是真实华为 VRP 交换机的典型查询输出:
text
<Huawei> display mac-address
-------------------------------------------------------------------------------
MAC Address VLAN/VSI/BD Learned-From Type Aging
-------------------------------------------------------------------------------
5489-981a-2b3c 1 GE0/0/1 dynamic 280
5489-981a-2b3d 1 GE0/0/2 dynamic 295
-------------------------------------------------------------------------------
Total items: 2关键字段解读结论:
MAC Address:终端网卡的物理地址。VLAN/VSI/BD:该地址属于 VLAN 1。交换机学习 MAC 是在特定 VLAN 内部隔离进行的。Learned-From:该终端物理上连接在交换机的GE0/0/1接口。Type:dynamic表示该条目是交换机根据数据流量动态自学得到的;如果是管理员手工绑定的安全静态条目,会显示为static(静态条目永不老化)。Aging:倒计时剩余老化秒数。
4. 小结与下一步
- 核心三部曲:基于源 MAC 学习物理端口,基于目的 MAC 查表单播,查不到或广播则泛洪。
- 动态老化:缺省 300 秒老化时间,保证拓扑变化或终端移动时表项能自动校正。
- 冲突域隔离:每个端口都是一个独立的冲突域,端口之间可以全双工线速并发转发,彻底取代了共享式集线器。
读到这里,细心的读者一定会提出一个直击灵魂的问题: “主机 A 在封装以太网帧时,必须在帧头填上主机 B 的 MAC 地址。可是主机 A 刚开机时,它只知道对方的 IP 地址(比如 192.168.1.2),主机 A 怎么从这个冷冰冰的数字 IP,打听出对方网卡的物理 MAC 地址呢?” 下一课我们请出局域网内不可或缺的地址翻译官——地址解析协议(ARP)。