局从交换机到 VLAN-局域网中的通信与隔离

从交换机到 VLAN:局域网中的通信与隔离

什么是局域网(LAN)和广播域?

在我们日常使用的网络环境中,局域网(LAN, Local Area Network) 是最基础、最常见的一种网络结构。它指的是在一个有限的物理或逻辑范围内(如办公室、实验室、教室或家庭)通过交换机、无线接入点、网线等方式,将多台设备互联形成的网络。在一个 LAN 中,设备之间可以直接通信,通常通过 MAC 地址 实现数据的发送和接收。

广播域是一个二层网络中的概念,它描述的是:当一个设备发出一条广播帧(比如 ARP 请求),哪些设备可以接收到这条广播。默认情况下:

  • 所有连接在同一个交换机、且在相同 VLAN 中的设备都处在同一个广播域;
  • 这意味着广播帧会在这些设备之间传播;
  • 当网络中设备数量多、广播频繁时,可能会导致广播风暴或性能下降

虽然广播域存在于 LAN 中,但两者并不等同:

  • 一个 LAN 通常是指一整个物理网络,比如一栋楼内的所有设备连接在一起;
  • 而一个广播域,只是这个 LAN 中的一个逻辑区域 —— 能互相接收广播的设备集合;
  • 一个 LAN 中可以只有一个广播域,也可以被划分成多个广播域(例如通过 VLAN);
  • 通过 VLAN 技术,我们可以在同一个物理 LAN 中创建多个逻辑隔离的广播域。

总的来说,局域网(LAN)是设备物理/逻辑连接的范围,而广播域是局域网中广播帧传播的范围。一个 LAN 可以包含一个或多个广播域,具体取决于是否使用了 VLAN 等技术进行划分。

一个简单的网络拓扑

我们先设定一个简单的网络场景:一个中心交换机Switch0,连接了两个边缘交换机Switch1和Switch2。Switch1 连接 PC0 和 PC1,Switch2 连接 PC2 和 PC3。四台 PC 的 IP 地址设为相同网段,所有设备都使用默认配置。此时,我们通过几台交换机将 4 台 PC 连接在一起,它们都属于同一个广播域、一个局域网。这意味着:

  • 所有设备可以直接相互通信;
  • 广播流量(如 ARP 请求)会在所有设备之间泛滥;
  • 文件共享、服务访问没有任何逻辑隔离。

下图捕捉了 PC0PC3 发送 ping 请求时的 ARP 通信过程。由于 PC0 只知道 PC3 的 IP 地址(例如 192.168.1.3),但不知道对应的 MAC 地址,它首先发出了一条 ARP Request(广播帧),询问:“谁是 192.168.1.3?请告诉我你的 MAC 地址。”这条广播被发送到整个广播域中的所有主机,包括 PC1PC2PC3。只有目标主机 PC3 会响应这条广播,返回自己的 MAC 地址。此后,PC0 就可以使用这个 MAC 地址进行后续的 ping 通信。

NO-VLAN

这在很多场景中是足够的,但在一些实际的公司或学校环境中,我们常常希望对设备做更细致的划分。比如公司中,一个部门(如市场部)的两台 PC,和另一个部门(如财务部)的两台 PC 虽然连接在同一个交换网络中,但数据应当隔离。在这种情况下,我们的目标就是:让其中两台 PC(比如 PC0 和 PC1)继续保持在同一个局域网中,而把另外两台逻辑上“隔离”出去,即使它们仍然连在同一个物理交换机或网络中。

尝试通过不同网段分离通信 —— 失败的隔离

在完成了基础拓扑搭建之后,我们希望尝试对网络进行“逻辑隔离”——让其中两台 PC(如 PC0 和 PC1)处于一个网络环境,而将另两台(PC2 和 PC3)分离出去。我们尝试通过配置不同的 IP 网段来实现这一目标。然而尝试从 PC0 ping PC1,观察网络通信过程时,捕捉到了一条 ARP 广播帧:PC0 在寻找 192.168.1.2 的 MAC 地址时,广播了 ARP 请求——而这个请求竟然也被 PC2 和 PC3 接收到了

VLAN-BAD-1

这说明:即使 IP 地址已经划分到不同网段,广播流量依然可以在所有 PC 之间传播!也就是说:它们依然处在同一个广播域中。这是因为,广播域是“二层(链路层)”的概念,而 IP 属于“三层(网络层)”。交换机是一种典型的二层设备(Layer 2 Switch),它并不理解 IP、子网掩码或默认网关这些三层信息,它只关心 MAC 地址 ↔︎ 端口号的关系,并据此转发以太网帧。

这就像不同“维度”之间的信息彼此隔绝: 二层设备对三层的“世界”一无所知。比如:

设备 IP地址 子网掩码 MAC地址 交换机端口
PC1 192.168.1.1 255.255.255.0 00:11:22:33:44:55 Fa0/1
PC2 10.0.0.1 255.0.0.0 66:77:88:99:AA:BB Fa0/2

从 IP 看,它们完全不在一个子网;但交换机收到帧时看到的只有:

“哦,Fa0/1 的 MAC 是 00:11...,Fa0/2 的 MAC 是 66:77...,我照端口转发就行了。”

它完全无视 IP,因此这两个 PC 仍然可以进行通信——前提是它们通过 ARP 获取到彼此的 MAC 地址。不过虽然交换机不看 IP,但 终端主机(PC)是工作在二层 + 三层的。当 PC0 发送 ping 到 192.168.2.1(PC2)时,会发生什么?

  1. PC0 判断目标不在自己子网;
  2. 它默认应该将数据发给默认网关(但你没配置路由器);
  3. 所以它不会去广播 ARP 请求,也就不会得到 PC2 的 MAC;
  4. 即使你“手动绑定” MAC,它也不会发送 ICMP 请求,因为 IP 不匹配,三层通信规则不允许。

所以即使交换机愿意转发,主机自身也会因为 IP 子网不同而“拒绝通信”。总结一下:

  • 广播域IP子网
  • 子网的划分不会影响二层广播的传播范围
  • 真正决定广播域的是:交换机上的 VLAN 配置

这也就引出了我们下一节要讨论的重点:

如果我们想真正隔离广播域、控制谁能广播到谁,就必须使用 VLAN 技术。


用 VLAN 初步实现隔离 —— PC0 与 PC1 同属一个逻辑网络

在前一部分中,我们已经认识到:仅仅通过 IP 子网来尝试“隔离”设备通信,并不能真正划分广播域。广播帧依然会在整个网络中传播,说明这些设备依然处于同一个广播域 / VLAN。那么,如何在不改变物理连接结构的前提下,将一部分设备逻辑上划分出去,实现真正的隔离? 这就要用到我们今天的主角:VLAN(虚拟局域网)

VLAN(Virtual LAN) 是一种在同一台物理交换机上,通过软件逻辑配置,将不同端口划分为多个“虚拟局域网”的技术。每个 VLAN 就像一个独立的子网,拥有自己的广播域,彼此之间默认不能通信。我们通过设置 VLAN,可以让:

  • 同一个交换机上的不同端口 隔离广播帧
  • 跨交换机的端口 属于同一个 VLAN,像是在“逻辑上连在一起”;
  • 网络更安全、广播更少、结构更清晰。

图中展示了在 Packet Tracer 中的交换机 Switch1 上的配置过程:

image-20250424194759962

  1. 左侧是 VLAN 配置界面
    • 我们创建了一个 VLAN,编号为 10,名字是 Group-1
    • VLAN 号(number) 是 VLAN 的唯一标识,通信是否互通以号为准;
    • VLAN 名称(name) 只是备注,不影响功能。
  2. 右侧是端口配置界面(以端口 FastEthernet0/2 为例):
    • 在 VLAN 字段中填写 10,表示该端口接入的是 VLAN 10;
    • 所连接的 PC 也就被划入 VLAN 10。

VLAN-1

此时,PC0 和 PC1 可以通信,ARP 请求也被限制在 VLAN 内,不再跨越。VLAN 就像逻辑上的“独立网络”,即使物理上在同一个交换机上,配置到不同 VLAN 的端口,也不再共享广播流量。

实现跨交换机的 VLAN —— Trunk 的作用与帧结构揭秘

在之前的章节中,我们已经掌握了如何在一台交换机内部使用 VLAN 将设备逻辑划分隔离。现在我们面临一个更进一步的挑战:

💡 如何在多个交换机之间“延伸” VLAN 的逻辑结构?

现在,我们的目标是:

设备 VLAN 编号 所在交换机
PC0 VLAN 10 Switch1
PC2 VLAN 10 Switch2
PC1 VLAN 20 Switch1
PC3 VLAN 20 Switch2

逻辑上,我们希望:

  • PC0 和 PC2 在一个 VLAN 中,能够互相通信
  • PC1 和 PC3 也处于另一个 VLAN 中,相互通信;
  • 但 PC0 无法和 PC1 通信,PC2 无法和 PC3 通信。

问题是:PC0 和 PC2 分别连接在不同交换机上,中间还经过一个中继交换机 Switch0。我们如何让 VLAN 的逻辑结构“穿越”物理交换机的边界呢?这里的关键就是把交换机之间相互连接的网口更改为 Trunk 模式。交换机的网口一般有 Access 和 Trunk 两种模式:

🔸 Access 模式是什么?

  • Access 模式端口是最常见的交换机端口类型;
  • 每个 Access 端口只能属于一个 VLAN
  • 它连接的是 终端设备(如 PC),不会处理或传送 VLAN 标签;
  • Access 端口接收的是纯净的以太网帧不包含 VLAN 信息

🔸 Trunk 模式是什么?

  • Trunk 模式端口用于交换机 ↔︎ 交换机之间的连接;
  • 它允许一个端口同时传输多个 VLAN 的流量
  • 每个以太网帧都会被打上一个 VLAN 标签(802.1Q Tag),标明它属于哪个 VLAN;
  • 对端交换机识别标签后,将帧交付给对应 VLAN 的端口

如下图所示,我们在 Packet Tracer 中将 Switch1 的端口 FastEthernet0/1 设置为 Trunk 模式,并允许 VLAN 1-1005 的数据通过:

image-20250424202211121

类似地,Switch0 与 Switch2 的互连口也应设置为 Trunk,同时在对应交换机上也创建 VLAN 10 和 VLAN 20,这样 VLAN 10 与 VLAN 20 的帧就能从 PC0 → Switch1 → Switch0 → Switch2 → PC2 成功传递。

VLAN-2

技术原理补充:802.1Q VLAN Tag 是什么?

当一个以太网帧通过 Trunk 端口传输时,交换机会将其帧结构中插入一段 VLAN 标签字段,称为 802.1Q Tag。帧结构如下:

1
2
3
┌────────────┬────────────┬────────┬──────┬────────────┬──────┐
│ 目标 MAC │ 源 MAC │ TPID │ Tag │ 数据载荷 │ CRC │
└────────────┴────────────┴────────┴──────┴────────────┴──────┘
  • TPID:固定值 0x8100,表示帧被打了 VLAN Tag;
  • Tag:包含 VLAN ID、优先级等;
  • 普通 PC 是不认识这些 VLAN 标签的;
  • 当帧从 Trunk 口流入交换机,被转发到 Access 端口时,交换机会自动 移除 VLAN Tag,发给终端设备。

这也解释了为什么终端设备的端口必须是 Access 模式:它们无法处理带 VLAN 标签的帧。通过 Access + Trunk 的配合配置,PC0 和 PC2 可以在 VLAN 10 内自由通信,PC1 和 PC3 则属于 VLAN 20,两个 VLAN 完全隔离,逻辑划分清晰、安全高效。

总结

  1. 局域网(LAN) 是在一个物理范围内,通过交换机互联的设备网络,通常共享一个广播域。
  2. 广播域 是指能接收到二层广播帧(如 ARP 请求)的设备集合,是 VLAN 划分的实际边界。
  3. IP 子网划分无法改变广播域的范围,因为广播是二层行为,而 IP 是三层概念,交换机并不理解 IP。
  4. 交换机的 MAC 表仅记录 MAC ↔︎ 端口映射,不包含 IP 信息;而 IP ↔︎ MAC 的映射由主机自己的 ARP 表维护。
  5. VLAN(虚拟局域网) 是在一个交换机或网络中,逻辑上划分广播域的技术,编号一致的端口属于同一 VLAN。
  6. VLAN Name 只是一个标签,真正起作用的是 VLAN Number(编号)。
  7. Access 模式端口连接终端设备,只能属于一个 VLAN,不带 VLAN 标签。
  8. Trunk 模式端口连接交换机或路由器,可以传递多个 VLAN 的流量,并在帧中加入 802.1Q 的 VLAN Tag。
  9. 802.1Q Tag 是 VLAN 标识的关键字段,终端设备无法识别这个标签,因此 Trunk 口不能直接连接 PC。
  10. 跨交换机通信需要 Trunk 端口,否则 VLAN 数据无法穿越交换机边界。
  11. 不同 VLAN 默认隔离通信,需借助三层设备(如路由器或三层交换机)才能互通。