CDN与DNS原理和应用
一. CDN
1. 概念:
Content Delivery Network,内容分发网络,使用户可以就近取得所需的内容,是一种提高用户访问速度的技术。
在大中型公司里面,CDN 的应用非常的普遍,大公司为了提供更稳定的 CDN 服务会选择自建 CDN,而大部分公司基于成本的考虑还是会选择专业的 CDN 厂商,网宿、阿里云、腾讯云、
蓝汛等等。
2. CDN加速原理和应用:
- 内容缓存
- 分布在全国各地的网络节点
- 多线路(联通、移动、电信)支持(减少跨网访问)
3. 适用范围
- 静态和更新频率低的内容更适用
- 数据流量大的产品更适用 (视频网站、直播网络等)
4. 如何接入CDN?
要搭建一个 CDN 系统需要考虑哪两点:
- 如何将用户的请求映射到 CDN 节点上;
- 如何根据用户的地理位置信息选择到比较近的节点;
如何做到第一点呢?这就需要依靠 DNS 来帮我们解决域名映射的问题了。
DNS(Domain Name System,域名系统)实际上就是一个存储域名和 IP 地址对应关系的分布式数据库。而域名解析的结果一般有两种,一种叫做A 记录
,返回的是域名对应的 IP 地址;另一种是CNAME 记录
,返回的是另一个域名,也就是说当前域名的解析要跳转到另一个域名的解析上。
比如你的公司的一级域名叫做 example.com,那么你可以给你的图片服务的域名定义为“img.example.com”,然后将这个域名的解析结果的 CNAME 配置到 CDN 提供的域名上,比如uclound 可能会提供一个域名是“80f21f91.cdn.ucloud.com.cn”这个域名。这样你的电商系统使用的图片地址可以是“http://img.example.com/1.jpg”。用户在请求这个地址时,DNS 服务器会将域名解析到 80f21f91.cdn.ucloud.com.cn 域名上,然后再将这个域名解析为 CDN 的节点 IP,
这样就可以得到 CDN 上面的资源数据了。
当你在浏览器输入一个域名,首先通过DNS解析出IP,然后这个IP通过网络打到目标服务器上。
同理,如果给某一个应用增加CDN服务,首先你需要给你当前的域名开通CDN服务,然后在你的域名解析设置后台添加一条CDN专用的DNS解析配置 ,这条解析配置会让域名被解析之后指向一个CDN网络专用的处理DNS请求的服务器。这个服务器会根据当前系统负载等情况给你返回一条合适的链路。
参考链接:https://www.bilibili.com/video/BV12T4y1P7Fh/?spm_id_from=333.337.search-card.all.click&vd_source=4c263677a216945c0d21ca65ee15a5f9
5. CDN回源
回源是指浏览器访问CDN集群上静态资源时,文件缓存过期,直接穿透CDN集群而直接访问源站机器的形式。
6. CDN缓存 - 阿里云设置缓存过期时间:
7. 揭秘CDN缓存加速访问网络原理
8. 总结:
1. 如何让用户的请求到达CDN节点
将用户的请求映射到 CDN 服务器上,是使用 CDN 时需要解决的一个核心的问题,而 CNAME 记录在 DNS 解析过程中可以充当一个中间代理层的角色,通过将你的域名解析到CDN提供的域名上,然后在根据CDN提供的域名映射到cdn服务器所在的IP上,这样就可以把将用户最初使用的域名代理到正确的 IP 地址上。如图:
2. 如何找到离用户最近的CDN节点
GSLB(Global Server Load Balance,全局负载均衡), 它的含义是对于部署在不同地域的服务器之间做负载均衡,下面可能管理了很多的本地负载均衡组件。它有两方面的作用:
一方面,它是一种负载均衡服务器,负载均衡,顾名思义嘛,指的是让流量平均分配使得下面管理的服务器的负载更平均;
另一方面,它还需要保证流量流经的服务器与流量源头在地缘上是比较接近的。
GSLB 可以通过多种策略实现,这里就先不一一展开。
有了 GSLB 之后,节点的解析过程变成了下图中的样子:
二. DNS
1. 概念:
Domain Name System,域名系统。将域名和IP地址做映射。
DNS本质是用于TCP/IP应用程序的数据库
,该数据库中记录了域名和IP的对应关系
,同时也是一种用于客户端和服务端通讯的应用层
的计算机网络协议。计算机要将域名解析成IP(或者将IP反解成域名),需要先去询问DNS服务器的数据库,查询得到域名和IP的对应关系,才能开始使用IP地址进行计算机通讯。
2. DNS的特点:
DNS服务器具有分布式
、阶层式
的特点。
全球有那么多的计算机,要让一台服务器记录所有的域名和IP的对应关系的数据库,那这台服务器肯定要炸了,因此人们想到了将这些庞大的数据库分布式
地存储于不同的计算机中,让他们共同提供查询域名和IP的功能,目前全球共有13台根服务器,其中1台主根服务器,12台辅助根服务器;
同时为了方便管理这些域名,人们规定域名的命名采用分层
的结构,即采用类似树状结构的命名方式。在这棵倒状树中,每个节点有一个最多63个字符的标识,树的最顶端的根用 . 来标识,从最底部的节点到最顶部的根节点的标识串联起来,不同节点的标识之间也用 . 来分割,这样的一组就表示一个完整的域名(FQDN),例如www.baidu.com.,不过人们通常将最后. 去掉,即www.baidu.com,这是不完整域名。
3. DNS理论知识
3.1 域名的层次结构
域名系统必须要保持唯一性。
为了达到唯一性的目的,因特网在命名的时候采用了层次结构的命名方法:
- 每一个域名(本文只讨论英文域名)都是一个标号序列(labels),用字母(A-Z,a-z,大小写等价)、数字(0-9)和连接符(-)组成
- 标号序列总长度不能超过255个字符,它由点号分割成一个个的标号(label)
- 每个标号应该在63个字符之内,每个标号都可以看成一个层次的域名。
- 级别最低的域名写在左边,级别最高的域名写在右边。
域名服务主要是基于UDP实现的,服务器的端口号为53。
关于域名的层次结构,如下图所示:
例如:
一个域名“www.baidu.com.”由4部分:第1部分“.”代表根服务器、第2部分“.com.”代表顶级域名服务器、第3部分“baidu.com.”代表域名所有者服务器、第4部分“www.baidu.com.”代表主机域名。
域名体系是一个分级体系,最高级是根服务器,最低级是本地服务器(如114.114.114.114),域名查询需要逐级递归查询。
说明:在第3部分中的域名所有者
也就是是我们平常所说的一级域名,而如果自己通过云解析设置一个zhidao.baidu.com,则这个就变成了二级域名。
4. DNS工作原理:
DNS的解析过程中最重要的两个概念是递归查询
和迭代查询
。
当你在浏览器输入www.baidu.com的时候,先查询浏览器的缓存中是否有域名和IP的映射关系,如果没有则查询本地hosts文件,然后查询客户端DNS缓存(如果存在客户端缓存的话),下一步是本地DNS服务器,检查本地DNS服务器的hosts文件和DNS缓存,如果还没有则下一步是ISP,ISP检查缓存还是没有;则ISP向根服务器发起询问请求,根服务器向ISP返回com.的IP地址,ISP向com.发起询问请求,com.向ISP返回baidu.com.的IP,则ISP再向baidu.com.发起询问,刚好baidu.com.有www.baidu.com.的IP,向ISP返回该IP地址,ISP得到www.baidu.com的IP后,将IP返回本地DNS服务器,本地DNS服务器在返回给客户端。这样完成整个流程。
DNS中的递归和迭代的重要区别是:递归是查询者变化,迭代是查询者不变。
5.DNS解析的过程:
当一个用户在地址栏输入www.taobao.com时,DNS解析有大致十个过程,如下:
浏览器先检查自身缓存中有没有被解析过的这个域名对应的ip地址,如果有,解析结束。同时域名被缓存的时间也可通过TTL属性来设置。(DNS中的TTL(Time To Live)表示一条域名解析记录在DNS服务器上的缓存时间)。
如果浏览器缓存中没有(专业点叫还没命中),浏览器会检查操作系统缓存中有没有对应的已解析过的结果。而操作系统也有一个域名解析的过程。在windows中可通过c盘里一个叫hosts的文件来设置,如果你在这里指定了一个域名对应的ip地址,那浏览器会首先使用这个ip地址.
但是这种操作系统级别的域名解析也会被很多黑客利用,通过修改你的hosts文件里的内容把特定的域名解析到他指定的ip地址上,造成所谓的域名劫持。所以在windows7中将hosts文件设置成了readonly,防止被恶意篡改。如果至此还没有命中域名,才会真正的请求本地域名服务器(LDNS)(也就是你的运营服务商)来解析这个域名,这台服务器一般在你的城市的某个角落,距离你不会很远,并且这台服务器的性能都很好,一般都会缓存域名解析结果,大约80%的域名解析到这里就完成了。
如果LDNS仍然没有命中,就直接跳到Root Server 域名服务器请求解析
根域名服务器返回给LDNS一个所查询域的主域名服务器(gTLD Server,国际顶尖域名服务器,如.com .cn .org等)地址。
此时LDNS再发送请求给上一步返回的gTLD
接受请求的gTLD查找并返回这个域名对应的Name Server的地址,这个Name Server就是网站注册的域名服务器。
Name Server根据映射关系表找到目标ip,返回给LDNS
LDNS缓存这个域名和对应的ip
LDNS把解析的结果返回给用户,用户根据TTL值缓存到本地系统缓存中,域名解析过程至此结束
参考链接:https://www.imooc.com/learn/917
参考链接:https://blog.csdn.net/m0_37812513/article/details/78775629
参考链接: 小册
CDN与DNS原理和应用相关推荐
- CDN的工作原理以及其中的一些技术-阿里
CDN的工作原理以及其中的一些技术-阿里 需求 CDN,全称Content Delivery Network,主要作用是为源站减少访问压力的同时,为客户端提供更快速的内容响应.除此之外,CDN还能对源 ...
- CDN架构以及原理分析
详见: http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp61 在不同地域的用户访问网站的响应速度存在差异,为了提高用户访问的响应速 ...
- CDN及其加速原理(详解)
在不同地域的用户访问网站的响应速度存在差异,为了提高用户访问的响应速度.优化现有Internet中信息的流动,需要在用户和服务器间加入中间层CDN. 使用户能以最快的速度,从最接近用户的地方获得所需的 ...
- 计算机基础(四)——DNS原理,让开发常忘的a记录,ns记录和cname都是什么
目录 一.为什么要熟悉DNS原理 二.dig追踪dns解析流程 1.开始从114.114.114.119服务器查询全球的根域名.root ns记录 服务器地址 2.最先返回的是jroot服务器,返回1 ...
- 动态服务器原理,什么叫cdn动态加速原理
什么叫cdn动态加速原理 发布时间:2020-04-09 17:51:10 来源:亿速云 阅读:5565 作者:三月 与其他CDN服务商相比,亿速云CDN的主要优势包括稳定快速.性价比高.简单易用.高 ...
- Web缓存机制(浏览器缓存 CDN缓存 DNS缓存)
在本片文章中,将阅读到的内容有: web缓存的类型 1.1数据库数据缓存 1.2 服务器端缓存 1.2.1 代理服务器缓存 1.2.2 CDN缓存 1.2.3 DNS缓存 1.3 浏览器端缓存 1.3 ...
- DNS原理及其解析过程 精彩剖析
DNS原理及其解析过程 精彩剖析 网络通讯大部分是基于TCP/IP的,而TCP/IP是基于IP地址的,所以计算机在网络上进行通讯时只能识别如"202.96.134.133"之类的I ...
- Alexa市场占有率分析:Compute、CDN、DNS
Alexa市场占有率分析:Compute.CDN.DNS 数据来源:http://blog.cloudharmony.com/ 时间:2015年3月11日 Alexa市场占有率のCompute Ale ...
- 超清晰的 DNS 原理入门指南 (资源)
DNS 是互联网核心协议之一.不管是上网浏览,还是编程开发,都需要了解一点它的知识. 一.DNS 简介 DNS (Domain Name System 的缩写)的作用非常简单,就是根据域名查出IP地址 ...
最新文章
- 让Maven项目使用Nexus作为远程仓库的settings.xml配置
- OrgChart 组织架构与PHP结合使用
- Oracle PL/SQL编程之基础
- 【错误记录】SeeMusic 一直卡在主界面无法使用 ( 删除 C:\Users\用户名称\AppData\LocalLow\Visual Music Design 应用信息 )
- 笔记:企业内部因素评价
- hash地址_深入浅出一致性Hash原理
- 【Shell教程】四----输入输出,条件判断,循环
- Firefox 终于对退格键“下手”了!
- 跨网页的新手引导_用户体验之如何设计一个完美的新手引导流程?(附带案例)...
- 面试:Spring Boot的优缺点
- c语言利用公式求sin(x)的近似值,用下列公式计算sin(x)的近似值
- linux管理员最大密码长度,【最新】电信光猫超级管理员账户密码获取方法
- 陶哲轩实分析 命题7.2.9 绝对收敛判别法
- 全国地址数据库下载 mysql版更新共668389条记录 精确到村
- 数据挖掘::实验一 WEKA分类
- 电脑摄像头一会好使一会不好使
- 科研——多问、多交流
- Python:folium地图标记icon分组展示
- bootstrap 图片上传框架
- 权利要求的撰写 分享
热门文章
- 安公式得得结果Java_Java基本类实验报告
- java飞机场模拟程序_java 飞机大战 小游戏源码
- 考虑器件匹配和寄生最小化的共质心电容器布局生成
- 金蝶云星空管理中心,初始化密码
- LNMP+HAproxy+Keepalived+NFS集群架构
- 华信咨询唐汝林:全球边缘云产业格局大观
- 系统思考:换个角度想问题
- 100个酒瓶(含盖),每8个盖子或3个空瓶可以换一瓶酒(含盖),请计算瓶盖瓶身独立去兑换,能兑换多少...
- wps里为什么没有华文楷体_为什么山洞里的蜥蜴没有眼睛?
- 二进制包(binary file)和源代码文件的区别