← 网络基础学习第 38 / 55 章进阶35 分钟

模块五 · 链路层和局域网

VLAN:在一台交换机上划出多台

上一章说交换机不隔离广播域。那如果一栋楼里 500 台设备接在一堆交换机上,一个 ARP 广播就要打扰 500 台设备,怎么办?VLAN 就是答案。

本章要解决的问题:上一章说交换机不隔离广播域。那如果一栋楼里 500 台设备接在一堆交换机上,一个 ARP 广播就要打扰 500 台设备,怎么办?VLAN 就是答案。

本章的证据来源:⚠️ 本章没有历史实测记录。 本机连的是家用路由器内置的交换模块,没有开放管理接口;实测也确认本机 WLAN 网卡的高级属性里没有 VLAN 相关项。所以本章内容标注为标准/原理(IEEE 802.1Q),并在文中指明哪些是推断。

先从一个例子理解概念

办公电脑和访客电脑即使接同一台交换机,也可能需要分开。VLAN把“接在同一个盒子”与“处在同一广播范围”分开。

在二层分组:VLAN

VLAN(虚拟局域网)把交换网络分成不同广播域;可理解为同一个硬件里划出的通信分组,不是凭空多了一台实体交换机。

帧属于哪个组:标签

802.1Q标签携带VLAN编号等信息,使一条链路能区分多个组的流量。标签是帧格式里的字段,不是修改IP地址。

接终端与承载多组:Access和Trunk

常见Access接入口向终端提供单VLAN的无标签接入;Trunk干线口承载多个VLAN。是否带标签仍看配置,支持VLAN的服务器也可接Trunk。

二层分组与IP子网不同

VLAN决定二层广播范围;IP子网决定三层地址范围。常让一个VLAN对应一个子网便于管理,但这是设计习惯,不是同一个概念。

下面再用这些概念看原理、命令和结果。规范与官方资料列在本章末尾,类比只帮助理解,不代替协议规则。

问题:广播域太大了

先把问题说具体。

假设一栋办公楼有 200 台电脑,全部接在若干台交换机上,没有划分任何逻辑分组。那么:

  • 任何一台电脑开机,一个 ARP 请求 → 被泛洪到全部 200 台
  • 每台电脑都要收下这个帧、交给 ARP 模块处理、发现不是问自己、再丢掉
  • 200 台设备各干一次无用功,每台设备的 CPU 都被无谓消耗

设备越多,这种打扰越频繁。而且广播域越大,广播风暴的破坏力也越大(上一章讲过)。

传统解决办法及其代价

办法代价
把不同部门接到不同的物理交换机上每个部门一台交换机,贵;部门调整时要重新拉线
拉更多网线做物理隔离线缆数量爆炸,机房混乱
用路由器隔开路由器端口少、价格高,而且每个网段都要占用一个物理口

这三种办法的共同问题是:隔离的粒度被"物理"绑死了。

VLAN 的思路:把隔离做成逻辑的

VLAN(Virtual LAN,虚拟局域网)的核心思想一句话:

具体做法:

每个端口分配一个 VLAN ID(比如 10、20、30)
同一个 VLAN 内的端口 → 属于同一个广播域
不同 VLAN 之间      → 二层完全隔离,互相看不到对方的广播

效果:

  • 不增加任何硬件,隔离粒度从"每台设备"降到"每个端口"
  • 部门调整时,只要在交换机上改一下端口的 VLAN 归属,不用动线
  • 转发表按VLAN或转发实例区分MAC学习范围;具体数据库组织取决于实现 —— 交换机在逻辑上变成了多台交换机

要跨越 VLAN 通信怎么办? 必须经过三层设备(路由器或三层交换机)。也就是说:常见设计让一个VLAN对应一个IP子网,但两者不是协议强制的一一关系。

Q 标签:4 个字节

问题来了:如果一根网线要从交换机连到另一台交换机,而这条线上要跑好几个 VLAN 的流量,接收方怎么知道每个帧属于哪个 VLAN?

答案是在帧里加一个标签。这就是 IEEE 802.1Q 标准定义的字段,一共 4 个字节:

字段长度作用
TPID(标签协议标识)2 字节固定值 0x8100,表示"这是一个带 VLAN 标签的帧"
PCP(优先级)3 位用于 QoS,标记这个帧的优先级别
DEI(丢弃资格)1 位拥塞时是否可以优先丢弃
VLAN ID12 位属于哪个 VLAN

标签插在哪里? 插在源 MAC 地址之后、类型字段之前:

不带标签:  目的 MAC | 源 MAC | 类型 | 数据 | FCS
带标签:    目的 MAC | 源 MAC | 802.1Q 标签 | 类型 | 数据 | FCS
                              └─ 多出来的 4 字节

一个直接的连带影响:帧变长了

因为多了 4 个字节:

不带标签带标签
最小MAC帧长64 字节64 字节(保留原填充再加标签也可能是68)
最大帧长1518 字节1522 字节

标签增加4字节控制信息,但可以占用原来的部分填充,最小长度不必随之增加4字节。 见IEEE 802.3as说明,第15、18页。这也是封装增加开销的例子 —— 和《全景与基础》模块讲的包头开销是同一回事,只是这次发生在链路层内部。交换机必须知道这个变化,否则会把带标签的合法帧当成超长帧丢掉。

VLAN ID 只有 12 位,所以理论上能表示 0~4095,其中 0 和 4095 保留,实际可用 4094 个 VLAN。

Access 口与 Trunk 口

这是 VLAN 配置里最实用的两个概念。

口类型接什么帧带不带标签说明
Access 口终端设备(电脑、打印机)不带交换机负责打标签/脱标签,终端完全感知不到 VLAN 存在
Trunk 口交换机与交换机之间带一条线承载多个 VLAN 的流量

Access端口通常用无标签帧服务单个VLAN中的终端。 这不是因为电脑一定不认识标签:不少网卡、驱动和操作系统支持VLAN插入/剥离及接口配置。Trunk可以连接服务器,native VLAN是否无标签需看配置。Intel Priority & VLAN

Trunk 口的意义:交换机 A 和交换机 B 之间往往只需要一根网线,就能同时承载办公区、服务器区、访客区三个 VLAN 的流量 —— 每个帧上的标签告诉对方"我属于哪个 VLAN"。

为什么本章没有实测

诚实地说明限制:

实测一:本机 WLAN 网卡没有 VLAN 相关属性。powershell
Get-NetAdapterAdvancedProperty -Name 'WLAN' | Where-Object { $_.DisplayName -match 'VLAN' }

返回空 —— 本机无线网卡不暴露 VLAN 配置项。这只能说明该WLAN接口未暴露相关设置,不能推广到以太网卡;以太网卡可有VLAN卸载和标签配置。

实测二:Hyper-V 虚拟交换机支持 VLAN,但管理模块不可用。

本机的 vEthernet (WSL) 是 Hyper-V 虚拟交换机上的一个端口,虚拟交换机是支持 VLAN 的。但查询它需要 Hyper-V 的 PowerShell 模块:

Get-VMSwitch      →  无法将"Get-VMSwitch"项识别为 cmdlet

这台机器上没装该模块,所以查不到虚拟交换机的 VLAN 配置。

结论:VLAN 的机制是清晰的标准(IEEE 802.1Q),但要真正观察它,你需要能登录一台支持 VLAN 的交换机。本教程不编造实验数据。

常见误解

误解一:"VLAN 是为了安全"

主要目的是隔离广播域、简化网络管理。VLAN 之间要互通必须经过三层设备,这带来了一定的安全副作用(二层看不到别的 VLAN 的广播),但 VLAN 不是安全机制 —— 存在 VLAN 跳变(VLAN hopping)攻击,而且三层设备上如果不做访问控制,VLAN 之间可以随便互通。

误解二:"VLAN 需要专门的硬件"

现代交换机(包括很多家用路由器的交换模块)基本都支持 802.1Q。企业级交换机支持得更完整(比如 QinQ 双层标签)。

误解三:"VLAN 标签会一直跟着帧走"

常见交换机互联Trunk使用标签,配置VLAN的服务器接口也可收发标签;native VLAN等流量可能无标签。帧从 Access 口发给终端之前,标签会被摘掉。所以终端设备通常完全不知道 VLAN 的存在。

误解四:"同一台交换机上的设备一定在同一网段"

不一定。同一台交换机可以承载多个 VLAN,每个 VLAN 是独立的广播域,通常对应不同的 IP 子网。 自己所在的口属于哪个 VLAN,才是决定你在哪个网段的因素之一 —— 这也是"为什么我插上网线却上不了网"的常见原因之一(端口 VLAN 配错了)。

本章小结

结论类型
VLAN 在一台物理交换机上划出多个逻辑交换机标准
同一 VLAN 内是一个广播域,不同 VLAN 二层隔离标准
跨 VLAN 通信必须经过三层设备标准
802.1Q 标签 4 字节,插在源 MAC 之后标准
VLAN ID 12 位,实际可用 4094 个标准
单Q标签帧最小64、基本最大1522字节;增加标签不等于最小帧必增4字节IEEE帧格式
常见Access无标签,Trunk承载多个VLAN;标签行为还取决于native VLAN及配置部署惯例
实测:本机 WLAN 网卡无 VLAN 属性,无法在本机观察 VLAN实测(反证)
实测:Hyper-V 管理模块不可用,查不到虚拟交换机的 VLAN 配置实测(反证)
本机 以太网 3 的 MTU 1200 与 VLAN 无关,属于隧道封装开销推断

自测题

6 题 · 先自己答,再展开对照

  1. 一栋楼有 300 台电脑接在交换机上。不划 VLAN 会有什么问题?
    所有 300 台设备处在同一个广播域里。 任何一台设备发广播(比如 ARP 请求),都会被打扰到——每台都要收下帧、处理、发现不是问自己、再丢掉,白白消耗 CPU。而且广播域越大,一旦发生广播风暴,波及范围越大、越容易瘫痪。
  2. VLAN 标签占几个字节?加在帧的什么位置?
    4 个字节,插在源 MAC 地址之后、类型字段之前。它的前 2 字节是固定值 0x8100(TPID),后 2 字节里包含 3 位优先级、1 位丢弃资格和 12 位 VLAN ID。
  3. 为什么 Access 口发出的帧不带标签?
    Access端口通常用无标签帧向终端提供单VLAN接入,这是部署约定。支持VLAN的终端也能收发带标签帧,不能说电脑全部不认识802.1Q。
  4. 同一台交换机上的两台电脑,能不能属于不同的 IP 子网?为什么?
    能。 VLAN 划分的是广播域,而 IP 子网划分的是三层网段,两者是不同层次的概念。实践中通常让"一个 VLAN 对应一个子网"(便于管理),但它们并不强制绑定 —— 完全可以在一个 VLAN 里跑多个子网,或者一个子网跨越多个 VLAN(虽然后者很少见、也很麻烦)。
  5. 带 802.1Q 标签的以太网帧,最小长度是多少?为什么不带标签时是 64?
    最小仍可为64字节:18字节带标签头+42字节数据/填充+4字节FCS。若在64字节帧上直接插标签且保留原填充,会成为68字节;不要混淆构造过程和协议最小值。
  6. VLAN 能代替防火墙吗?
    不能。 VLAN 提供的是二层隔离:不同 VLAN 的设备互相收不到对方的广播,也一般不能直接通信。但如果有一个三层设备(路由器/三层交换机)同时连着两个 VLAN,并且没有配置访问控制列表,那么两个 VLAN 之间是可以自由互通的。VLAN 是网络管理手段,不是安全边界。真正的安全需要防火墙规则和访问控制。

参考资料与适用范围

修订核对日期:2026-10-13。规则按所列协议与实现范围理解;文中的原始命令输出是历史观察,不表示本次重新实测。跨版本、代理/隧道及不同捕获位置需要另行核对。

正文源自 m5-05-VLAN.md · 共 10 节 · 6 道自测题