802.1Q VLAN 封包结构与 VLAN 间互通

深入了解带有 VLAN 标签的以太网帧结构,以及它是如何实现跨 VLAN 通信的。

1. IEEE 802.1Q 带有 VLAN 标签的以太网帧结构

标准的以太网帧在源 MAC 地址和类型/长度字段之间插入了一个 4 字节 (32 bits) 的 VLAN 标签(802.1Q Tag)。

目标 MAC
6 Bytes
源 MAC
6 Bytes
802.1Q VLAN Tag
4 Bytes (点击展开)
类型/长度
2 Bytes
数据 (Payload)
46 - 1500 Bytes
FCS
4 Bytes
TPID (标签协议标识符)
0x8100
16 bits (2 Bytes)
固定值,表明这是一个 802.1Q 标签帧
PRI
3 bits
优先级 (QoS)
CFI/DEI
1 bit
丢弃指示
VLAN ID (VID)
12 bits
标识所属 VLAN (0-4095)

核心概念: VLAN 的本质就是在以太网帧中打上一个 VLAN ID 标签。交换机通过识别这个标签,来决定这个数据帧应该在哪个 VLAN 广播域内转发,从而实现二层隔离。

2. VLAN 间互通演示 (单臂路由/三层交换机原理)

不同 VLAN 在二层是隔离的。要实现互通,必须经过三层设备(路由器或三层交换机)剥离原 VLAN 标签,查路由表后,重新打上目标 VLAN 标签再转发。

R1
路由器(网关)
g0/0/0.1=192.168.10.1/24
g0/0/0.2=192.168.20.1/24
LSW1
trunk
💻
PC1
192.168.10.10/24
网关: 192.168.10.1
💻
PC2
192.168.20.10/24
网关: 192.168.20.1
vlan10
vlan20
Payload
1. PC1 发出数据

PC 不懂 VLAN,发出的是标准的无标签帧 (Untagged)

Untagged Frame
2. 交换机打标签

数据进入 Access 接口,交换机为其打上 PVID=10 的 VLAN 10 标签。通过 Trunk 口发往网关。

Tag: VLAN 10
3. 三层设备路由

路由器接收帧,剥离 VLAN 10 标签,查路由表后,发现目标在 VLAN 20,于是重新打上 VLAN 20 标签发回交换机。

Tag: VLAN 20
4. 交换机剥离标签

交换机收到 VLAN 20 的帧,准备从连接 PC2 的 Access 接口发包时,剥离 VLAN 20 标签,PC2 收到无标签帧。

Untagged Frame

3. 拓展:相同子网的不同 VLAN 互访 (Hybrid 端口妙用)

通常不同 VLAN 代表不同网段。但在特定场景下(如提供网络隔离但共享资源),我们可能会把它们配置在同一网段,并通过 Hybrid 端口实现二层互通,而无需经过三层路由。

Hybrid 端口的工作机制(华为等设备支持):

  • 它既可以像 Access 一样连接终端(发送时剥离标签)。
  • 也可以像 Trunk 一样连接交换机(允许多个 VLAN 通过)。
  • 核心魔法: 可以灵活配置 untagged (发送时剥离标签) 和 tagged (发送时保留标签) 的 VLAN 列表。
// 假设 PC1(VLAN10) 和 PC2(VLAN20) 在同一网段,要实现互访:
interface GigabitEthernet0/0/1 // 连接 PC1
port link-type hybrid
port hybrid pvid vlan 10 // 收到无标签帧打上 VLAN 10
port hybrid untagged vlan 10 20
// 发送 VLAN 10 和 20 的帧时,剥离标签!

interface GigabitEthernet0/0/2 // 连接 PC2
port link-type hybrid
port hybrid pvid vlan 20 // 收到无标签帧打上 VLAN 20
port hybrid untagged vlan 10 20
// PC2 也能收到原本是 VLAN 10 的数据包了!

通过这样配置,交换机在将数据发给 PC1/PC2 时,都会把 VLAN Tag 剥离,从而欺骗 PC,让它们以为自己在同一个普通局域网中直接通信,实现了二层互通