首页/计算机网络/03-data-link/VLAN详解 🔗 在 Obsidian 中打开
计算机网络 · 03-data-link

VLAN详解

重要度 ★★★★★ 计算机网络/数据链路层虚拟局域网Trunk802.1Q交换机
速查
VLAN 是在交换机上通过软件划分的逻辑网络,一个 VLAN = 一个广播域;跨交换机靠 802.1Q Tag(4 字节,VLAN ID 12 bit)在 Trunk 链路上区分。考试频率 ⭐⭐⭐⭐。

一、基本概念

VLAN(Virtual Local Area Network,虚拟局域网)是在交换机上通过软件划分的逻辑网络,不受物理位置限制

为什么需要 VLAN

  1. 控制广播域:一个 $VLAN=$ 一个广播域
  2. 提高安全性:不同 VLAN 间默认不通信
  3. 灵活管理:按逻辑而非物理位置分组
  4. 减少广播流量:广播帧不跨 VLAN 传播
与冲突域的区别交换机的每个端口是一个冲突域;而每个 VLAN 才是一个广播域。不划 VLAN 时,整台交换机(乃至整个二层网络)是一个广播域。

二、VLAN 划分方式

1. 基于端口(最常用)

交换机:
端口1-8:   VLAN 10 (财务部)
端口9-16:  VLAN 20 (技术部)
端口17-24: VLAN 30 (市场部)
  • 简单直观
  • 主机移动端口后需重新配置

2. 基于 MAC 地址

  • 根据设备 MAC 地址分配 VLAN
  • 主机移动位置无需重新配置
  • 初始配置工作量大

3. 基于协议

  • 根据网络层协议类型(IP、IPX 等)
  • 较少使用

4. 基于子网

  • 根据 IP 地址 / 子网划分
  • 与网络层结合

三、VLAN 帧格式(802.1Q)

标签帧结构

标准以太网帧:
┌──────────┬──────────┬─────┬─────┬─────┐
│ 目的MAC  │ 源MAC    │类型 │数据  │ FCS │
└──────────┴──────────┴─────┴─────┴─────┘

802.1Q标签帧:
┌──────────┬──────────┬──────┬─────┬─────┬─────┐
│ 目的MAC  │ 源MAC    │ 802.1Q│类型 │数据  │ FCS │
│          │          │ Tag  │     │     │     │
└──────────┴──────────┴──────┴─────┴─────┴─────┘

802.1Q Tag (4字节):
┌──────┬───────┬──────┬──────────┐
│ TPID │ 优先级 │ CFI  │  VLAN ID │
│16bit │ 3bit  │ 1bit │  12bit   │
│0x8100│       │      │ 0-4095   │
└──────┴───────┴──────┴──────────┘
802.1Q Tag · 4 字节 = 32 bit TPID = 0x810016 bit PRI3 bit CFI1 VLAN ID12 bit → 0-4095 插入位置:源 MAC 之后、类型/长度字段之前;插入后帧最大长度由 1518 变为 1522 字节
图:802.1Q Tag 的四个字段与其位宽。

关键字段

字段长度说明
TPID16 bit0x8100,标识 802.1Q 帧
Priority3 bit802.1p 优先级(0-7)
CFI1 bit规范格式指示
VLAN ID12 bitVLAN 编号(0-4095)
  • VLAN 0:优先级帧
  • VLAN 1:默认 VLAN
  • VLAN 4095:保留
  • 可用:VLAN 2-4094
考点VLAN ID 占 12 bit → 理论 $2^{12} = 4096$ 个;扣掉 0、1、4095 的特殊用途,实际可用 4094 个(2~4094)

四、Trunk 链路

概念

交换机之间的链路,允许多个 VLAN 的帧通过

Access 端口 vs Trunk 端口

类型连接对象处理方式
Access终端设备(PC、服务器)只属于一个 VLAN,发送无标签帧
Trunk交换机 / 路由器属于所有 VLAN,发送带标签帧

Trunk 工作过程

PC(Access端口,VLAN10) → 交换机1 → Trunk链路 → 交换机2 → PC(Access端口,VLAN10)

1. PC发送无标签帧
2. 交换机1收到帧,根据入端口标记VLAN10
3. 交换机1从Trunk端口发送带802.1Q标签的帧
4. 交换机2收到带标签帧,读取VLAN ID=10
5. 交换机2从VLAN10的Access端口发出,剥离标签
记忆口诀"进 Access 打标签,出 Access 剥标签,Trunk 上一律带标签"——终端主机永远看不到 802.1Q Tag。

五、VLAN 间通信

问题

不同 VLAN 默认不能通信(不同广播域)。

解决方案

1. 路由器(单臂路由)

交换机          路由器         交换机
VLAN10 ──Trunk── 子接口1.10
VLAN20 ──Trunk── 子接口1.20

路由器配置:
interface GigabitEthernet0/0.10
  encapsulation dot1Q 10
  ip address 192.168.10.1 255.255.255.0

interface GigabitEthernet0/0.20
  encapsulation dot1Q 20
  ip address 192.168.20.1 255.255.255.0

2. 三层交换机

  • 交换机内置路由功能
  • 使用 SVI(交换机虚拟接口)
  • 性能优于单臂路由
interface vlan 10
  ip address 192.168.10.1 255.255.255.0

interface vlan 20
  ip address 192.168.20.1 255.255.255.0
易错VLAN 间通信必须借助网络层设备(路由器 / 三层交换机);二层交换机(参见 bridge-and-switch)无论如何配置都无法让两个 VLAN 互通。

六、VLAN 配置示例

Cisco 交换机配置

# 创建VLAN
Switch(config)# vlan 10
Switch(config-vlan)# name Finance
Switch(config)# vlan 20
Switch(config-vlan)# name Technical

# 配置Access端口
Switch(config)# interface fastEthernet 0/1
Switch(config-if)# switchport mode access
Switch(config-if)# switchport access vlan 10

# 配置Trunk端口
Switch(config)# interface fastEthernet 0/24
Switch(config-if)# switchport mode trunk
Switch(config-if)# switchport trunk allowed vlan 10,20

七、VLAN 的优势总结

优势说明
控制广播每个 VLAN 是独立广播域
提高安全VLAN 间默认隔离
灵活管理逻辑分组不受物理限制
减少流量广播不跨 VLAN
降低成本减少路由器需求

记忆卡片

VLAN 的本质是什么?一个 VLAN 等于什么?
VLAN 是在交换机上通过软件划分的逻辑网络。一个 $VLAN=$ 一个广播域。
Access 端口和 Trunk 端口的区别?
Access 连终端,属单一 VLAN,发无标签帧;Trunk 连交换机,承载多 VLAN,发带 802.1Q 标签的帧。
802.1Q 的 VLAN ID 多少 bit?可用范围?
12 bit(0-4095);可用 VLAN 2-4094(0、1 特殊,4095 保留)。
不同 VLAN 间如何通信?
路由器单臂路由(每 VLAN 一个子接口)或三层交换机 SVI 实现 VLAN 间路由。

交互动画 · 帧穿越 Trunk 的打/剥标签过程

PC-AVLAN 10 · Access 交换机 1入端口→打 Tag 交换机 2读 VID→剥 Tag PC-BV10 Trunk 链路(带标签) 当前链路上的帧格式 目的 MAC 源 MAC 802.1Q TagVID = 10 类型 数据 FCS 无标签帧(Untagged) 终端主机始终看到无标签帧,Tag 只存在于交换机之间的 Trunk 链路上
点击「播放」或「下一步」开始演示
示意图:橙色节点表示当前处理该帧的设备;帧结构中的橙色小块即 4 字节 802.1Q Tag,随进入 / 离开 Trunk 链路而出现 / 消失。

相关知识点

ethernet-and-vlan bridge-and-switch

↑ 以上为站内 HTML 相对链接(纯网页可浏览);本页右上「在 Obsidian 中打开」跳回源笔记。