4 题型 - 虚拟局域网
Chinese-language Computer Science 408 note: 4 题型 - 虚拟局域网. Original source available where applicable.
On this page
This note is currently available in Chinese. The original wording, formulas and diagrams are preserved to avoid an unverified technical translation.
描述:VLAN 用逻辑分组划分广播域。同一 VLAN 内的主机可以进行二层单播和广播,不同 VLAN 之间必须经过三层转发。常考点包括 VLAN 成员判断、ARP 表项、Access/Trunk 端口以及 IEEE 802.1Q 标签处理。
4.1 VLAN 的核心作用
VLAN 是在二层交换网络中划分广播域的技术,不是重新铺设一个物理网络。
- 同一交换机上的不同端口可以属于不同 VLAN。
- 同一 VLAN 的主机可以连接在不同交换机上,只要交换机间链路能够承载该 VLAN。
- 同一 VLAN 内的站点可以直接进行二层单播和广播。
- 不同 VLAN 之间不能直接进行二层单播或广播。
- VLAN 间通信需要路由功能,例如多臂路由、单臂路由或三层交换机。
可以把 VLAN 理解为逻辑广播域:
VLAN1 内部:可直接通信
VLAN2 内部:可直接通信
VLAN3 内部:可直接通信
VLAN1、VLAN2、VLAN3 之间:不能直接通信,必须经过三层转发
4.2 VLAN 与 ARP
4.2.1 ARP 的基本过程
ARP 根据已知 IPv4 地址查询对应的 MAC 地址:
- 源主机广播 ARP 请求,目的 MAC 为
FF-FF-FF-FF-FF-FF。 - 拥有目标 IPv4 地址的设备通常单播返回 ARP 响应。
- 源主机缓存
<IPv4 地址, MAC 地址, 生存时间>映射。
ARP 只能在当前链路或广播域内使用,ARP 广播不会被普通路由器转发。
- 目的主机与源主机在同一 VLAN,且源主机根据子网掩码/路由表判定目的 IPv4 地址在本链路:源主机可直接 ARP 查询目的主机 MAC。
- 若路由表判定目的地址需经网关,源主机 ARP 查询的是本链路下一跳网关的 MAC,而非远端主机 MAC;若把异 VLAN 目的主机误配置成“同一 IP 子网”,源主机会尝试直接 ARP,但广播过不了 VLAN 边界,通常无法得到目的主机应答。同一 VLAN 与同一 IP 子网是两种不同条件,不能只凭 VLAN 成员关系断定 ARP 对象。
- 若通信路径中有 $n$ 个路由器,且这 $n+1$ 段均为使用 ARP 解析下一跳 MAC 的 IPv4 广播链路、各段相关 ARP 缓存均为空,则最多需要在 $n+1$ 段链路上分别进行 ARP 交互。点到点链路或使用其他邻居解析机制的链路不能机械套用该式。
一次 ARP 交互通常指“一次广播请求 + 一次单播响应”。
4.2.2 ARP 表与交换机 MAC 地址表
- 主机或三层接口维护 ARP 表,记录 IP 与 MAC 的对应关系。
- 普通二层交换机主要维护 MAC 地址表,记录 MAC 与交换端口的对应关系。
- 题目询问某主机的 ARP 表时,应先判断哪些设备能与该主机在同一 VLAN 内直接通信。
4.3 Access、Trunk 与 IEEE 802.1Q
4.3.1 Access 端口
- Access 端口通常连接终端主机,归属于一个 VLAN。
- 主机收发的通常是没有 VLAN 标签的普通以太网 MAC 帧。
- 交换机从 Access 端口收到无标签帧后,依据该端口的 PVID 把帧归入相应 VLAN。
- 从 Access 端口发送给主机时,交换机会去除 VLAN 标签。
4.3.2 Trunk 端口
- Trunk 端口通常用于交换机之间,或交换机与路由器之间互联。
- 一条 Trunk 链路可以承载多个 VLAN。
- Trunk 上通常使用 IEEE 802.1Q 标签区分帧属于哪个 VLAN。
- 按本题采用的 PVID 处理模型,从 Trunk 发出的帧既可能是无标签普通以太网帧,也可能是带标签的 802.1Q 帧。
题目给出的 Trunk 转发规则为:
| 待发送帧 | 处理 |
|---|---|
| 802.1Q 帧的 VID 等于出接口 PVID | 去除 VLAN 标签后转发 |
| 802.1Q 帧的 VID 不等于出接口 PVID | 保留 VLAN 标签直接转发 |
| Trunk 收到无标签帧 | 根据接口 PVID 插入标签,标签 VID 取 PVID |
具体设备对原生 VLAN、PVID 和无标签帧的处理可由厂商配置;做题时以题目明确给出的规则为准。
4.3.3 802.1Q 帧的变化
普通 Ethernet V2 帧结构:
| 目的 MAC | 源 MAC | 类型 | 数据载荷 | FCS |
|---|---|---|---|---|
| 6 B | 6 B | 2 B | 46-1500 B | 4 B |
最大帧长为:
$$ 6+6+2+1500+4=1518\ \mathrm{B} $$
802.1Q 在源 MAC 与类型字段之间插入 4 B VLAN 标签:
| 目的 MAC | 源 MAC | VLAN 标签 | 类型 | 数据载荷 | FCS |
|---|---|---|---|---|---|
| 6 B | 6 B | 4 B | 2 B | 42-1500 B | 4 B |
最大帧长相应变为:
$$ 1518+4=1522\ \mathrm{B} $$
802.1Q 标记帧的最小有效载荷可降为 42 B,使最小帧仍为 64 B;若在已有 46 B 载荷的最小普通帧上直接插入标签,得到的是 68 B 帧。原 PDF 图中把带标签帧载荷也固定标成 46–1500 B,只覆盖后一种情况,不能当作所有带标签帧的下限。可参照 Cisco 对带标签最小帧和填充长度的说明。
4.4 2024 年真题:H4 的 ARP 表
4.4.1 主机与 VLAN 对应关系
| 主机 | IPv4 地址 | MAC 地址 | VLAN |
|---|---|---|---|
| H1 | 192.168.3.91 |
00-3E-C2-39-12-B5 |
VLAN1 |
| H2 | 192.168.3.81 |
00-18-A2-3B-36-21 |
VLAN1 |
| H3 | 192.168.3.125 |
00-E5-78-4A-09-B2 |
VLAN1 |
| H4 | 192.168.3.12 |
00-35-6A-B1-4C-92 |
VLAN1 |
| H5 | 192.168.3.251 |
00-1A-39-5B-E4-45 |
VLAN2 |
| H6 | 192.168.3.129 |
00-08-6E-05-A7-82 |
VLAN3 |
| H7 | 192.168.3.190 |
00-51-48-C9-63-A3 |
VLAN3 |
题目问:下列哪一条 <IP 地址, MAC 地址, TTL> 映射不会出现在 H4 的 ARP 表中?
| 选项 | 表项对应主机 | 是否可能出现 |
|---|---|---|
| A | H2:192.168.3.81 / 00-18-A2-3B-36-21 |
可能,同属 VLAN1 |
| B | H1:192.168.3.91 / 00-3E-C2-39-12-B5 |
可能,同属 VLAN1 |
| C | H3:192.168.3.125 / 00-E5-78-4A-09-B2 |
可能,同属 VLAN1 |
| D | H6:192.168.3.129 / 00-08-6E-05-A7-82 |
不可能直接通过 ARP 获得,H6 属于 VLAN3 |
按题图的 VLAN 划分,H4 只可能与 VLAN1 内的 H1、H2、H3 直接二层通信。H6 与 H4 不在同一广播域,H4 的 ARP 请求到不了 H6;若配置了跨 VLAN 路由且目的地址需经网关,H4 通常解析本 VLAN 下一跳的 MAC,而不是直接取得 H6 的 MAC。本题未给子网掩码,不能仅凭这张图断言 H4 一定会向网关而非目标地址发起 ARP;但两种常规路由判断都不会让 H6 直接应答 H4 的广播。
答案:D。
4.5 模拟题:跨交换机 VLAN 与 Trunk
两台二层交换机 S1、S2 通过 S1 端口 4 与 S2 端口 1 相连。主机的 VLAN 关系为:
| VLAN | 主机 |
|---|---|
| VLAN1 | H1、H2、H3、H4 |
| VLAN2 | H5、H6 |
| VLAN3 | H7 |
判断四个选项:
A. H1 的 ARP 表中可能记录 H3 的 IP3/MAC3
H1 与 H3 虽连接不同交换机,但同属 VLAN1。若二者进行过通信且表项尚未超时,H1 可以缓存 H3 的 IP/MAC 映射。
A 正确。
B. 交换机间链路可能传普通帧,也可能传 802.1Q 帧
按照题设 Trunk/PVID 规则:VID 等于 Trunk PVID 的帧可去标签发送,VID 不同的帧保留标签。因此链路上两种帧都可能出现。
B 正确。
C. H4 可以收到 H2 发送的广播帧
H2、H4 同属 VLAN1,且 VLAN1 已通过 Trunk 跨越两台交换机,所以 H2 的 VLAN1 广播会到达 H4。
C 正确。
D. H5 与 H7 可以直接单播通信
H5 属于 VLAN2,H7 属于 VLAN3。不同 VLAN 不能直接进行二层单播,必须经三层转发。
D 错误,是本题答案。
4.6 解题步骤
- 根据端口划分、颜色框或 VLAN 标号,先写出“主机 - VLAN”对应表。
- 判断通信双方是否同属一个 VLAN;物理上是否接在同一交换机不是决定条件。
- ARP 表题先按子网掩码和路由表判定目标是否在本链路,再按 VLAN 判断 ARP 广播能否到达;经网关转发时解析本链路下一跳的 MAC。只有在题设有代理 ARP、静态表项等额外机制时才另作判断。
- 广播帧只在本 VLAN 内扩散;同 VLAN 可以跨交换机,前提是 Trunk 承载该 VLAN。
- 检查端口类型:Access 面向单个 VLAN 的终端,Trunk 承载多个 VLAN。
- 遇到 PVID/VID 时严格按题设判断出端口是去标签还是保留标签。
4.7 易错点
- VLAN 划分看逻辑成员关系,不能只看 IP 地址是否相似或主机是否连接同一交换机。
- 同一交换机上的主机可能属于不同 VLAN;同一 VLAN 的主机也可能分布在不同交换机。
- ARP 广播不能跨 VLAN;VLAN 间经路由通信且源主机有正确路由时,源主机通常解析本链路下一跳网关的 MAC。不能只看 VLAN 而忽略 IP 子网与路由表。
- 二层交换机的 MAC 地址表不是 ARP 表:前者是
MAC -> 端口,后者是IP -> MAC。 - Access 出方向通常发送无标签帧;Trunk 上是否保留标签还要比较 VID 与 PVID,并以题设规则为准。
- 802.1Q 标签长度是 4 B,插入位置在源 MAC 与类型字段之间,最大帧长由 1518 B 变为 1522 B。
- 不同 VLAN 之间的广播、单播都不能直接二层转发;跨 VLAN 单播需要路由。
相关知识
4.8 本节复盘
- VLAN 是逻辑广播域;同一 VLAN 可直接二层通信,不同 VLAN 需要三层转发。
- 同一 VLAN 可以跨越多台交换机,一条 Trunk 链路可以承载多个 VLAN。
- ARP 请求广播、响应通常单播,且只能在当前链路或 VLAN 内生效;是否直接查询目的主机还要看源主机的 IP 路由判断。
- “经过 $n$ 个路由器最多进行 $n+1$ 次 ARP”只适用于每段都使用 ARP 的 IPv4 广播链路且相关缓存均为空。
- 2024 年题中 H4 属于 VLAN1,H6 属于 VLAN3,所以 H6 的 IP/MAC 映射不会出现在 H4 的 ARP 表中,答案 D。
- 模拟题中 A、B、C 正确,H5 与 H7 属于不同 VLAN,不能直接单播,错误项为 D。
- Access 端口通常向主机发送无标签帧;Trunk 根据 VID/PVID 决定去标签或保留 802.1Q 标签。
- 802.1Q 插入 4 B 标签,使最大以太网帧由 1518 B 变为 1522 B。