【计算机网络 | 数据链路层7:VLAN:一台交换机如何划分多个逻辑局域网?】

上一篇我们已经知道,交换机会从进入端口的源 MAC 地址中学习 MAC 地址表,并据此把已知单播帧定向转发到正确端口。这样一来,同一台交换机上的主机不必再像连接集线器时那样共享冲突域。

但还有一个问题:如果一台 48 端口交换机接入了公司所有部门,某台主机发出 ARP 请求等广播帧,交换机仍会把它泛洪到除入端口外的所有端口。MAC 地址表能缩小已知单播流量,却不能把广播流量按部门隔开。

这一篇仍位于 TCP/IP 五层模型的数据链路层。我们来理解 VLAN 如何在不额外铺设多套物理网络的前提下,把一台或多台交换机划分成多个彼此隔离的逻辑局域网。

一、交换机为什么还需要 VLAN?

先区分两个经常一起出现的概念:

  • 冲突域:多个设备可能因同时发送而发生碰撞的范围。
  • 广播域:一个二层广播帧能够传播到的范围。

在现代交换式以太网里,交换机的每个端口通常是独立冲突域;但在没有 VLAN 的普通二层交换网络中,所有端口仍属于同一个广播域。ARP 请求、DHCP 初始请求等广播帧会被交换机泛洪到这个广播域的各个端口。

网络规模变大后,这会带来三个直接问题:

  1. 广播流量泛滥:传统交换机网络中,广播帧(如ARP查询、DHCP请求)会穿透整个机构网络,既占用带宽又存在安全隐患。比如行政部门的财务数据广播可能被研发部门的Wireshark工具嗅探,导致商业机密泄露。

    而VLAN技术可在单台交换机内划分多个"虚拟广播域",如将行政部门、研发部门分别标记为VLAN 10和VLAN 20,广播帧仅在本VLAN内传播,隔离效果等同于用路由器划分物理子网,但无需额外设备。

  2. 交换机资源浪费:当机构拥有10个5-10人的小组时,传统方案需部署10台第一级交换机,设备成本高昂且管理复杂。

    VLAN支持在单台高密度交换机(如96端口)上实现逻辑隔离。一台核心交换机,通过VLAN将不同项目组划分为独立网络,既节省物理空间又简化布线。这种"一台交换机、多个虚拟网"的模式,实现"一网多用"且互不干扰。

  3. 用户管理僵化:传统网络中,员工跨部门移动需重新插拔网线,属于多部门的用户更需复杂配置。

    而VLAN通过"端口绑定+动态标签"实现逻辑迁移:管理员仅需在交换机配置中将用户端口从VLAN 10调整为VLAN 20,用户设备无需任何操作即可接入新部门网络。

VLAN 的目标不是让交换机"转发得更快",而是让交换机在二层转发时拥有一条额外规则:帧只应在同一个 VLAN 的端口之间传播。

二、VLAN 是什么:在逻辑上划分广播域

VLAN 是 Virtual Local Area Network 的缩写,中文通常译为虚拟局域网。它把一组端口或终端划入同一个逻辑局域网,而不要求它们物理上接在同一片连续的网线或同一台交换机上。

可以把一台交换机想象成一栋办公楼:物理端口像房间,交换机像走廊。没有 VLAN 时,广播相当于在整层楼广播通知;划分 VLAN 后,楼里出现了几道逻辑隔断,VLAN 10 的通知只会传到 VLAN 10,VLAN 20 的通知只会传到 VLAN 20。网线和交换机仍是原来的硬件,变化的是交换机对端口和帧的处理规则。

例如,把端口划分如下:

端口 连接设备 所属 VLAN
1、2、5 研发部电脑 VLAN 10
3、4、6 财务部电脑 VLAN 20

此时,端口 1 上的主机发出 ARP 广播,交换机只会把它转发到 VLAN 10 中的端口 2、5,而不会发往 VLAN 20 的端口 3、4、6。

因此可以先记住两句话:

一个 VLAN 就是一个独立的二层广播域。

同一 VLAN 内的主机可以由二层交换直接通信;不同 VLAN 的主机若要通信,需要经过三层转发。

这里的"独立"是指二层转发与广播范围独立,并不表示不同 VLAN 的主机永远无法通信。后文会看到,它们可以通过路由器或三层交换机通信。

三、交换机如何知道一帧属于哪个 VLAN?

最常用的方式是基于交换机端口划分 VLAN。管理员为交换机端口配置所属 VLAN,终端主机不需要自己在普通以太网帧里填写 VLAN 编号。

假设电脑 A 接在端口 1,端口 1 被配置为 VLAN 10;电脑 B 接在端口 3,端口 3 被配置为 VLAN 20。当 A 发出一个普通以太网帧时,交换机从端口 1 收到它,就能根据"入端口属于 VLAN 10"这一配置,把该帧归入 VLAN 10 的转发范围。

这也说明 VLAN 并不会替代 MAC 地址表:

  • VLAN 先回答:这帧属于哪个二层广播域?
  • MAC 地址表再回答:在这个 VLAN 内,目的 MAC 应从哪个端口出去?

实际设备中的 MAC 地址表通常会把 VLAN 维度也纳入表项。相同的 MAC 地址即使出现在不同 VLAN 中,也不会因此混为同一个转发目标。可以把查表过程理解为:先在正确的 VLAN 范围内,再查目的 MAC 地址。

四、802.1Q 标签:让 VLAN 信息跨交换机传递

仅在一台交换机内部,端口配置就足以判断 VLAN。但当同一个 VLAN 的成员分布在多台交换机上时,交换机之间传递的帧还必须携带"我属于哪个 VLAN"的信息。

IEEE 802.1Q 标准为此规定了 VLAN 标签。交换机可以在以太网帧的源 MAC 地址字段之后、类型字段之前插入一个 4 字节标签,使相邻交换机能够识别该帧所属的 VLAN。

text 复制代码
普通以太网帧:
目的 MAC | 源 MAC | 类型 | 数据 | FCS

带 802.1Q 标签的帧:
目的 MAC | 源 MAC | VLAN 标签(4 字节) | 类型 | 数据 | FCS

这 4 字节中,最值得掌握的是:

字段 长度 作用
TPID 16 比特 常见值为 0x8100,用于标识这是一个 802.1Q 标记帧
PCP 3 比特 优先级标记,可用于服务质量处理
DEI 1 比特 丢弃资格指示位,具体使用依设备与策略而定
VID 12 比特 VLAN 标识符,指出帧属于哪个 VLAN

VID 有 12 比特,数值范围为 0 到 4095;其中 0 和 4095 有保留用途,通常可配置的 VLAN 编号是 1 到 4094。这里不必把 VLAN ID 误解成 IP 子网号或 MAC 地址:它只是二层交换域中的一个逻辑编号。

普通电脑连接交换机时,网卡通常发送和接收不带 VLAN 标签的以太网帧。标签主要由交换机在内部处理,或在交换机之间的链路上传递。因此,给帧加上标签常称为打标签 ,移除标签则称为去标签

五、Access 与 Trunk:两类端口各做什么?

端口类型决定了交换机接收和发送 VLAN 帧的方式。学习阶段先掌握最常见的两类即可。

端口类型 常见连接对象 可承载 VLAN 数量 对终端一侧帧的典型表现
Access 端口 PC、打印机、普通服务器 一个 通常收发不带标签的普通以太网帧
Trunk 端口 另一台交换机、路由器、部分服务器或无线设备 多个 通常使用 802.1Q 标签区分不同 VLAN 的帧

1. Access 端口:把终端接入某一个 VLAN

Access 端口通常只属于一个 VLAN。它有一个端口 VLAN ID,常写作 PVID。当一个不带标签的帧从该端口进入时,交换机会把它归入 PVID 对应的 VLAN;在交换机内部,可以把这个过程理解为给帧补上了对应的 VLAN 身份。

当帧从 Access 端口发往普通电脑时,交换机一般会以不带标签的形式发送。这样,终端无需理解 VLAN 标签,也能正常使用网络。

例如,端口 1 和端口 2 都是 VLAN 10 的 Access 端口:A 从端口 1 发送广播帧后,交换机在 VLAN 10 内泛洪,并在端口 2 发出普通以太网帧;如果端口 3 是 VLAN 20 的 Access 端口,它不会收到这份广播。

2. Trunk 端口:一条链路承载多个 VLAN

若两台交换机之间有一根互连网线,可能需要同时承载 VLAN 10、VLAN 20 以及更多 VLAN 的流量。若为每个 VLAN 单独铺一根网线,既浪费端口又难以扩展。Trunk 端口就是为这个场景准备的。

在 Trunk 链路上,交换机通常为不同 VLAN 的帧保留或添加 802.1Q 标签:

text 复制代码
VLAN 10 的帧 --带 VID 10 标签--> 交换机 2
VLAN 20 的帧 --带 VID 20 标签--> 交换机 2

交换机 2 收到帧后依据 VID 判断其 VLAN,再只在对应 VLAN 的端口中转发。于是,分布在两台交换机上的 VLAN 10 成员仍像处于同一个二层局域网,而 VLAN 20 的帧不会混入其中。

不同厂商或具体配置可能对某个"原生 VLAN"的帧采用不打标签的处理方式;但这不改变核心原则:Trunk 必须让链路两端对 VLAN 身份的解释一致,才能正确区分多组流量。

六、把一次 VLAN 转发过程串起来

假设有两台交换机:

  • A 接在交换机 1 的 VLAN 10 Access 端口;
  • B 接在交换机 2 的 VLAN 10 Access 端口;
  • 两台交换机之间通过一条允许 VLAN 10 与 VLAN 20 通行的 Trunk 链路相连;
  • C 接在交换机 2 的 VLAN 20 Access 端口。

现在 A 发出一个 ARP 广播,请求查询某个 VLAN 10 内主机的 MAC 地址。过程如下:

  1. A 把不带标签的广播以太网帧发给交换机 1。
  2. 交换机 1 根据入端口的 PVID,将该帧视为 VLAN 10 的帧,并在 VLAN 10 范围内泛洪。
  3. 帧要经过 Trunk 到达交换机 2 时,链路上携带 VLAN 10 的 802.1Q 标识。
  4. 交换机 2 识别到 VID 为 VLAN 10,只向本机 VLAN 10 的端口泛洪;B 能收到该帧。
  5. C 位于 VLAN 20,不属于这次广播的转发范围,因此不会收到该帧。

这个例子揭示了 VLAN 最重要的效果:同一条物理 Trunk 链路可以复用多个逻辑局域网,但每一个广播帧仍被限制在自己的 VLAN 内。

七、不同 VLAN 的主机为什么不能直接通信?

设 A 在 VLAN 10,C 在 VLAN 20。A 想直接向 C 发送 IP 数据报时,首先会尝试通过 ARP 获得下一跳的 MAC 地址。可是 A 的 ARP 请求是广播帧,交换机不会把 VLAN 10 的广播转发到 VLAN 20;因此,A 不可能直接通过 ARP 得到 C 的 MAC 地址。

这不是 VLAN 的"故障",恰恰是隔离正在生效。不同 VLAN 在二层看来就是不同的逻辑网络,要互通必须交给网络层设备:

text 复制代码
VLAN 10 的主机 A
        |
   三层接口(路由器或三层交换机)
        |
VLAN 20 的主机 C

路由器或三层交换机为各 VLAN 提供三层接口和 IP 地址。A 要访问 C 时,会先把数据帧发给 VLAN 10 中的默认网关;该三层设备根据 IP 路由决定从 VLAN 20 的接口转发,再以 VLAN 20 的二层帧送往 C。这个过程称为跨 VLAN 路由VLAN 间路由

所以,VLAN 不是安全策略的全部,也不等于"不同 VLAN 绝对无法通信"。它提供二层隔离边界;是否允许跨 VLAN 通信、允许哪些业务端口通过,还要由三层路由与访问控制策略决定。

八、几个容易混淆的点

容易混淆的说法 更准确的理解
划分 VLAN 后,交换机不再转发广播 交换机仍会转发广播,但只在同一 VLAN 内泛洪
VLAN 就是一套新的物理网络 VLAN 是逻辑划分,可复用同一台交换机和同一条 Trunk 链路
VLAN ID 等于 IP 网段 二者常按网络设计一一对应,但分别属于二层与三层,没有必然的数值关系
同 VLAN 的设备一定插在同一台交换机上 同 VLAN 可跨多台交换机,只要中间链路正确承载该 VLAN
不同 VLAN 永远不能通信 它们不能直接二层交换,但可经路由器或三层交换机进行三层通信
VLAN 天然解决所有安全问题 VLAN 能隔离二层广播域;完整安全还需要访问控制、认证与合理的三层策略

九、总结

VLAN 把"同一台交换机上的所有端口都属于一个局域网"变成了可配置的规则。它通过端口归属和 802.1Q 标签,让交换机在转发帧时同时考虑 VLAN 与 MAC 地址:广播和未知单播不会越过 VLAN 边界,已知单播也只会在目标 VLAN 内查表转发。

把本文与上一篇连起来,可以得到一条完整的二层转发思路:交换机从源 MAC 学习端口位置,按目的 MAC 决定转发方式;而 VLAN 决定这次学习、查询和泛洪究竟在哪一个逻辑局域网内进行。再往下看,我们会把视角转向共享介质与无线网络,比较 CSMA/CD 和 CSMA/CA 如何应对多个设备争用同一传输信道的问题。

如果这篇文章对你有帮助,欢迎点赞、评论、关注、收藏。你们的支持是我前进的动力!

相关推荐
数据知道2 小时前
网络安全实战:服务指纹识别——Banner、协议探测、版本漏洞关联
网络·安全·web安全·网络安全
babe小鑫2 小时前
2026信管专业学习数据分析的价值
学习·数据挖掘·数据分析
无锡耐特森2 小时前
ModbusTCP转Profinet网关:恒压供水系统互联互通解决方案
网络
旗开得胜马到成功2 小时前
SK海力士SSD售后翻车:企业备份介质裸奔风险与中科热备技术选型拆解
运维·服务器·网络
编程圈子3 小时前
电机驱动开发学习25. 弱磁控制与全速域增益调度
驱动开发·学习
Be for thing3 小时前
【嵌入式成长3】STC89C51外部中断|中断原理、寄存器、中断服务函数
单片机·嵌入式硬件·学习
bitbrowser3 小时前
MXToolbox检测IP只红一个黑名单时,如何判断?
网络·网络协议·tcp/ip
网安蟹佬霸4 小时前
CTF Web方向解题全攻略:从信息收集到getshell(附实战payload与脚本)
android·前端·网络·安全·web安全·网络安全·网安
优化Henry4 小时前
学习笔记之爱立信站点指向证书执行
运维·服务器·网络·笔记·学习·信息与通信