以太网帧、交换机转发与 VLAN
内容摘要:本章讲清「一根网线/一个二层网络之内」数据如何流动:以太网帧的字段与边界、MAC 地址的作用、交换机如何学习并转发、广播域与冲突域的区别、以及 VLAN(802.1Q)如何在同一物理网络上切出多个逻辑二层。最后简述无线局域网(802.11)与有线以太网的关键差异。这是理解 ARP/NDP(06)与 IP 转发(07)的基础。
一、以太网帧结构
以太网(Ethernet,IEEE 802.3) 是当今有线局域网的事实标准。链路层的数据单元是帧(frame)。理解字段边界,才能读懂抓包(20 抓包与实验)。
| 字段 | 位宽/长度 | 取值示例 | 语义 | 生成方 | 接收方处理 | 抓包显示 | 常见异常 |
|---|---|---|---|---|---|---|---|
| 前导码 + SFD | 8 字节 | 0xAA…AB | 物理层时钟同步,不算帧内容 | 网卡 | 硬件剥离 | 通常不显示 | — |
| 目的 MAC(DA) | 6 字节 | ff:ff:ff:ff:ff:ff(广播) | 目标网卡地址 | 发送方 | 匹配则收,否则(非混杂)丢 | Dst | 单播被当广播泛洪 |
| 源 MAC(SA) | 6 字节 | 86:b5:4e:0a:4a:ac | 发送方网卡地址 | 发送方 | 交换机据此学习 | Src | 源地址伪造(网络安全) |
| EtherType/长度 | 2 字节 | 0x0800=IPv4、0x86DD=IPv6、0x0806=ARP、0x8100=802.1Q | 指明上层协议(解复用键,02) | 发送方 | 交给对应上层 | Type | 类型错投递 |
| 载荷 | 46–1500 字节 | IP 包 | 上层数据 | 上层 | 上交 | 展开为 IP/ARP | 不足 46B 需填充(padding) |
| 帧校验序列(FCS) | 4 字节 | CRC-32 | 检错(03) | 发送方网卡 | 校验失败即丢,不纠错 | 常被卸载隐藏 | CRC error 计数 |
要点:
- 最小帧 64 字节、最大帧 1518 字节(含 14B 头 + 46–1500B 载荷 + 4B FCS,不含前导码)。MTU=1500 指的是载荷(IP 包)上限(03、09)。
- 巨帧(Jumbo Frame):部分环境支持 MTU 9000,提升大流量效率,但全路径必须一致,否则触发分片或 PMTUD 黑洞(09)。
- EtherType ≥ 0x0600 表示类型,< 0x0600 表示长度(历史遗留的 802.3 长度字段)。
二、MAC 地址
MAC 地址(Media Access Control Address) 是 48 位(6 字节)链路层硬件地址,通常写作 xx:xx:xx:xx:xx:xx。
- 单播 / 组播 / 广播:目的 MAC 第 1 字节的最低位(I/G 位)为 0=单播、1=组播;全
ff:ff:ff:ff:ff:ff=广播。 - 本地管理位(U/L 位):第 1 字节第 2 低位为 1 表示「本地管理地址(locally administered)」,即软件随机生成而非厂商烧录——现代手机/笔记本的「MAC 地址随机化」隐私功能正是设置此位(见第九节安全)。
- 作用域:MAC 地址只在同一二层网络(广播域)内有意义。跨路由器转发时,源/目的 MAC 会在每一跳被改写,而源/目的 IP 不变(详见 06、07)。
关键认知:MAC 不路由,只在本地链路寻址。 「IP 是端到端的门牌号,MAC 是每一跳的临时接力棒」——这个心智对理解 ARP 与逐跳转发至关重要。
三、交换机:学习与转发
交换机(switch) 工作在二层,核心是MAC 地址表(转发表/CAM 表):把「MAC 地址 ↔ 端口」映射起来,实现帧的定向转发,而非像集线器(hub)那样无脑泛洪。
1、学习与转发算法
- 学习(learning):看帧的源 MAC,把「源 MAC → 入端口」写入表,并刷新老化时间。
- 转发(forwarding):看目的 MAC 查表——命中则从对应端口发出;未命中(未知单播)或广播/组播则**泛洪(flooding)**到除入端口外的所有端口。
- 老化(aging):一段时间(常见 300 秒)未再见到某 MAC,则从表中删除。
未知单播泛洪(unknown unicast flooding):目的 MAC 不在表中时,交换机会像广播一样泛洪。这解释了为什么「MAC 表溢出攻击(MAC flooding)」能把交换机逼成集线器、从而嗅探全网流量(网络安全)。
2、交换机 vs 集线器 vs 路由器
| 设备 | 工作层次 | 转发依据 | 冲突域 | 广播域 |
|---|---|---|---|---|
| 集线器(hub) | L1 物理 | 无(电信号复制) | 全部共享一个 | 一个 |
| 交换机(switch) | L2 链路 | 目的 MAC | 每端口一个 | 一个(除非 VLAN) |
| 路由器(router) | L3 网络 | 目的 IP(最长前缀,07) | 每接口一个 | 每接口一个(隔离广播) |
四、广播域与冲突域
这是二层最容易混淆的一对概念:
- 冲突域(collision domain):可能发生信号冲突的范围。交换机每个端口是独立冲突域(全双工下基本无冲突),集线器所有口共享一个。
- 广播域(broadcast domain):广播帧能到达的范围。一台交换机默认是一个广播域;路由器/VLAN 隔离广播域。
- 为什么要隔离广播域:广播帧(ARP、DHCP 发现等)会被泛洪到整个广播域,域越大,广播风暴风险越高、性能越差。这正是 VLAN 与三层网关存在的动机。
五、VLAN 与 802.1Q
虚拟局域网(Virtual LAN,VLAN,IEEE 802.1Q) 在同一物理交换网络上划分多个逻辑广播域,实现隔离(不同部门/租户互不广播可见),无需为每个网络单独布线。
1、802.1Q 标签
VLAN 通过在以太网帧中插入 4 字节 802.1Q 标签实现:
| 子字段 | 位宽 | 语义 |
|---|---|---|
| TPID(Tag Protocol ID) | 16 位 | 固定 0x8100,标识这是 802.1Q 帧 |
| PCP(Priority Code Point) | 3 位 | 802.1p 优先级(QoS,QoS 与高可用) |
| DEI(Drop Eligible Indicator) | 1 位 | 拥塞时可优先丢弃标记 |
| VID(VLAN ID) | 12 位 | VLAN 编号,0–4095(0 与 4095 保留,可用 1–4094) |
12 位 VID → 最多 4094 个可用 VLAN,这是大规模多租户数据中心转向 VXLAN(24 位 VNI,约 1600 万)的直接原因(VPN 与隧道、云网络)。
2、Access 口、Trunk 口与 Native VLAN
| 端口类型 | 是否带标签 | 用途 |
|---|---|---|
| Access(接入口) | 不带标签(untagged) | 连终端设备,端口固定属于某个 VLAN |
| Trunk(干道口) | 带 802.1Q 标签 | 交换机互联,承载多个 VLAN |
| Native VLAN | Trunk 上不打标签的那个 VLAN | 兼容不识别标签的设备;是 VLAN 跳跃攻击的高危点(网络安全) |
- VLAN 间通信必须经过三层设备(路由器或三层交换机的 SVI/网关),这叫 VLAN 间路由(inter-VLAN routing)。同 VLAN 内二层直达,跨 VLAN 需路由——这是「二层隔离、三层互通」的经典结构。
六、无线局域网(802.11)关键差异
无线局域网(Wireless LAN,WLAN,IEEE 802.11 / Wi-Fi) 与有线以太网在链路层语义上有本质差异,理解它们能解释很多「Wi-Fi 特有」的性能与排障问题:
| 维度 | 有线以太网(802.3) | 无线(802.11) |
|---|---|---|
| 介质 | 独占(全双工交换) | 共享半双工(同频不能同时收发) |
| 冲突处理 | CSMA/CD(现代交换基本无冲突) | CSMA/CA(避免冲突,先侦听再退避) |
| 确认 | 交给上层 | 每帧链路层 ACK(无线误码率高) |
| 帧头 | 目的+源 2 个 MAC | 最多 4 个 MAC 地址(含 AP/BSSID) |
| 加入网络 | 插线即通 | 扫描→认证→关联(association) |
| 移动 | 无 | 漫游(roaming) 在 AP 间切换 |
| 安全 | 物理接触门槛 | 空口开放,需 WPA2/WPA3 加密 |
- 信道与干扰:2.4GHz 频段可用非重叠信道少(常用 1/6/11),易受微波炉/蓝牙干扰;5GHz/6GHz 信道多、干扰小但穿墙差。
- 关联 ≠ 有网:设备关联到 AP(二层通)不代表能上网——还需 DHCP 拿到 IP(19)、网关与 DNS 正常(这正是「连上 Wi-Fi 但打不开网页」的分层排障起点,分层故障排查)。
- 安全:WPA3 用 SAE(Simultaneous Authentication of Equals)取代 WPA2 的 PSK 四次握手,抵御离线字典与 KRACK 类攻击;WEP、WPA(TKIP) 已弃用,不得推荐(本库红线)。
[待验证/时效]:802.11 具体标准代际(如 Wi-Fi 6/6E/7 对应 802.11ax/be)的速率、信道宽度与频段随版本演进,使用时以 IEEE 802.11 当前标准与设备文档为准。
七、最小可复现实验
1、实验目标
- 查看本机 MAC 地址、接口标志与 MTU。
- 在 Linux 隔离环境创建 VLAN 子接口并验证隔离(本环境未执行,给出可复现命令)。
2、平台与工具
- 本机验证环境:macOS 26.6.2,
ifconfig。VLAN/bridge 操作为 Linuxiproute2(本环境无)。
3、执行命令与本机实测
查看接口 MAC、标志与 MTU(本机可跑):
# macOS(本机可跑)
ifconfig en0 | grep -E 'flags|ether|mtu'
# Linux 等价
ip -br link show
ip link show dev eth0本机实测(2026-09-07,MAC 已按本库规范脱敏为文档示例值):
en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
ether 02:00:5e:10:00:01 # 实际为本机烧录 MAC,此处脱敏展示解读:
BROADCAST与MULTICAST标志表明该接口支持广播/组播(ARP、邻居发现依赖广播/组播,06);mtu 1500是标准以太网载荷上限。
4、VLAN 隔离实验(需 Linux,本环境未执行)
在两个网络命名空间(20)上创建同物理链路、不同 VLAN 的子接口,验证「不同 VLAN 二层不通」:
# [未在本环境执行] Linux + iproute2;需 root/CAP_NET_ADMIN
# 在 veth 上创建 VLAN10 和 VLAN20 子接口
ip link add link veth-c name veth-c.10 type vlan id 10
ip link add link veth-c name veth-c.20 type vlan id 20
ip addr add 192.0.2.10/24 dev veth-c.10
ip addr add 192.0.2.20/24 dev veth-c.20 # 同网段但不同 VLAN
ip link set veth-c.10 up ; ip link set veth-c.20 up
# 预期:对端若在 VLAN10,则 ping .10 通、ping .20 不通(VLAN 二层隔离)
# 抓包 veth-c.10 应看到 802.1Q 标签 (Wireshark: 802.1Q Virtual LAN, ID=10)
sudo tcpdump -i veth-c -nn -e -c 10 vlan # -e 显示链路层, vlan 过滤带标签帧
# 清理
ip link del veth-c.10 ; ip link del veth-c.20[未在本环境执行]:macOS 无
ip link ... type vlan。完整拓扑与清理见 20 统一实验。
5、结论边界与清理
- MAC/MTU 为本机静态属性;VLAN 实验需在 Linux 隔离环境执行,命令含清理步骤。
八、错误示例与常见误区
| 误区 | 纠正 |
|---|---|
| 「MAC 地址全球唯一且不可变」 | 可本地管理/随机化(U/L 位);隐私功能会随机 MAC。 |
| 「交换机隔离广播」 | 默认不隔离;需 VLAN 或路由器隔离广播域。 |
| 「同一交换机的设备就是同一网段」 | 未必;VLAN 可在同交换机上切多个广播域。 |
| 「MTU 1500 是帧大小」 | 1500 是载荷(IP 包)上限,帧还含 14B 头 + 4B FCS。 |
| 「连上 Wi-Fi 就能上网」 | 关联仅二层通;还需 DHCP/网关/DNS(19、分层故障排查)。 |
| 「VLAN 之间默认能通」 | 需三层设备做 VLAN 间路由。 |
九、性能影响
- 广播域过大:广播/未知单播泛洪消耗带宽与 CPU,域越大越差 → 用 VLAN/三层分割。
- MTU 不一致:路径 MTU 不匹配触发分片或 PMTUD 黑洞,严重降吞吐(09)。
- 无线共享介质:半双工 + CSMA/CA + 每帧 ACK,使 Wi-Fi 实际吞吐远低于标称,且随接入设备数下降。
- VLAN 标签开销:每帧多 4 字节,通常可忽略;但巨量小包时累积。
十、安全风险与加固
| 风险 | 机制 | 加固 | 详见 |
|---|---|---|---|
| MAC 泛洪(MAC flooding) | 灌满 MAC 表逼交换机泛洪、嗅探 | 端口安全(限制每口 MAC 数) | 网络安全 |
| VLAN 跳跃(VLAN hopping) | 利用 Native VLAN 或双标签越权访问其他 VLAN | 关闭 DTP、显式配 Native VLAN、Trunk 白名单 | 网络安全 |
| ARP 欺骗 | 伪造 MAC↔IP 映射做中间人 | 动态 ARP 检测(DAI)、静态绑定 | 06、网络安全 |
| 无线破解 | 弱加密(WEP/WPA-TKIP) | 用 WPA3;禁用弃用协议 | 本章第六节 |
十一、版本与平台差异
- 802.3(以太网)、802.1Q(VLAN)、802.11(Wi-Fi) 由 IEEE 定义。
- Linux:
ip link ... type vlan建 VLAN 子接口、bridge建软件交换(Linux 与容器网络);macOS:ifconfig vlan;交换机:厂商 CLI 语法各异(本库区分通用原理与厂商语法)。
十二、常见问题与排查方向
- 「同网段某些主机互通、某些不通」:查 VLAN 划分、端口 Access/Trunk 配置、MAC 表老化。
- 「网络偶发变慢、广播多」:查广播风暴/二层环路(06 STP)、广播域是否过大。
- 「抓包看不到 VLAN 标签」:Access 口 untagged,或抓包点在打标签之前;在 Trunk 口用
tcpdump -e vlan。
十三、清理与恢复
- 只读查看命令无副作用。
- VLAN 子接口、bridge 等实验对象须用
ip link del删除(见第七节与 20)。
十四、关联章节
- 上一章:04 网卡、操作系统网络栈与套接字
- 下一章:06 ARP、NDP 与二层弹性
- 强相关:07 IPv4 编址与子网、VPN 与隧道、网络安全、Linux 与容器网络
检索关键词
以太网帧结构 FCS MAC 地址 OUI 单播广播 MAC 随机化 本地管理位 交换机学习转发 MAC 表 未知单播泛洪 广播域 冲突域 VLAN 802.1Q 标签 VID Access Trunk Native VLAN VLAN 间路由 无线 802.11 CSMA/CA WPA3 巨帧 Jumbo Frame
权威来源
- IEEE 802.3(以太网帧格式、FCS)
- IEEE 802.1Q(VLAN 标签、Trunk)
- IEEE 802.11(无线局域网)
- IANA EtherType 注册表
- Linux
ip-link(8)、bridge(8)man page(以目标内核版本为准)
帧格式、VLAN 标签与无线机制以上述 IEEE 标准为准,
verified_at: 2026-09-07;接口 MAC/MTU 为 macOS 26.6.2 本机输出,MAC 已按脱敏规范替换为文档示例值。VLAN 子接口实验未在本环境执行(macOS 无ip link type vlan)。
