Chapter 6-3:VLAN、MPLS、数据中心网络与 Web 请求全过程

Chapter 6-3:VLAN、MPLS、数据中心网络与 Web 请求全过程
agsdChapter 6-3:VLAN、MPLS、数据中心网络与 Web 请求全过程
引言:从简单局域网走向真实的大规模网络
前面的链路层内容主要讨论了一个相对简单的环境:主机通过以太网和交换机组成局域网,交换机根据 MAC 地址转发帧,ARP 则帮助发送方根据 IP 地址获得下一跳的 MAC 地址。
但真实网络远比一个普通局域网复杂。
随着设备数量、组织规模和业务类型不断增加,网络开始面临四类新的问题:
- 一个物理交换网络中,如何隔离不同部门、租户或安全区域?
- 仅按照目的 IP 地址转发,无法满足路径控制需求时怎么办?
- 数据中心内部有数万台服务器,如何组织拓扑并分配请求?
- 用户访问一个网页时,DHCP、ARP、DNS、TCP、HTTP 等协议如何连续配合?
这些问题分别对应四个主题:
1 | VLAN:组织和隔离大型局域网 |
本章不是若干独立技术的简单罗列,而是在回答一个逐步扩大的问题:
当网络从单个局域网扩展到企业网络、运营商网络和大型数据中心时,如何继续保持隔离性、可控性、可扩展性和端到端通信能力?
❗ 本节核心结论:
VLAN、MPLS 和数据中心网络分别从二层逻辑隔离、标签化路径控制和大规模服务架构三个角度扩展传统网络;一次 Web 访问则把这些底层机制与上层协议连接起来。
1. VLAN:在一套物理网络上建立多个逻辑局域网
VLAN 是 Virtual Local Area Network,即虚拟局域网。
它的核心思想是:
不改变或少改变物理布线,通过交换机配置,将同一套物理基础设施划分成多个相互隔离的逻辑局域网。
例如,一台交换机有 24 个端口,可以配置为:
1 | 端口 1—8:VLAN 10,计算机系 |
虽然这些主机可能连接在同一台物理交换机上,但在二层逻辑上,它们被划分到了不同的局域网中。
从通信效果看,一台支持 VLAN 的交换机可以表现得像多台相互独立的虚拟交换机。
flowchart LR
subgraph Physical[同一台物理交换机]
V10[VLAN 10<br/>计算机系]
V20[VLAN 20<br/>电子系]
V30[VLAN 30<br/>行政部门]
end
A[主机 A] --> V10
B[主机 B] --> V10
C[主机 C] --> V20
D[主机 D] --> V30
这张图的重点是:物理设备可以共享,但不同 VLAN 的二层通信范围彼此隔离。
1.1 为什么大型局域网需要 VLAN
如果所有设备都放在一个巨大的二层广播域中,会出现几个问题。
广播范围过大
ARP、DHCP 和某些未知单播帧会在广播域内传播。
设备越多,广播和泛洪流量影响的节点越多。即使一条广播消息只占很少带宽,当主机数量和协议活动不断增加时,整个局域网都可能受到影响。
组织结构与物理位置绑定
没有 VLAN 时,一个部门的主机往往需要接入特定交换机或特定物理网络。
如果计算机系的人员搬到另一栋楼,但仍希望使用计算机系的网络策略,就可能需要重新布线或调整大量网络设备。
VLAN 可以让逻辑归属与物理位置分离。
安全边界模糊
如果不同部门、访客设备和服务器都处于同一个二层网络中,它们会共享广播流量,也更容易直接发生链路层交互。
VLAN 可以提供基础的二层隔离,使不同用户组不能默认直接互通。
网络管理困难
网络管理员通常希望针对不同群体应用不同的:
- IP 地址规划;
- DHCP 配置;
- 访问控制策略;
- 带宽或优先级策略;
- 安全审计规则。
VLAN 为这些逻辑分组提供了清晰边界。
❗ VLAN 的主要价值不是节省几根网线,而是把逻辑组织关系从物理布线中解耦。
❗ 本节核心结论:
VLAN 通过逻辑划分缩小广播域、改善安全隔离,并允许用户或设备在物理位置变化后继续保留原有网络归属。
2. 基于端口的 VLAN
常见的 VLAN 实现方式是基于交换机端口划分。
管理员把每个端口配置为属于某个 VLAN。普通主机接入端口后,会自动被归入该端口对应的 VLAN。
例如:
| 交换机端口 | VLAN | 逻辑部门 |
|---|---|---|
| 1—8 | 10 | 计算机系 |
| 9—15 | 20 | 电子系 |
| 16—20 | 30 | 访客网络 |
当端口 1 上的主机发送广播帧时,交换机只会把它传播到 VLAN 10 的其他相关端口,而不会传播到 VLAN 20 或 VLAN 30。
因此,VLAN 改变了交换机内部的转发边界:
1 | 传统单一 LAN: |
2.1 VLAN 内部通信
同一 VLAN 中的主机可以通过交换机完成普通二层通信。
交换机会:
- 学习源 MAC 地址;
- 查询目的 MAC 地址;
- 在该 VLAN 范围内转发、过滤或泛洪。
交换表中的 MAC 地址学习也必须结合 VLAN 理解。两个不同 VLAN 中即使出现相同或相似的二层环境,其流量也不能被直接混合。
2.2 不同 VLAN 为什么不能直接二层通信
不同 VLAN 在逻辑上被视为不同的局域网。
因此,位于 VLAN 10 的主机不能仅凭交换机二层转发,直接向 VLAN 20 的主机发送帧。
这是 VLAN 隔离机制本身的结果,而不是设备故障。
不同 VLAN 之间要通信,必须经过网络层设备,例如:
- 路由器;
- 三层交换机;
- 集成了路由功能的交换设备。
通信过程类似于两个不同物理局域网之间的通信:
1 | VLAN 10 主机 |
2.3 VLAN 与安全性的边界
VLAN 能够提供二层隔离,但它不是完整的安全系统。
VLAN 可以阻止不同逻辑网络默认直接交换二层帧,但只要配置了 VLAN 间路由,不同 VLAN 仍可能通信。
是否允许某种通信,需要结合:
- 路由策略;
- ACL;
- 防火墙;
- 身份认证;
- 终端安全策略。
因此,更准确的说法是:
VLAN 提供网络分段和基础隔离,安全策略决定不同分段之间允许哪些流量通过。
❗ 本节核心结论:
同一 VLAN 内可以依靠二层交换通信;不同 VLAN 之间默认隔离,必须经过三层路由才能互通。
3. VLAN 与 IP 子网
VLAN 与 IP 子网经常一一对应,但它们不是同一个概念。
| 对比项 | VLAN | IP 子网 |
|---|---|---|
| 所属层次 | 链路层 | 网络层 |
| 标识方式 | VLAN ID | IP 前缀与子网掩码 |
| 主要作用 | 划分二层广播域 | 组织 IP 地址和路由边界 |
| 内部通信 | 二层交换 | 视为本地网络 |
| 跨边界通信 | 需要三层设备 | 需要路由 |
例如:
1 | VLAN 10 → 192.168.10.0/24 |
这种设计非常常见,因为它能让二层边界和三层边界保持一致:
- VLAN 10 中的主机使用
192.168.10.0/24; - VLAN 20 中的主机使用
192.168.20.0/24; - 两个网络之间通过路由器或三层交换机转发。
但从概念上说:
1 | VLAN 是二层逻辑网络 |
不能仅因为二者经常对应,就把它们当成同一种机制。
❗ VLAN 规定广播帧可以传播到哪里,IP 子网规定哪些 IP 地址被视为同一本地网络。
❗ 本节核心结论:
VLAN 和子网分别定义二层和三层边界。实际网络常让一个 VLAN 对应一个子网,以简化地址管理和路由设计。
4. 多交换机环境中的 VLAN
只有一台交换机时,VLAN 划分相对简单。问题在于,实际组织通常使用多台交换机,而且同一个 VLAN 的主机可能分布在不同交换机上。
例如:
1 | 交换机 S1 上有 VLAN 10 主机 |
如果两台交换机之间的链路还需要同时承载 VLAN 20、VLAN 30 等流量,就必须区分每个帧属于哪个 VLAN。
4.1 每个 VLAN 单独布线为什么不可扩展
一种简单方法是:
1 | VLAN 10 使用一条交换机间链路 |
但 VLAN 数量增加时,需要的物理端口和链路也线性增加。
假设有 20 个 VLAN,就可能需要 20 条独立的交换机间连接。这会导致:
- 端口消耗严重;
- 布线复杂;
- 管理成本高;
- 扩展困难。
因此,需要让一条链路同时承载多个 VLAN 的帧。
这就是 trunk 链路。
5. Access 端口、Trunk 端口与 802.1Q
5.1 Access 端口
Access 端口通常连接普通终端,例如:
- 个人电脑;
- 打印机;
- 普通服务器;
- 网络摄像头。
一个 access 端口通常归属于一个 VLAN。
普通终端发送和接收的以太网帧一般不需要携带 VLAN 标签。终端可以完全不知道 VLAN 的存在,交换机根据接入端口判断该帧属于哪个 VLAN。
5.2 Trunk 端口
Trunk 端口通常用于连接:
- 交换机与交换机;
- 交换机与路由器;
- 交换机与三层交换设备;
- 需要同时处理多个 VLAN 的服务器或虚拟化主机。
一条 trunk 链路可以同时承载多个 VLAN 的流量。
但这会产生一个问题:
接收方如何知道每个帧属于哪个 VLAN?
解决方法是在帧中加入 VLAN 标签。
5.3 802.1Q 标签
IEEE 802.1Q 定义了在以太网帧中插入 VLAN 标签的方式。
标签中包含的重要信息包括:
- Tag Protocol Identifier;
- 优先级等控制信息;
- VLAN ID。
VLAN ID 通常占 12 bit,因此可以表示大量 VLAN 编号。
简化后的帧结构可以表示为:
1 | 普通以太网帧: |
由于插入标签会改变帧内容,帧的差错检测值也需要重新计算。
5.4 标签如何完成跨交换机 VLAN 转发
假设 VLAN 10 的主机 A 位于交换机 S1,另一台 VLAN 10 主机 B 位于交换机 S2。
过程如下:
- A 发送普通以太网帧到 S1 的 access 端口。
- S1 根据输入端口判断该帧属于 VLAN 10。
- S1 将帧发送到 trunk 端口时,加入 VLAN 10 标签。
- S2 收到标记帧后读取 VLAN ID。
- S2 只在 VLAN 10 的范围内查询和转发。
- 帧从 B 所在的 access 端口发出时,标签通常被移除。
- B 收到普通以太网帧。
sequenceDiagram
participant A as VLAN 10 主机 A
participant S1 as 交换机 S1
participant S2 as 交换机 S2
participant B as VLAN 10 主机 B
A->>S1: 未标记以太网帧
S1->>S1: 根据 access 端口识别 VLAN 10
S1->>S2: 802.1Q 标记帧,VLAN ID=10
S2->>S2: 根据 VLAN ID 在 VLAN 10 内转发
S2->>B: 移除标签后的普通帧
5.5 Trunk 不是“更快的链路”
Trunk 的关键特征不是传输速率更高,而是:
一条逻辑或物理链路可以携带多个 VLAN 的帧,并利用标签区分其所属网络。
一条 trunk 链路可能速度很高,也可能速度普通。是否属于 trunk,取决于它是否承载并区分多个 VLAN,而不是单纯取决于带宽。
❗ 本节核心结论:
Access 端口通常承载一个 VLAN 并连接普通主机;trunk 端口利用 802.1Q 标签,在一条链路上同时传输多个 VLAN 的流量。
6. MPLS:在 IP 转发之外增加标签化路径
MPLS 是 Multi-Protocol Label Switching,即多协议标签交换。
它的基本思想是:
给进入 MPLS 网络的分组附加一个短标签,使中间设备能够根据标签而不是仅根据目的 IP 地址进行转发。
MPLS 标签通常位于链路层头部与 IP 头部之间。
1 | 链路层头部 | MPLS 标签 | IP 头部 | 传输层数据 |
因此,MPLS 有时被描述为位于传统第二层和第三层之间的机制。
6.1 普通 IP 转发
普通 IP 路由器通常根据目的 IP 地址进行最长前缀匹配。
对于同一个目的地址,分组一般按照由路由协议和转发表确定的路径转发。
简化表示为:
1 | 目的 IP |
这种机制通用、灵活,支撑了互联网的基本运行。
但它的路径选择通常以目的地址为核心,不能天然表达复杂的业务要求。
6.2 MPLS 标签转发
在 MPLS 网络中,入口设备可以根据分组类型、源地址、目的地址、业务类别或运营策略,为分组分配标签。
中间标签交换路由器主要执行:
1 | 输入标签 |
它不一定需要在每一跳重新进行完整的 IP 最长前缀匹配。
一个典型过程包括:
- 分组进入 MPLS 域。
- 入口路由器压入标签。
- 中间设备读取标签。
- 中间设备把旧标签替换为新标签。
- 分组沿标签交换路径前进。
- 出口设备移除标签。
- 分组恢复为普通 IP 转发。
这种标签操作通常称为:
- Push:压入标签;
- Swap:交换标签;
- Pop:弹出标签。
flowchart LR
IP[普通 IP 分组] -->|Push 标签| Ingress[MPLS 入口]
Ingress -->|Label 16| LSR1[标签交换路由器]
LSR1 -->|Swap: 16→25| LSR2[标签交换路由器]
LSR2 -->|Swap: 25→40| Egress[MPLS 出口]
Egress -->|Pop 标签| IP2[普通 IP 分组]
❗ MPLS 标签不会替代 IP 地址。IP 头仍然保留,标签只是为 MPLS 域内部提供另一种转发依据。
❗ 本节核心结论:
MPLS 在保留 IP 数据报的基础上增加标签,使运营商能够通过标签交换路径实现更可控的转发。
7. MPLS 为什么不仅仅是为了提高查表速度
MPLS 早期优势之一是固定长度标签查找可能比复杂的 IP 前缀匹配更高效。
但现代路由硬件已经能够高速执行 IP 查表。因此,理解 MPLS 时,更重要的是它提供的路径控制和业务能力。
7.1 普通 IP 路由的局限
假设网络中存在两条路径:
1 | 路径 A:较短,但已经拥塞 |
普通路由协议往往根据预设度量选择成本较低的路径。
如果大量流量都被导向路径 A,就可能出现:
- 一条链路拥塞;
- 另一条链路闲置;
- 总体资源利用率不高;
- 重要业务延迟增加。
此外,仅根据目的 IP 地址进行转发,很难表达:
- 同一目的地的语音流量走低延迟路径;
- 普通下载流量走成本较低路径;
- 高优先级客户使用独立逻辑路径;
- 某类业务必须避开特定链路。
7.2 MPLS 提供的灵活性
入口路由器可以把不同业务划分到不同的转发等价类,并分配不同标签。
因此,即使两个分组具有相同目的 IP,也可以因为业务类别、来源或策略不同而进入不同的标签交换路径。
| 对比项 | 普通 IP 转发 | MPLS 转发 |
|---|---|---|
| 核心查表依据 | 目的 IP 前缀 | MPLS 标签 |
| 路径主要受什么影响 | 路由协议和目的地址 | 标签映射和运营策略 |
| 同一目的地能否走不同路径 | 可以通过额外机制实现,但不天然 | 更容易按业务区分 |
| 典型用途 | 通用互联网路由 | 流量工程、VPN、QoS、快速恢复 |
❗ 本节核心结论:
MPLS 的现代价值主要不在于“标签比 IP 查得快”,而在于它让运营商能够按业务策略建立和管理路径。
8. MPLS 流量工程
流量工程关注的不只是分组能否到达目的地,而是:
如何让网络流量按照整体资源状况和业务需求分布到合适路径上。
MPLS Traffic Engineering,简称 MPLS-TE,可以让网络建立满足特定约束的标签交换路径。
8.1 最短路径不一定是最佳路径
在传统路由中,路径通常根据跳数、链路成本或其他度量计算。
但对于特定业务来说,最短路径不一定最好。
例如:
- 最短路径可能没有足够剩余带宽;
- 某条路径可能不支持所需服务等级;
- 某条链路可能风险较高;
- 某些业务需要经过或避开指定节点;
- 重要业务需要预留资源。
MPLS-TE 可以把这些条件纳入路径选择。
8.2 约束路径计算
MPLS-TE 的典型逻辑是:
- 收集链路带宽、状态和属性;
- 建立流量工程数据库;
- 根据业务约束计算可行路径;
- 建立标签交换路径;
- 必要时预留带宽或其他资源;
- 把流量映射到该路径。
路径计算可能使用 CSPF,即 Constraint-Based Shortest Path First。
它不是简单寻找数学意义上的最短路径,而是在满足约束的可用路径中进行选择。
8.3 LSP
LSP 是 Label Switched Path,即标签交换路径。
它可以理解为 MPLS 网络中预先建立或逻辑确定的一条标签转发通道。
分组进入 LSP 后,中间设备根据标签连续转发,不必让每个分组独立决定完全不同的路径。
8.4 流量工程的主要价值
MPLS-TE 可以支持:
- 绕开拥塞链路;
- 使用原本闲置的备用路径;
- 为关键业务分配带宽;
- 区分不同优先级;
- 建立主路径和备份路径;
- 在故障时快速切换。
高优先级业务还可能在资源紧张时抢占低优先级隧道资源。
这不意味着所有 MPLS 网络都必然提供绝对的端到端性能保证,而是说明运营商能够以比普通目的地址路由更明确的方式规划和控制资源。
❗ 流量工程的目标不是让每个分组都走最短路,而是让整个网络按照业务需求更合理地使用资源。
❗ 本节核心结论:
MPLS-TE 通过约束路径计算、标签交换路径和资源管理,让网络从“能到达”进一步发展为“沿合适路径到达”。
9. MPLS、QoS 与 VPN
MPLS 常与 QoS 和 VPN 结合使用。
9.1 QoS
QoS 是 Quality of Service,即服务质量。
不同业务对网络的需求不同:
| 业务 | 主要需求 |
|---|---|
| 实时语音 | 低延迟、低抖动 |
| 视频会议 | 较高带宽、低丢包 |
| 文件下载 | 吞吐量重要,对短期延迟不敏感 |
| 控制系统 | 高可靠性和稳定时延 |
MPLS 标签和业务分类可以帮助网络区分这些流量,并将其放入不同路径或优先级队列。
但 MPLS 标签本身不自动产生带宽和低延迟,仍然需要设备队列、资源规划和策略配置共同实现。
9.2 MPLS VPN
运营商可以利用 MPLS 构建不同客户之间逻辑隔离的 VPN。
多个企业可以共享同一套运营商物理基础设施,但在逻辑上拥有独立的路由和转发环境。
其基本价值是:
1 | 共享物理网络 |
这与 VLAN 有一定相似性:二者都在共享基础设施上提供逻辑隔离。
但作用范围和技术层次不同:
| 对比项 | VLAN | MPLS VPN |
|---|---|---|
| 常见范围 | 企业局域网、园区网 | 运营商网络、广域网 |
| 主要标识 | VLAN ID | MPLS 标签及相关 VPN 信息 |
| 主要作用 | 二层广播域划分 | 跨地域客户网络隔离与互联 |
| 常见设备 | 交换机 | 提供商边缘路由器、MPLS 路由器 |
❗ 本节核心结论:
MPLS 可以作为 QoS、流量工程和运营商 VPN 的承载基础,但最终服务能力仍依赖完整的路由、资源和策略体系。
10. 数据中心网络:连接大规模服务器集群
数据中心是集中部署计算、存储和网络资源的基础设施。
一个大型数据中心可能拥有数万甚至数十万台服务器,运行:
- 云计算服务;
- 搜索引擎;
- 电商平台;
- 短视频与流媒体;
- 分布式数据库;
- AI 训练与推理;
- 微服务系统。
数据中心网络必须连接这些服务器,并支持它们与外部用户及彼此之间进行高吞吐、低延迟通信。
10.1 为什么数据中心网络不同于普通局域网
普通办公室网络的主要通信模式可能是:
1 | 终端 → 互联网 |
而数据中心内部常存在大量服务器间通信:
1 | 服务器 → 服务器 |
因此,数据中心网络不仅要处理外部用户访问,还要处理大量东西向流量。
其主要挑战包括:
- 服务器数量巨大;
- 请求量变化剧烈;
- 内部通信频繁;
- 单点故障不可接受;
- 链路带宽容易成为瓶颈;
- 服务需要动态扩缩容;
- 网络必须支持多租户隔离。
11. 数据中心的分层结构
一种经典的数据中心网络结构包括:
1 | 服务器 |
11.1 服务器机架
服务器通常被集中安装在机架中。
一个机架可能包含多台服务器,每台服务器通过网线连接到机架顶部交换机。
11.2 ToR 交换机
ToR 是 Top of Rack,即机架顶部交换机。
它负责:
- 连接同一机架中的服务器;
- 汇聚机架内的上行流量;
- 将服务器连接到数据中心更高层网络。
可以把 ToR 理解为一个服务器机架的网络出口。
11.3 汇聚层和核心层
多个 ToR 交换机可能连接到更高层交换机。
高层交换机负责:
- 连接不同机架;
- 提供到数据中心其他区域的路径;
- 汇聚到边界网络的流量;
- 建立冗余连接。
11.4 边界路由器
边界路由器连接数据中心内部网络与外部互联网或其他专用网络。
它负责:
- 对外发布可达性;
- 接收外部请求;
- 执行边界路由策略;
- 与运营商网络连接。
flowchart TD
Internet[互联网] --> BR[边界路由器]
BR --> Core1[核心交换机 1]
BR --> Core2[核心交换机 2]
Core1 --> Agg1[汇聚交换机]
Core2 --> Agg1
Core1 --> Agg2[汇聚交换机]
Core2 --> Agg2
Agg1 --> ToR1[ToR 1]
Agg1 --> ToR2[ToR 2]
Agg2 --> ToR3[ToR 3]
Agg2 --> ToR4[ToR 4]
ToR1 --> Rack1[服务器机架]
ToR2 --> Rack2[服务器机架]
ToR3 --> Rack3[服务器机架]
ToR4 --> Rack4[服务器机架]
❗ 本节核心结论:
数据中心通常通过机架、ToR、汇聚或核心设备和边界路由器组成分层网络,使海量服务器能够被有组织地连接起来。
12. 数据中心为什么需要多路径
如果任意两台服务器之间只有一条路径,会产生两个严重问题。
12.1 吞吐量受限
大量流量集中在少数链路上时,这些链路会成为瓶颈,而其他区域可能仍有空闲容量。
多条路径可以让不同流量分散到不同链路,提高网络总吞吐量。
12.2 故障风险过高
交换机、端口、光模块和链路都可能故障。
如果通信只有唯一通路,任意单点故障都可能造成大范围服务中断。
多路径和冗余连接允许网络在部分组件失效后继续运行。
12.3 不相交路径
如果两条备用路径仍共享同一个关键交换机,那么该交换机故障时,两条路径都会同时中断。
因此,网络设计常希望提供尽量不相交的路径,使它们不共享关键链路或设备。
12.4 多路径不等于自动高效
物理上存在多条路径,并不意味着流量一定会被合理分配。
还需要:
- 路由或转发算法;
- 等价多路径机制;
- 流量调度;
- 拥塞控制;
- 故障检测;
- 路径切换策略。
❗ 多路径同时服务于性能和可靠性:既可以并行承载流量,也可以在故障时提供替代通道。
❗ 本节核心结论:
数据中心通过冗余互连和多路径避免单链路瓶颈与单点故障,但路径资源必须配合合适的调度和拥塞控制才能充分利用。
13. 负载均衡器:把请求交给合适的服务器
用户访问一个大型网站时,通常不会直接指定某一台具体服务器。
用户看到的是统一的域名或服务地址,但数据中心内部可能有成百上千台服务器共同提供服务。
负载均衡器负责:
- 接收或识别外部请求;
- 从多个后端服务器中选择目标;
- 将请求转交给被选中的服务器;
- 将响应返回给客户端;
- 对客户端隐藏内部服务器结构。
13.1 为什么需要负载均衡
如果所有请求都集中到一台服务器:
- 服务器可能过载;
- 单机故障会导致服务中断;
- 扩容能力有限;
- 其他服务器资源无法利用。
负载均衡器可以根据不同指标选择服务器,例如:
- 当前连接数;
- CPU 或内存负载;
- 响应时间;
- 会话一致性;
- 地理位置;
- 服务实例健康状态。
13.2 为什么称为应用层路由
网络层路由器主要根据 IP 地址选择下一跳。
负载均衡器可能进一步检查:
- 域名;
- URL;
- HTTP 头部;
- Cookie;
- 服务类型;
- 用户会话。
它可以根据应用层信息把不同请求交给不同后端,因此常被描述为应用层路由或四层、七层负载均衡设备。
13.3 负载均衡器隐藏了什么
对外部客户端而言,服务可能只有一个统一地址。
客户端通常不需要知道:
- 数据中心内有多少台服务器;
- 具体是哪台服务器处理请求;
- 服务器是否发生扩容或替换;
- 内部网络如何组织;
- 某台服务器故障后请求被迁移到哪里。
这种抽象使服务端可以在不改变客户端使用方式的前提下动态调整内部资源。
❗ 本节核心结论:
负载均衡器把统一服务入口映射到多个后端服务器,在提高吞吐量和可用性的同时,对客户端隐藏数据中心内部结构。
14. 一次 Web 页面请求为什么涉及多个协议
用户在浏览器中输入一个网址,看起来只是一个简单动作,但计算机必须依次解决多个问题:
1 | 我能使用什么 IP 地址? |
这些问题由不同协议负责。
| 阶段 | 协议 | 解决的问题 |
|---|---|---|
| 网络配置 | DHCP | 主机的 IP、网关和 DNS 是什么 |
| 本地链路寻址 | ARP | 下一跳的 MAC 地址是什么 |
| 域名解析 | DNS | 域名对应什么 IP 地址 |
| 可靠连接 | TCP | 如何建立可靠字节流 |
| 应用请求 | HTTP | 请求和返回什么 Web 内容 |
| 跨网络转发 | IP | 数据报沿哪些下一跳前进 |
| 每跳传输 | Ethernet/Wi-Fi | 帧如何在当前链路交付 |
因此,一次网页访问是协议栈分层协作的结果,而不是 HTTP 单独完成的。
15. 第一步:DHCP 获取网络配置
一台刚连接校园网络的笔记本,可能还不知道:
- 自己应使用什么 IP 地址;
- 子网掩码是什么;
- 默认网关地址是什么;
- DNS 服务器地址是什么。
DHCP 即 Dynamic Host Configuration Protocol,用于动态提供这些配置。
15.1 为什么需要广播
客户端刚接入网络时,可能既不知道 DHCP 服务器的位置,也没有可正常使用的 IP 地址。
因此,初始 DHCP 消息通常使用广播方式发送。
封装关系可以表示为:
1 | DHCP 消息 |
以太网目的 MAC 地址通常是:
1 | FF:FF:FF:FF:FF:FF |
15.2 DHCP 交付的信息
DHCP 服务器可以向客户端提供:
- 客户端 IP 地址;
- 子网掩码;
- 默认网关;
- DNS 服务器;
- 地址租期;
- 其他网络参数。
获得这些配置后,主机才能判断目标是否位于本地子网,并知道访问外部网络时应把分组交给哪个路由器。
❗ DHCP 不负责传输网页,也不负责域名解析;它首先让主机具备正常参与 IP 网络通信的基本配置。
❗ 本节核心结论:
DHCP 解决的是主机刚接入网络时的初始化问题,使主机获得自己的 IP 地址、网关和 DNS 等必要参数。
16. 第二步:ARP 获取第一跳路由器的 MAC 地址
假设客户端已经知道 DNS 服务器的 IP 地址,但 DNS 服务器位于外部网络。
客户端根据子网判断发现:
1 | DNS 服务器不在本地子网 |
因此,DNS 查询必须先交给默认网关。
IP 数据报中可以填写:
1 | 目的 IP = DNS 服务器 IP |
但以太网帧还需要填写当前一跳的目的 MAC 地址。
这一跳的接收方不是远端 DNS 服务器,而是默认网关。
因此,客户端通过 ARP 查询:
1 | 谁拥有默认网关的 IP 地址? |
路由器接口回复自己的 MAC 地址后,客户端把映射写入 ARP 缓存。
随后构造帧:
1 | 目的 IP:DNS 服务器 |
❗ 访问外部网络时,帧的目的 MAC 是第一跳路由器,而不是远端服务器。
❗ 本节核心结论:
ARP 将默认网关的 IP 地址解析为 MAC 地址,使客户端能够把外部流量的第一跳帧交给路由器。
17. 第三步:DNS 查询目标服务器 IP
浏览器使用的是域名,例如:
1 | www.google.com |
IP 网络不能直接根据域名转发,因此客户端需要通过 DNS 获取对应的 IP 地址。
DNS 查询的封装过程通常是:
1 | DNS 查询 |
在本地链路上:
1 | 目的 MAC = 默认网关 MAC |
在网络层:
1 | 目的 IP = DNS 服务器 IP |
交换机根据目的 MAC 将帧送到网关,路由器取出 IP 数据报,再根据目的 IP 逐跳转发到 DNS 服务器。
DNS 服务器返回域名对应的记录,客户端由此获得 Web 服务器的 IP 地址。
17.1 DNS 不返回网页
DNS 的任务只是名称解析。
它返回的是类似下面的信息:
1 | www.example.com → 某个 IP 地址 |
真正的网页内容要在后续 TCP 连接建立后,通过 HTTP 请求获得。
❗ 本节核心结论:
DNS 将人类易读的域名转换为网络层可以使用的 IP 地址,但它不建立 Web 连接,也不传输网页内容。
18. 第四步:TCP 建立可靠连接
浏览器获得服务器 IP 地址后,需要与服务器建立通信。
传统 HTTP/1.1 和 HTTP/2 通常运行在 TCP 之上,因此客户端首先建立 TCP 连接。
经典三次握手包括:
1 | 客户端 → 服务器:SYN |
三次握手的主要作用包括:
- 确认双方具备发送和接收能力;
- 同步初始序列号;
- 建立连接状态;
- 协商部分 TCP 参数。
每个 TCP 报文段都会继续被封装:
1 | TCP 报文段 |
当分组经过不同路由器时:
- IP 层继续面向服务器 IP;
- 每一跳的源 MAC 和目的 MAC 会变化;
- 路由器不断拆除旧帧并创建新帧。
❗ 本节核心结论:
TCP 三次握手在客户端和服务器之间建立端到端连接状态,而实际握手报文仍需依赖 IP 路由和逐跳链路层交付。
19. 第五步:HTTP 请求和响应
TCP 连接建立后,浏览器才能通过连接发送 HTTP 请求。
请求可能包含:
- 请求方法;
- 目标资源路径;
- 主机名;
- 浏览器支持的信息;
- Cookie;
- 其他请求头。
简化表示为:
1 | GET / HTTP/1.1 |
服务器收到请求后处理资源,并返回 HTTP 响应。
响应中可能包含:
- 状态码;
- 内容类型;
- 缓存信息;
- HTML;
- 图片、脚本或样式资源的引用。
浏览器收到 HTML 后,通常还会继续请求页面引用的其他资源,因此一次“打开网页”可能产生多次 DNS、TCP、TLS 或 HTTP 交互。
课件中的主线可以简化为:
sequenceDiagram
participant Client as 客户端
participant DHCP as DHCP 服务器
participant Gateway as 默认网关
participant DNS as DNS 服务器
participant Web as Web 服务器
Client->>DHCP: 获取 IP、网关和 DNS 配置
DHCP-->>Client: 返回网络参数
Client->>Gateway: ARP 查询网关 MAC
Gateway-->>Client: 返回网关 MAC
Client->>DNS: 查询域名对应 IP
DNS-->>Client: 返回 Web 服务器 IP
Client->>Web: TCP SYN
Web-->>Client: TCP SYN-ACK
Client->>Web: TCP ACK
Client->>Web: HTTP Request
Web-->>Client: HTTP Response
这张图省略了大量中间路由器和链路细节,但保留了协议调用顺序。
❗ 本节核心结论:
HTTP 负责表达应用层请求与响应,但它依赖 TCP 的连接、IP 的路由、ARP 的本地寻址和链路层的逐跳传输。
20. 完整封装关系
一次 HTTP 请求在客户端内部会逐层封装。
1 | HTTP 请求 |
接收端执行反向过程:
1 | 物理信号 |
每一层只处理自己负责的头部和语义:
| 层次 | 主要信息 |
|---|---|
| HTTP | 请求什么资源 |
| TCP | 属于哪个连接、如何可靠传输 |
| IP | 最终目标主机是谁 |
| Ethernet | 当前一跳交给哪个接口 |
| 物理层 | 如何表现为真实信号 |
❗ 分层协议的意义在于,每一层解决一种相对独立的问题,再通过封装共同完成通信。
❗ 本节核心结论:
一次 Web 请求会被逐层封装为 TCP 报文段、IP 数据报和链路层帧;接收端再逐层解封装恢复应用数据。
21. VLAN、MPLS 与数据中心网络的关系
VLAN、MPLS 和数据中心网络作用于不同范围,但都体现了同一种系统设计思想:
在共享的物理基础设施之上建立逻辑结构,从而提升隔离性、可控性和资源利用率。
| 技术 | 主要范围 | 核心问题 |
|---|---|---|
| VLAN | 局域网、园区网 | 如何划分二层广播域 |
| MPLS | 运营商网、广域网 | 如何按标签和业务策略控制路径 |
| 数据中心网络 | 大规模服务器集群 | 如何高效、可靠地连接和调度海量服务器 |
21.1 VLAN 的逻辑抽象
一台物理交换机可以被划分为多个逻辑局域网。
21.2 MPLS 的逻辑抽象
一套物理运营商网络可以承载多条逻辑标签路径和多个客户 VPN。
21.3 数据中心的逻辑抽象
大量物理服务器可以被负载均衡器包装成一个统一服务,底层多条物理路径则被组织成高可用网络。
这些机制都在减少上层对底层物理细节的依赖。
❗ 本节核心结论:
三类技术虽然工作层次和应用场景不同,但都通过逻辑化和抽象化,使共享网络基础设施能够服务不同组织、业务和规模需求。
22. 常见理解误区
22.1 VLAN 就是多买几台交换机
错误。
VLAN 是在共享物理交换基础设施上进行逻辑划分,其效果类似多个独立局域网,但不一定对应多台物理交换机。
22.2 接在同一台交换机上的设备必然可以直接通信
错误。
如果设备属于不同 VLAN,它们默认不能通过二层交换直接互通。
22.3 不同 VLAN 之间永远不能通信
错误。
不同 VLAN 可以通过路由器或三层交换机进行三层转发,是否允许通信由路由和安全策略决定。
22.4 Trunk 是速度更快的网线
错误。
Trunk 的关键是能够在一条链路上承载多个 VLAN,并使用标签区分帧所属的 VLAN。
22.5 所有主机发送的帧都必须携带 802.1Q 标签
错误。
普通主机连接的 access 端口上,帧通常不带标签。标签主要出现在需要区分多个 VLAN 的 trunk 链路上。
22.6 MPLS 标签取代了 IP 地址
错误。
MPLS 分组仍然保留 IP 头。标签只是 MPLS 域中的额外转发依据。
22.7 MPLS 只是更快的路由查表技术
不完整。
现代 MPLS 的重要价值包括流量工程、VPN、QoS 和快速故障恢复。
22.8 MPLS 路径必须是最短路径
错误。
流量工程可以让业务选择满足带宽、延迟和策略约束的路径,即使该路径不是最短路径。
22.9 数据中心中所有请求都由同一台服务器处理
错误。
大型服务通常由多个服务器共同提供,负载均衡器负责把请求分配到合适实例。
22.10 负载均衡器就是普通交换机
错误。
普通交换机主要根据 MAC 地址转发帧;负载均衡器可能根据传输层或应用层信息选择后端服务器。
22.11 DNS 返回网页内容
错误。
DNS 返回域名相关的地址信息,网页内容由后续 HTTP 请求获得。
22.12 访问远端服务器时,以太网目的 MAC 是远端服务器
错误。
以太网目的 MAC 只指向当前链路中的下一跳。访问外部服务器时,客户端第一帧的目的 MAC 通常是默认网关。
结论
本章把链路层和局域网知识扩展到了更复杂的网络环境。
VLAN 解决的是大型局域网中的逻辑组织问题。它通过端口划分和 802.1Q 标签,在共享交换基础设施上建立多个独立广播域。不同 VLAN 之间默认二层隔离,需要通过路由器或三层交换机通信。
MPLS 解决的是路径控制与业务承载问题。它在 IP 数据报之外增加标签,使运营商能够建立标签交换路径,并进一步支持流量工程、QoS、VPN 和快速故障恢复。
数据中心网络解决的是海量服务器的连接与服务调度问题。ToR 交换机、分层或多路径拓扑、边界路由器和负载均衡器共同支撑高吞吐、高可靠的大规模服务。
一次完整的 Web 页面访问则说明,现实通信从来不是某个单独协议完成的:
1 | DHCP 让主机获得网络配置 |
最终可以将本章压缩为四句话:
1 | VLAN 决定哪些设备属于同一个逻辑局域网。 |
❗ 最终核心结论:网络规模扩大后,单纯的以太网交换和目的 IP 路由已经不足以解决全部问题。VLAN 提供逻辑隔离,MPLS 提供路径控制,数据中心网络提供大规模资源组织,而分层协议协作最终把这些基础设施转化为用户可见的网络服务。







