以太网交换
一帧数据抵达交换机,它怎么知道该往哪儿送?
亲手走一遍,把 MAC 学习与转发真正看明白。
让一帧数据,带你认识交换机。
先选场景,再点“播放全过程”;也可以逐步观察每一个决定。
SW1 的 MAC 地址表
t = 0 s| MAC 地址 | VLAN | 端口 | 剩余 |
|---|---|---|---|
| 尚未学习任何主机 交换机不是天生知道谁在哪儿。 | |||
动态表项 · 教学老化时间 300 s
只有再次收到该源 MAC 的帧,才刷新它的计时。
目的 MAC 暂时不在表里。你猜 SW1 会只发给 B,还是向其他端口泛洪?
模型范围:普通二层数据帧、单一 VLAN、所有端口处于转发状态;暂不涉及安全策略、组播控制与特殊协议帧。
交换机维护的是一本“位置簿”。
想象一栋办公室:MAC 地址是收件人标识,端口是通往房间的门。交换机每次看到有人从某扇门送来信件,就记下“这个发送者可以从这扇门找到”。
根据入端口、源 MAC、目的 MAC 和当前 MAC 表,独立推导一帧的出口;解释为什么第一次通信会泛洪、为什么回包后通常能定向转发。
- 认识以太网:局域网里的一套通信规则
以太网规定帧格式、MAC 寻址和介质访问等规则,常见有双绞线与光纤链路。普通二层交换依据 MAC 地址和 VLAN 转发,IP 寻址和路由属于下一层。
- 源 MAC 告诉它:“我从这里来。”
对普通有效帧,交换机学习合法的单播源 MAC,把“MAC + VLAN → 入端口”记录为动态表项。若原来在另一个端口,就更新位置;若位置未变,就刷新老化计时。
- 目的 MAC 告诉它:“我要去哪里。”
查表命中另一端口 → 单播转发。未命中 → 向同一 VLAN 中除入端口外、允许转发的其他端口泛洪。若目的对应的就是入端口 → 过滤,不再转发出去。
- 广播不是“查不到的单播”
广播帧的目的 MAC 为 ffff-ffff-ffff,用于向广播域内所有主机发送。未知单播的目的仍然是某一台主机,只是交换机暂时不知道出口;两者都可能被泛洪,但含义不同。
- 接收副本,不代表接受数据
未知单播被泛洪后,其他主机的网卡通常会丢弃目的 MAC 与自身不符的普通帧。混杂模式、抓包等情况另论。交换机不会因为“把帧发给 B”,就学会 B 的位置;要等 B 真正发帧。
- 位置簿会过期,也会更新
动态表项一段时间未被相应源流量刷新后会老化。此时再发给它可能重新泛洪。静态表项通常不按动态计时老化。设备换口也不靠猜测:从新端口收到它发送的帧,才会重新学习。
MAC 地址表 ≠ ARP 表
MAC 表:在二层转发域中,记录 MAC 通往哪个端口。
ARP 表:记录 IPv4 地址对应哪个 MAC,供主机或三层接口封装帧使用。
交换机不需要先理解帧里的 IP 地址,才能学习源 MAC。
MAC 地址 ≠ 永远不变的身份证
常见以太网 MAC 长 48 bit,写成 6 个字节。厂商分配的地址与本地管理的地址都存在;地址可以被修改,也可能冲突。
本课用 02 开头的本地管理地址作示例,不对应真实厂商。
碰撞域与广播域,别混在一起
集线器在物理层复制信号,不学习 MAC;交换机按帧做决定。VLAN 可以在二层划分广播域,本节先建立概念,第 7 章再配置。
拆开一个 Ethernet II 帧
点击字段,看看交换机究竟用到了什么。下面是不带 VLAN 标签的常见 Ethernet II 帧。
目的 MAC · 决定这帧往哪送
交换机在所属 VLAN 中查询目的 MAC。命中时定向转发;普通未知单播会被泛洪。ffff-ffff-ffff 表示广播。
为什么最小是 64 字节?
6 + 6 + 2 + 46 + 4 = 64。数据不够时补填充。这个历史最小长度与共享、半双工以太网的碰撞检测有关,不表示全双工交换网络仍在发生碰撞。
为什么最大常说 1518 字节?
6 + 6 + 2 + 1500 + 4 = 1518。1500 指常见以太网 MTU,即本例上层数据的大小,不是整个以太网帧长度。巨型帧及其他封装另论。
网卡可能剥离 FCS,抓包位置与卸载机制也会影响显示。前导码 7 字节、帧起始定界符 1 字节,以及帧间隙,不计入这里的 64—1518 字节。802.1Q 标签增加 4 字节,第 7 章再讲。
用这一帧检查你的理解
Destination: 02:00:00:00:00:0b ← 收件人 B
Source: 02:00:00:00:00:0a ← 发件人 A
EtherType: 0x0800 ← 上层承载 IPv4
Payload: IPv4 数据报(不足最小长度时填充)
FCS: CRC-32 校验SW1 从 GE0/0/1 收到它,会学习 0200-0000-000a → GE0/0/1,再查询 B 的 MAC。不要把目的和源的作用记反。
先观察现象,再解释原因。
以下使用华为交换机常见 VRP 命令。接口名、输出字段和命令支持情况随型号、版本变化;实验前用 ? 确认。
实验:一台交换机,两台主机
A 接 GE0/0/1,配置 192.168.10.10/24;B 接 GE0/0/2,配置 192.168.10.20/24。两端接口属于同一 VLAN、链路正常,主机允许 ICMP。同网段互 Ping 不需要默认网关。
<SW1> display interface brief
<SW1> display mac-address
<SW1> display mac-address dynamic
<SW1> display vlan 1
<SW1> display current-configuration interface GigabitEthernet 0/0/1如果需要显式配置这两个实验接入口
<HUAWEI> system-view
[HUAWEI] sysname SW1
[SW1] interface GigabitEthernet 0/0/1
[SW1-GigabitEthernet0/0/1] port link-type access
[SW1-GigabitEthernet0/0/1] port default vlan 1
[SW1-GigabitEthernet0/0/1] quit
[SW1] interface GigabitEthernet 0/0/2
[SW1-GigabitEthernet0/0/2] port link-type access
[SW1-GigabitEthernet0/0/2] port default vlan 1
[SW1-GigabitEthernet0/0/2] quit
[SW1] quit在独立实验交换机或模拟器操作。第 7 章会展开 Access、PVID 和 VLAN 的含义。部分设备接口默认模式不同,不能直接套用到现网。
- 记录通信前的 MAC 表
先查看输出。真实环境可能已有后台报文,因此“还没 Ping”不等于“表一定为空”。
- 从 A Ping B,同时观察抓包
若 A 的 ARP 缓存为空,它先发送 ARP 广播,SW1 学到 A;B 的 ARP 回应又让 SW1 学到 B。此后 ICMP 帧通常已经可以定向转发。
- 对照 MAC 表与真实接线
检查两台主机的 MAC、VLAN 和端口。表中可能还有其他主机或协议相关流量产生的记录。
- 区分动画模型与真实 Ping
动画预设 A 已知道 B 的 MAC,故意直接发送单播,展示未知单播泛洪。真实首次 Ping 常先通过 ARP 学好双方位置,不能把二者当成同一流程。
网络不通,沿着证据排查
① 接口是否真的 Up?
查看接口简表和对应接口详情,检查线缆、网卡、管理状态、协商结果及错误计数。接口 Up 仅证明链路建立,不代表 VLAN、地址或应用正常。
② 对应主机的 MAC 有没有被学到?
让主机主动发送流量,再查动态 MAC 表。没有表项时优先检查入向链路、VLAN、端口状态及学习限制。只向它发送流量,不保证学会它的位置。
③ MAC、端口、VLAN 是否符合拓扑?
若 MAC 在上联端口,可能是下挂交换机的正常主机。一个端口对应多个 MAC 很常见。表项频繁在端口间跳动,则需结合日志、环路、重复地址或冗余设计分析。
④ 二层看起来正常,为什么 Ping 仍失败?
继续检查 IP、掩码、ARP、重复地址、主机防火墙和 ICMP 策略;跨网段时还需检查网关、路由和回程。MAC 表正确不能单独证明业务端到端可用。
面试时,试着用 30 秒回答
交换机是怎么学习和转发的?
它从收到的有效帧的源 MAC 学习主机所处端口,并关联 VLAN。转发时查目的 MAC;已知单播送往对应出口,未知单播在同 VLAN 内除入端口外泛洪,广播也在该广播域泛洪,目的位于入端口时过滤。动态表项会刷新、老化,主机换口后也会重新学习。
交换机一个端口能学到多个 MAC 吗?
可以。若这个端口连着另一台交换机,后面的多台主机都会从这个上联口抵达。MAC 表描述的是“从哪个端口可达”,不保证这个端口只直连一台主机。
交换机能隔离广播吗?
同一 VLAN 内的普通二层交换会转发广播,单纯增加交换机不会隔离广播域。VLAN 可以划分广播域;路由器或三层接口通常不会直接转发二层广播。
8 道题,把知识连起来。
选项提交后立即解释;达到 6 / 8 可标记本章已掌握。
练习记录只保存在当前浏览器,不会上传服务器。