📡 第二章 彻底理解L2交换机
📄 一句话概括

VLAN 在帧里加 4 个字节的标签,把一台物理交换机切成多台逻辑交换机。 它的第一价值不是安全,是「别把自己淹死」——广播域太大,终端处理不过来。

📝 本节和前面几节的关系

上一节讲「多条路」,这一节讲「分成几张网」。这是 L2 交换机最重要的一个功能。 这一节要算:可用 VLAN 数、标签带来的帧长变化、广播域大小的影响。

一、标签与可用编号

标签 4 个字节,插在源 MAC 后面,让帧从 1518 变成 1522。 VLAN ID 是 12 位,共 4096 个号。

0 表示「没打标签」、4095 保留,所以实际可用 4094 个。再加上 1002 到 1005 是历史保留, 常见设备只保证 1001 个可用。

二、Access 与 Trunk

Access 口:进去打标签、出来撕标签。接终端(终端不认识标签)。 Trunk 口:带标签透传多个 VLAN。接交换机。

这个「打/撕」的动作叫 PVID 处理,是理解 VLAN 的关键: 终端不知道自己属于哪个 VLAN,是端口替它决定的。

所以「把电脑插到错的端口,它就跑到别的网段了」——这是实践中最常见的一类「网络不通」, 而设备上一切正常。

三、广播域为什么必须划小

一个 /24 网段 254 台设备,每台每秒发 1 个 ARP,广播域里就是 254 个每秒。每台都要处理一遍。

4000 台在一个广播域里,每台每秒要处理 4000 个广播——CPU 光处理这个就没空了。

所以 VLAN 划小的第一目的是「性能」,安全是副产品。而且要注意: VLAN 之间隔离,同一 VLAN 内部照样是广播域。

四、动手 Demo:可用 VLAN 数与广播域大小的代价

这段先按「0 与 4095 不能用、1002 到 1005 保留」列出可用范围,再算 254、1000、 4000 台设备同在一个广播域时每台每秒要处理多少广播。

for a, b, c in ((u"0", u"不能", u"表示「没打标签」"),
                (u"2~1001", u"能用", u"标准范围"),
                (u"1002~1005", u"不能", u"令牌环与 FDDI 保留")):
    T([a, b, c], [0, 0, 0])

实跑输出:

--------------------------------------------------------------------
VLAN,一个标签 4 个字节,把一台交换机切成几台
--------------------------------------------------------------------
**VLAN 的思路很直白:在帧里加一个小标签,交换机按标签决定「这帧属于哪一张网」。**
同一台物理交换机,逻辑上变成多台互不相通的交换机。

**标签长 4 个字节,插在源 MAC 后面。**它让帧从 1518 变成 1522 字节。

  目的 MAC 6 + 源 MAC 6 + **标签 4** + 类型 2 + 数据 + FCS 4

**标签里的 VLAN ID 是 12 位,所以能编 4096 个号。**

  VLAN ID       能不能用         为什么
  ---------------------------------------------------------------
  0             不能             表示「没打标签」,优先级专用
  1             能用(默认)     多数设备默认 VLAN
  2~1001        能用             标准范围
  1002~1005     不能             令牌环与 FDDI 保留
  1006~4094     能用             扩展范围,部分老设备不认
  4095          不能             保留

**所以实际可用是 4094 个**(4096 减 0 和 4095)。
加上 1002~1005 是保留的,常见设备只保证 1001 个可用。

**两种端口角色,一定要分清**:

  角色          怎么处理帧                 接什么
  -------------------------------------------------------
  Access 口     进去打标签、出来撕标签     终端设备
  Trunk 口      带标签透传多个 VLAN        交换机之间

**这个「打标签/撕标签」的动作叫 PVID 处理**,是理解 VLAN 的关键:
终端不认识标签,所以 Access 口负责替它加上、替它去掉。**Trunk 口两边都认识标签,所以原样传。**

**算一下 VLAN 能省多少广播**:一个 /24 网段 254 台设备,每台每秒发 1 个 ARP,
广播域里就是 254 个每秒。

   254 台在同一广播域:每秒  254 个广播,每台都要处理一遍。
  1000 台在同一广播域:每秒 1000 个广播,每台都要处理一遍。
  4000 台在同一广播域:每秒 4000 个广播,每台都要处理一遍。

**4000 台在一个广播域里,每台每秒要处理 4000 个广播**——CPU 光处理这个就没空了。
这就是「VLAN 划小广播域」的实际意义,**不是为了安全,首先是为了别把自己淹死。**

**但 VLAN 不隔离广播**这件事要说清:VLAN **之间**隔离,同一 VLAN 内部照样是广播域。
**要跨 VLAN 通信必须过路由器或三层交换机。**

「1002 到 1005 不能」这一行经常被人忽略:很多设备恰恰是在 1002 开始出问题, 而文档上只说「支持 4094 个」。

广播那一组数字要看清楚:254 台时每秒 254 个广播还算温和,4000 台时每秒 4000 个就非常重了。 每个广播都要打断 CPU 一次。

还要注意「同一 VLAN 内部照样是广播域」:划了 VLAN 不等于划了广播域,只是把广播域切小了。 要彻底消除广播得靠三层隔离。

30 秒实验

  1. 在交换机上看有几个 VLAN。
  2. 查一个端口的 PVID 是多少。
  3. 抓包看有没有 0x8100 的帧。

常见误区

  1. 以为 VLAN 能替代防火墙。它只隔离广播,不控流量。
  2. VLAN 划得越多越好。管理成本会上去。
  3. 以为 Access 口不带标签所以不属于任何 VLAN。它属于 PVID 那个。
自测三问(点开对答案) 1. VLAN 标签几个字节,ID 几位? —— 4 个字节,ID 12 位,共 4096 个号。 2. 实际可用的 VLAN 有多少个? —— 4094 个,去掉 0 与 4095;常见设备只保证 1001 个。 3. Access 口与 Trunk 口的区别? —— Access 口进出打/撕标签接终端,Trunk 口带标签透传接交换机。

下一节:第六个功能是看流量——端口镜像。

相关笔记