cdn协议

cdn

在之前,我们学习了DNS域名解析的全过程:

在没有 CDN 的情况下,用户向浏览器输入 www.web.com 这个域名,客户端访问本地 DNS 服务器的时候,如果本地 DNS 服务器有缓存,则返回网站的地址;如果没有,递归查询到网站的权威 DNS 服务器,这个权威 DNS 服务器是负责 web.com 的,它会返回网站的 IP 地址。本地 DNS 服务器缓存下 IP 地址,将 IP 地址返回,然后客户端直接访问这个 IP 地址,就访问到了这个网站。

然而有了 CDN 之后,情况发生了变化。在 web.com 这个权威 DNS 服务器上,会设置一个 CNAME 别名,指向另外一个域名 www.web.cdn.com,返回给本地 DNS 服务器。

当本地 DNS 服务器拿到这个新的域名时,需要继续解析这个新的域名。这个时候,再访问的就不是 web.com 的权威 DNS 服务器了,而是 web.cdn.com 的权威 DNS 服务器,这是 CDN 自己的权威 DNS 服务器。在这个服务器上,还是会设置一个 CNAME,指向另外一个域名,也即 CDN 网络的全局负载均衡器。

接下来,本地 DNS 服务器去请求 CDN 的全局负载均衡器解析域名,全局负载均衡器会为用户选择一台合适的缓存服务器提供服务,选择的依据包括:

根据用户 IP 地址,判断哪一台服务器距用户最近;

用户所处的运营商;

根据用户所请求的 URL 中携带的内容名称,判断哪一台服务器上有用户所需的内容;

查询各个服务器当前的负载情况,判断哪一台服务器尚有服务能力。

基于以上这些条件,进行综合分析之后,全局负载均衡器会返回一台缓存服务器的 IP 地址。

本地 DNS 服务器缓存这个 IP 地址,然后将 IP 返回给客户端,客户端去访问这个边缘节点,下载资源。缓存服务器响应用户请求,将用户所需内容传送到用户终端。如果这台缓存服务器上并没有用户想要的内容,那么这台服务器就要向它的上一级缓存服务器请求内容,直至追溯到网站的源服务器将内容拉到本地。

在上面我给出了一张图片,其中虚线部分是没有cdn的DNS域名解析情况,实线是有cdn的DNS域名解析情况

在没有cdn的情况下,我们需要线访问本地DNS服务器,还要逐层迭代,访问权威服务器、根服务器等,这就好比是我们现在要取快递,要先到菜鸟驿站问有没有,没有,告诉我们要去最上层找,所以我们去京东总公司,公司告诉我们去它旗下的一个地方的分公司去,我们去了,分公司又让我们去下一层的公司,这样很麻烦,很影响效率,我们可以在菜鸟驿站,打个电话直接获取到我快递的地址,不用再导出去跑,这就是加上了cdn的效果

1、客户端向本地DNS服务器发起请求,看看本地DNS服务器中是否有IP地址缓存

2、发现缓存中没有我域名对应的IP地址,所以递归去找权威DNS服务器

3、再这个权威DNS服务器上有我们所需的web.com所对应的IP地址,这个地址会设置一个别名,指向另一个域名www.web.cdn.com,这个域名会被返回给本地DNS服务器

4、本地DNS服务器为了解析这个域名,需要访问cdn权威DNS服务器

5、这个服务器上设置了一个cname,指向另一个域名,也就是cdn网络的全局负载均衡器

6、本地DNS服务器又拿着这个域名去找cdn全局负载均衡服务器

7、cdn全局均衡服务器会给本地DNS服务器一个缓存服务器的IP地址,选择的依据上面说过了

8、本地DNS服务器缓存这个IP地址,然后把这个IP地址传递给客户端

9、客户端去访问这个IP地址,先访问边缘节点,但是边缘节点缓存空间小,如果没有,去区域节点找,如果没有,去中心节点找,直到找到网站返回给客户端

三次请求

总的来说,本地cdn服务器总共发起了三次请求:

第一次是拿着客户端的域名去DNS权威服务器,得到这个域名的别名

第二次是拿着DNS权威服务器给的别名去访问cdn权威DNS服务器,得到cdn全局负载均衡器的别名

第三次是拿着cdn全局负载均衡器的别名去cdn全局负载均衡器找筛选最优的 CDN 边缘节点。

作用

这是 CDN 最核心的作用。

  • 没有 CDN 时,用户不管在哪个地区,都要直接连接源站服务器。如果用户在新疆,源站在上海,数据要跨越大半个中国传输,延迟高、加载慢(比如网页图片半天刷不出来,视频卡顿)。
  • 有了 CDN 后,源站会把内容(图片、视频、静态页面)提前缓存到分布在全国乃至全球的边缘节点 (比如新疆、四川、广东都有节点)。用户访问时,会被分配到离自己最近的节点,相当于 "就近取货",数据传输距离大幅缩短,网页、视频能秒开。
相关推荐
玉梅小洋19 小时前
Git 使用技巧——查看 Commit 修改文件的概要
git·github
一轮弯弯的明月1 天前
TCP传输大致过程、流量控制与拥塞控制
网络·tcp/ip·计算机网络·学习心得
矢志航天的阿洪1 天前
从GitHub到本地:Python IGRF库环境配置完全指南
开发语言·python·github
chunmiao30321 天前
了解github上,watch,fork,star代表啥
github
CoderJia程序员甲1 天前
GitHub 热榜项目 - 日榜(2026-01-30)
开源·大模型·llm·github·ai教程
Aliex_git1 天前
Claude Code 使用笔记(四)- GitHub Claude 审查助手
人工智能·笔记·学习·github·ai编程
MicrosoftReactor1 天前
技术速递|使用 GitHub Copilot SDK 构建智能体:自动化技术更新追踪实战指南
自动化·github·copilot
LeenixP1 天前
GitHub Copilot 调用第三方模型API
ai·github·copilot·ai编程·oai compatible
谢怜821 天前
电网计算机网络第六章应用层
网络·计算机网络
CS创新实验室1 天前
《计算机网络》深入学:拥塞控制
开发语言·计算机网络·php