VuePress 站点
首页
数学
计算机基础
Java后端
AI大模型
UI设计
首页
数学
计算机基础
Java后端
AI大模型
UI设计
  • 计算机基础
  • 计算机网络应用

    • 课程笔记:TCP三次握手建立连接
    • 课程笔记:TCP三次握手的必要性
    • 课程笔记:TCP协议缺陷与SYN Flood攻击
    • 课程笔记:TCP四次挥手释放连接
    • 课程笔记:TCP四次挥手释放连接的必要性
    • 课程笔记:TCP 报文段格式与 IP 分组
    • 课程笔记:HTTP/2 新特性——二进制分帧
    • 课程笔记:HTTP/2 新特性——多路复用
    • 课程笔记:HTTP/2 新特性——服务器推送(Server Push)
    • 课程笔记:HTTPS 简介与架构图
    • 课程笔记:HTTPS原理与传输层安全协议(TLS)
    • 课程笔记:HTTPS原理——对称加密算法
    • 课程笔记:HTTPS原理——非对称加密算法
    • 课程笔记:HTTPS 原理 —— 数字签名
    • 课程笔记:HTTPS 原理——证书与 CA
    • 课程笔记:完整的HTTPS协议通信流程
    • 课程笔记:HTTPS 协议的性能损耗
    • 课程笔记:TLS False Start 加速 HTTPS
    • 课程笔记:升级 HTTP 协议到 HTTP/2
    • 课程笔记:通过会话恢复加速 HTTPS
    • 课程笔记:OWASP 组织与十大 Web 安全漏洞
    • 课程笔记:XSS 跨站脚本攻击
    • 课程笔记:存储型XSS跨站脚本攻击
    • 课程笔记:XSS攻击窃取Cookie
    • 课程笔记:反射型XSS跨站脚本攻击
    • 课程笔记:DOM型XSS跨站脚本攻击
    • 课程笔记:植入 JS、HTML 代码攻击
    • 课程笔记:XSS攻击的防护策略
    • 课程笔记:XSS攻击的输入环节防护
    • 课程笔记:XSS 劫持 Cookie 的防护策略
    • 课程笔记:XSS 内容输出防护方案
    • 课程笔记:CSP 内容安全策略
    • 课程笔记:CSP 内容安全策略的应用方式
    • 课程笔记:CSRF 跨站请求伪造攻击原理
    • 课程笔记:CSRF 跨站点请求伪造攻击案例
    • 课程笔记:CSRF 跨站请求伪造防护方案
    • 课程笔记:OWASP CSRFTester 工具的原理与使用
    • 课程笔记:点击劫持攻击原理
    • 课程笔记:点击劫持防护方案
    • 课程笔记:URL 跳转漏洞原理与防护
    • 课程笔记:Session 认证与会话劫持
    • 课程笔记:Session固定与Session保持攻击
    • 课程笔记:注入攻击与 OWASP 靶机平台
    • 课程笔记:SQL盲注与ORM注入攻击及防护
    • 课程笔记:XML注入、代码注入、OS命令注入攻击
    • 课程笔记:文件上传漏洞与文件下载/目录浏览漏洞
    • 课程笔记:访问控制与权限访问漏洞
    • 课程笔记:DDoS 分布式拒绝服务攻击原理与防护
    • 课程笔记:CC(Challenge Collapsar)攻击与防护
    • 课程笔记:CDN 的工作原理
    • 课程笔记:CDN的网络架构和术语说明
    • 课程笔记:CDN应用场景与阿里云CDN
    • 课程笔记:如何使用阿里云CDN服务
    • 课程笔记:CDN 刷新与预热
    • 课程笔记:阿里云 CDN 回源配置
    • 课程笔记:CDN 缓存配置
    • 课程笔记:CDN 访问控制与性能优化
  • 计算机网网络

    • 📖 教材介绍与课程导言
    • 📖 1.1 信息时代的计算机网络
    • 📖 1.2 因特网概述
    • 📖 1.3 电路交换、分组交换和报文交换
    • 📖 1.4 计算机网络的定义和分类
    • 📖 1.5 计算机网络的性能指标(1)
    • 📖 1.5 计算机网络的性能指标(2)
    • 📖 1.6.1 常见的三种计算机网络体系结构
    • 📖 1.6.2 计算机网络体系结构分层的必要性
    • 📖 1.6.3 计算机网络体系结构分层思想举例
    • 📖 计算机网络体系结构中的专用术语
    • 📖 物理层概述
    • 📖 物理层下面的传输媒体
    • 📖 传输方式
    • 📖 编码与调制
    • 📖 2.5 信道的极限容量
    • 📖 2.6 信道复用技术
    • 📖 3.1 数据链路层概述
    • 📖 3.2 数据链路层的三个重要问题
    • 📖 3.2.1 封装成帧和透明传输
    • 📖 3.2.2 差错检测
    • 📖 3.2.3 (1) 可靠传输的相关基本概念
    • 📖 3.2.3 (2) 可靠传输的实现机制 - 停止-等待协议(SW)
    • 📖 3.2.3 (3) 可靠传输的实现机制 - 回退N帧协议(GBN)
    • 📖 3.2.3 (4) 可靠传输的实现机制 - 选择重传协议(SR)
    • 📖 3.3 点对点协议 PPP
    • 📖 3.4 共享式以太网
    • 📖 3.4.1 网络适配器和 MAC 地址
    • 📖 3.4.2 (1) CSMA/CD 协议的基本原理
    • 📖 3.4.2 (2) 共享式以太网的争用期、最小帧长和最大帧长
    • 📖 3.4.2 (3) 共享式以太网的退避算法和信道利用率
    • 📖 3.4.3 使用集线器的共享式以太网
    • 📖 3.4.4 在物理层扩展以太网
    • 📖 3.4.5 (1) 网桥的主要结构和基本工作原理
    • 📖 3.4.5 (2) 透明网桥的自学习和转发帧的过程以及生成树协议STP
    • 📖 3.5 交换式以太网
    • 📖 3.5.1 以太网交换机
    • 📖 3.5.2 共享式以太网和交换式以太网的对比
    • 📖 3.6 以太网的MAC帧格式
    • 📖 3.7.1 虚拟局域网 VLAN 概述
    • 📖 3.7.2 虚拟局域网 VLAN 的实现机制
    • 📖 3.8 以太网的发展
    • 📖 3.9.1 802.11 无线局域网的组成
    • 📖 3.9.2 802.11 无线局域网的物理层
    • 📖 3.9.3 (1) 802.11 无线局域网的数据链路层 —— 使用 CSMA/CA 协议(而不使用 CSMA/CD 协议)
    • 📖 CSMA/CA(载波监听多址接入/碰撞避免)协议的基本工作原理
    • 📖 802.11 无线局域网的 MAC 帧格式
    • 📖 网络层概述
    • 📖 网际协议 IP(网际协议)与异构网络互连
    • 📖 IPv4 地址及其编址方法——概述
    • 📖 IPv4 地址的分类编址方法
    • 📖 IPv4 地址的划分子网编址方法
    • 📖 IPv4 地址的无分类编址方法(CIDR)
    • 📖 IPv4 地址的应用规划
    • 📖 IPv4 地址与 MAC 地址
    • 📖 地址解析协议 ARP
    • 📖 IP 数据报的发送和转发流程
    • 📖 IPv4 数据报的首部格式
    • 📖 静态路由配置
    • 📖 因特网的路由选择协议概述
    • 📖 路由信息协议 RIP(路由信息协议)
    • 📖 开放最短路径优先 OSPF(开放最短路径优先)
    • 📖 边界网关协议 BGP(边界网关协议)
    • 📖 路由器的基本工作原理
    • 📖 网际控制报文协议 ICMP(网际控制报文协议)
    • 📖 虚拟专用网 VPN 和网络地址转换 NAT
    • 📖 IP 多播技术的相关基本概念
    • 📖 在局域网上进行硬件多播
    • 📖 在因特网上进行 IP 多播需要的两种协议
    • 📖 网际组管理协议 IGMP
    • 📖 多播路由选择协议
    • 📖 移动 IP 技术概述
    • 📖 IPv6 引进的主要变化
    • 📖 IPv6 数据报的基本首部和扩展首部
    • 📖 IPv6 地址
    • 📖 从 IPv4 向 IPv6 过渡
    • 📖 网际控制报文协议 ICMPv6
    • 📖 软件定义网络 SDN
    • 📖 运输层概述 — 进程间基于网络的通信
    • 📖 TCP/IP 体系结构运输层中的两个重要协议
    • 📖 运输层端口号、复用与分用的概念
    • 📖 UDP 和 TCP 的对比
    • 📖 TCP 报文段的首部格式
    • 📖 "三报文握手"建立 TCP 连接
    • 📖 "四报文挥手"释放 TCP 连接
    • 📖 TCP 的流量控制 (Flow Control)
    • 📖 TCP 的拥塞控制 (Congestion Control) 及与网际层拥塞控制的关系
    • 📖 TCP 可靠传输的实现
    • 📖 TCP 超时重传时间 (RTO) 的选择
    • 📖 TCP 的选择确认 (SACK)
    • 📖 6.1 应用层概述
    • 📖 6.2 客户—服务器方式和对等方式
    • 📖 6.3 动态主机配置协议 DHCP
    • 📖 6.4 域名系统 DNS
    • 📖 6.5 文件传送协议 FTP
    • 📖 电子邮件
    • 📖 万维网 WWW
    • 📖 网络安全概述
    • 📖 密码学相关基本概念
    • 📖 对称密钥密码体制
    • 📖 公钥密码体制
    • 📖 报文摘要和报文鉴别码
    • 📖 数字签名(digital signature)
    • 📖 实体鉴别
    • 📖 密钥分发
    • 📖 访问控制
    • 📖 网络体系结构各层采取的安全措施—物理层和数据链路层
    • 📖 网络体系结构各层采取的安全措施—网络层
    • 📖 网络体系结构各层采取的安全措施—运输层
    • 📖 网络体系结构各层采取的安全措施—应用层
    • 📖 防火墙访问控制与入侵检测系统
    • 📖 常见的网络攻击及其防范
    • 📖 定长子网划分和变长子网划分的二叉树解法

课程笔记:CDN 的工作原理

课程名称:计算机网络应用 核心摘要:本讲围绕 Web 应用加速技术——CDN(内容分发网络)展开。从 CDN 产生的两大动因(地域延迟、集中拥塞)入手,对比讲解无 CDN 场景下的 DNS 域名解析流程,详解 A / NS / CNAME 三类 DNS 记录类型的作用与区别,重点剖析引入 CDN 后借助 GSLB(全局负载均衡)与 SLB(本地负载均衡)实现的就近访问与 302 重定向回源机制。


一、 核心概念与原理

1.1 CDN 的产生背景

将所有微服务集中部署在某一中心机房(如阿里云北京机房)时,会面临两大问题:

  • 地域问题:中国地域辽阔,长距离访问导致网络延迟显著增大。北京/天津/河北用户访问快,而广东、海南、新疆等地用户延迟可能高达数秒,体验极差。
  • 集中访问问题:海量用户同时请求汇聚到中心机房所在网络主干道,造成大流量数据拥塞与服务器高并发压力。

欧洲国家地域小,对 CDN 需求不强;中国地大物博、人口众多,CDN 几乎是刚需。

1.2 CDN 的核心思想

CDN(Content Delivery Network,内容分发网络) 通过在用户与源站服务器之间增加一个中间层(即缓存层 / 边缘节点),将静态资源推送到距离用户最近的网络边缘节点,使用户就近获取内容。

  • 中间层 = 缓存层 = 边缘节点(三者指同一事物)
  • 短链路替代长链路,避免跨长距离 IP 路由,降低网络延迟
  • 大量用户访问分散到网络边缘,避免网络互联点资源拥挤

1.3 CDN 的关键组成

一个完整的 CDN 必须具备两个核心组件:

  1. 一套自有 DNS 域名解析系统:必须将域名解析到距离用户最近的边缘节点,而非直接解析回源站机房。
  2. 遍布各核心省市的边缘节点(缓存服务器):用于就近缓存并响应静态资源。

CDN 属于网络基础设施,通常由商业机构搭建运营,企业一般直接采购,不自建。

1.4 CDN 适用范围

  • 适合 CDN 缓存的内容:静态资源、视频流等只读内容。
  • 不适合 CDN 缓存的内容:POST 等数据交互、写入操作、核心数据访问——此类请求仍需回源站处理。

二、 技术细节与协议分析

2.1 DNS 域名解析系统

DNS(Domain Name System,域名解析系统) 核心作用:将域名解析为 IP 地址。

2.1.1 不使用 CDN 的访问流程

完整流程步骤如下:

  1. 客户端浏览器输入域名(如 edu.lagou.com)。
  2. 优先查询本机 hosts 文件与 hosts 缓存,查看是否存在域名→IP 的映射。
    • Windows 路径:C:\Windows\System32\drivers\etc\hosts
    • hosts 文件又称本地域名系统,仅对当前计算机生效。
    • hosts 中记录优先级最高,例如配置 127.0.0.1 www.taobao.com 后访问淘宝会指向本机。
  3. 若 hosts 中无记录,向本地 DNS(Local DNS)询问,通常由本地网络配置或 DHCP 分配。
  4. 若本地 DNS 仍无记录,依次进行迭代解析:根 DNS → 顶级 DNS → 权威 DNS。
    • 例:Google 的 8.8.8.8 即权威 DNS。
  5. 本地 DNS 最终将解析得到的 IP 地址返回客户端。
  6. 客户端通过 IP 向远程服务器发起 HTTP 请求,获取数据。
  7. 解析结果会缓存到本地,避免重复迭代解析,提升效率。

2.1.2 DNS 记录类型对比

主流 DNS 记录类型有三种:

记录类型全称含义作用记录值形式典型场景
A 记录Address(地址记录)描述目标域名到 IP 地址的映射关系将域名指向具体 IP 地址IP 地址(如 192.168.239.200)最常用、最简单的解析方式
NS 记录Name Server(名称服务器记录)描述目标域名与负责解析该域名的 DNS 之间的映射将子域名委托给其他 DNS 服务器解析域名形式(DNS 服务器域名)将域名解析工作委托给其他解析系统
CNAME 记录Canonical Name(别名记录)描述目标域名与别名之间的对应关系将域名指向另一个域名(别名)域名形式(别名)CDN 场景必备,启用 CDN 时使用

2.1.3 主机记录(域名前缀)常见写法

主机记录含义示例
www解析为 www.域名www.aliyun.com
@直接解析主域名aliyun.com
*泛解析,通配符匹配其他域名匹配所有未单独配置的子域名
mail解析邮箱服务器mail.域名
具体二级域名解析指定子域名edu.godisaman.cn

2.1.4 A 记录配置示例(阿里云控制台)

以域名 godisaman.cn 为例,添加 A 记录:

  • 主机记录:@(表示解析主域名 godisaman.cn)
  • 记录类型:A
  • 解析线路:默认(可选联通/电信/移动/教育网/境外/百度/必应等)
  • 记录值:101.201.239.200(目标服务器 IP)
  • TTL:10 分钟(解析超时时间,可调)
  • 默认端口 80

配置生效后,可将代码上传至 101.201.239.200 的 Nginx 服务器,启动服务,域名备案后即可访问。

2.1.5 CNAME 记录在 CDN 中的配置

以启用 CDN 为例,DNS 解析记录与 CDN 域名管理存在映射关系:

项目DNS 解析记录(CNAME)CDN 域名管理配置
目标域名cdn.godisaman.cn域名:cdn.godisaman.cn
记录值(别名)cdn.godisaman.cn.w.kunlunsl.comCNAME:cdn.godisaman.cn.w.kunlunsl.com

在 CDN 控制台"源站信息"中可查看 CNAME 与源站的对应关系。多个不同域名可通过 CNAME 指向同一别名,最终汇聚到同一服务器集群。

启用 CDN 至少需要两条记录:

  • A 记录:配置域名到具体 IP 的关系(指向源站)。
  • CNAME 记录:在开通 CDN 后启用,将域名指向 CDN 别名,由 CDN 的 DNS 系统接管解析。

2.2 使用 CDN 的访问流程

引入 CDN 后,对源站的请求会被导向距离用户最近的最优缓存节点,而非源站。整体流程如下(以访问 www.edu.lagou.com/index 为例):

  1. 用户发起请求:客户端请求 www.edu.lagou.com。
  2. 本地 DNS 迭代解析:
    • 先查本地缓存;若无记录,向根 DNS 发起请求。
  3. 根 DNS 响应:根据域名后缀(.com)返回负责解析 .com 的顶级 DNS IP 地址。
  4. 本地 DNS 向顶级 DNS 发送报文:顶级 DNS 根据前缀 lagou.com 返回对应的权威 DNS IP。
  5. 本地 DNS 向权威 DNS 查询:通过 edu.lagou.com 查找。
  6. 权威 DNS 命中 CNAME 记录:发现 edu.lagou.com 配置了 CNAME,指向别名(如 edu.lagou.cd.com 或 cdn.edu.lagou.com)。
  7. 别名再解析为 A 记录:别名对应 A 记录,解析得到的 IP 不是源站 IP,而是 GSLB(全局负载均衡)的 IP。
  8. 本地 DNS 向 GSLB 发送 DNS 报文。
  9. GSLB 调度决策:根据本地 DNS 的 IP 地址推算用户大致位置(如北京海淀区),综合考虑最优策略,筛选出距离用户较近的 SLB(本地负载均衡)。
  10. GSLB 返回 SLB 的 IP 地址:作为 DNS 查询的最终结果返回给客户端(注意:返回的是 SLB 地址,而非具体缓存节点地址)。
  11. 客户端向 SLB 发送请求:SLB 根据负载均衡策略(考虑子节点健康值、载荷情况)筛选最优缓存节点。
  12. SLB 返回 302 重定向:响应码 302(转发/跳转/重定向),并携带目标缓存服务器地址。
  13. 客户端按 302 地址请求目标缓存服务器。
  14. 缓存节点命中判断:
    • 缓存存在且未过期 → 直接返回缓存资源。
    • 缓存过期或不存在 → 回源:向源站(edu.lagou.com 对应服务器)拉取最新数据,更新缓存后再返回客户端。

核心差异:普通 DNS 请求最终拿到的是源站 IP;使用 CDN 后,在权威 DNS / 顶级 DNS 环节通过 NS 记录将解析委托给 GSLB,由 GSLB 返回 SLB(而非源站)IP,从而实现就近访问。


2.3 GSLB 与 SLB 架构对比

CDN 网络架构中存在两层负载均衡:

对比项GSLB(全局负载均衡)SLB(本地负载均衡)
全称Global Server Load BalanceServer Load Balance
定位全局性负载均衡,属核心系统/DNS 系统本地负载均衡
调度对象对各区域的**物理集群(SLB)**做全局负载均衡对**集群内物理主机(缓存节点)**做负载均衡
决策依据根据用户本地 DNS 的 IP 地址推算用户位置综合考虑子节点健康值、载荷情况
返回结果返回距离用户较近的 SLB 的 IP通过 302 重定向返回最优缓存节点地址
层级关系位于上层,统领各 SLB位于下层,每个 SLB 对应一个边缘节点集群

架构示意

                        GSLB(全局负载均衡)
                       /        |        \
                      /         |         \
              SLB(北京)     SLB(上海)    SLB(广州)
              /    \         /    \       /    \
          缓存1  缓存2   缓存1  缓存2  缓存1  缓存2
          (边缘) (边缘)  (边缘) (边缘) (边缘) (边缘)
                          |
                        源站
  • 每个核心城市/区域部署一组边缘节点(缓存服务器),至少两台以避免单点故障。
  • 每组边缘节点前部署一台 SLB,做区域内集群负载均衡。
  • 所有 SLB 之上部署 GSLB,做跨区域全局调度。

三、 实践应用与配置命令

3.1 本地 hosts 文件配置(Windows)

# 路径:C:\Windows\System32\drivers\etc\hosts
# 用 notepad++ 以管理员身份打开编辑
# 格式:IP地址  域名
127.0.0.1       localhost
127.0.0.1       www.taobao.com    # 本地劫持测试,访问淘宝会指向本机
101.201.239.200 godisaman.cn      # 将域名解析到指定服务器 IP

hosts 文件优先级最高,仅对当前计算机生效。

3.2 阿里云 DNS 解析记录配置

A 记录(指向 IP):

配置项示例值
主机记录@
记录类型A
解析线路默认
记录值101.201.239.200
TTL10 分钟

CNAME 记录(指向别名,CDN 启用):

配置项示例值
主机记录cdn
记录类型CNAME
解析线路默认
记录值cdn.godisaman.cn.w.kunlunsl.com
TTL10 分钟

启用 CDN 的操作流程:在阿里云控制台开通 CDN → 在 CDN 域名管理中添加域名并获取 CNAME 值 → 回到 DNS 解析为该域名添加 CNAME 记录指向该别名。

3.3 国内主流 CDN 服务商

  • 阿里云 CDN(老牌)
  • 网宿科技(新锐)

四、 重点与难点提示

4.1 必考知识点

  1. CDN 的两大产生动因:地域延迟问题 + 集中访问拥塞问题。
  2. DNS 三类记录类型(A / NS / CNAME)的含义、记录值形式与适用场景——必考表格对比。
  3. 不使用 CDN 的访问流程:hosts → 本地 DNS → 根 DNS → 顶级 DNS → 权威 DNS → 返回 IP → 发起 HTTP 请求。
  4. 使用 CDN 的访问流程:在权威 DNS 环节通过 CNAME/NS 记录委托给 GSLB,GSLB 调度到 SLB,SLB 通过 302 重定向到最优缓存节点。
  5. GSLB vs SLB 的层级关系与职责划分。

4.2 易错点

  • hosts 文件优先级最高,且仅对当前本机生效,不影响其他主机。
  • 使用 CDN 后解析得到的 IP 不是源站 IP,而是 GSLB 的 IP(进一步返回 SLB 的 IP)。
  • CNAME 记录是 CDN 的标志:开通 CDN 后必须由 A 记录切换/补充为 CNAME 记录。
  • CDN 仅缓存静态资源;POST 请求、写入操作、核心数据访问仍需回源。
  • 302 重定向发生在 SLB → 客户端环节,客户端据此再请求具体缓存节点。
  • 缓存节点判断:缓存存在且未过期才直接返回;过期或不存在需回源更新。

4.3 面试题提示

  • 简述 CDN 的工作原理。
  • A 记录、NS 记录、CNAME 记录的区别?CNAME 在 CDN 中起什么作用?
  • GSLB 与 SLB 的区别与协作关系?
  • 用户访问 CDN 缓存未命中时如何处理?(回源机制)
  • 为什么 CDN 必须有自有的 DNS 解析系统?

五、 课后疑问/遗留问题

  1. 迭代解析 vs 递归解析的区别与各自适用场景?本讲提及迭代解析,需在后续课程中系统对比。
  2. TTL 值的合理设置策略?过长导致解析更新慢,过短增加 DNS 查询负担,如何权衡?
  3. 缓存过期与回源策略:缓存过期时间的配置原则?回源时是否会阻塞用户请求?
  4. CDN 缓存预热与刷新机制如何实现?
  5. HTTPS 场景下 CDN 的证书配置与回源协议选择?
  6. 后续课程将进入基于阿里云 CDN 的实际配置与使用实操环节。
最近更新: 2026/6/23 17:18
Contributors: yangwenguang
Prev
课程笔记:CC(Challenge Collapsar)攻击与防护
Next
课程笔记:CDN的网络架构和术语说明