一.什么是DNS
DNS(Domain Name System)全称为域名系统,是一个将域名和IP地址相互映射的分布式服务,他的作用就是把一个域名解析成为IP地址。我们平时输入的网址(或者域名)不能被计算机直接识别,必须通过DNS服务器将域名翻译成IP地址,才能进行完整的访问,这个过程就被称作DNS解析,是访问中必不可少的一个部分。
二.DNS的分布式架构
DNS本身是一个非常优秀的分布式架构。
位于最顶层的是根域名服务器(Root Name Server)。在2016年的统计数据中,全世界目前有13台IPv4根服务器,25台IPv6根服务器。
根域名服务器
根域名服务器存储的是一个目录,如果把所有的DNS请求都集中在少量的根域名服务器中,这个访问流量就会非常巨大,而且一旦发生故障很容易导致大面积瘫痪。而且从用户的体验角度来说,如果所有的DNS请求都走根服务器,不同的用户距离根服务器的距离不同,感受到的延迟也不一样,这样对用户来说不大友好。
所以,为了避免流量过大,避免地理分布等问题,根域名服务器只是一个目录,并不提供具体的数据。
域名分级和数据分区
根服务器会提供相应的目录索引规则。在域名的世界中,通过分级域名的策略建立索引,伴随着域名的分级策略,实际上是域名数据库的拆分。通过域名的分级,可以将数据库划分成一个个区域。
我们平时用的或者看到的.com .cn .net等,称为顶级域名。比如说www.baidu.com这个网址,com就是顶级域名,baidu是二级域名,www是三级域名。域名的分区是为了建立目录和索引,并对数据存储进行分区。
从上图的结构可以看到,DNS的存储设计是一个树状结构。叶子节点中才存放真是的映射关系,中间节点都是目录,存储分为三层。
1.顶部第一级是根DNS存储,存储的是顶级域的目录,被称作根DNS服务器;
2.第二级是顶级域存储, 存储的是二级域的目录,被称作顶级域DNS服务器(Top Level DNS,TLD);
3.最后一级是叶子结点,存储的是具体的DNS记录,也被称作权威DNS服务器。
三.DNS查询过程
1.用户在浏览器中输入要访问的域名;
2.浏览器向本地DNS查询域名对应的IP地址;
3.本地DNS向根服务器发起请求;
4.根服务器向本地服务器返回域名所属的顶级服务器;
5.顶级服务器将所属域名的权威服务器返回给本地DNS;
6.本地服务器向权威服务器发起请求,权威服务器将域名对应的IP地址返回给本地服务器;
7.本地服务器将IP地址返回给用户,完成整个解析过程。
四.什么是CDN
CDN的全称是Content Delivery Network,即内容分发网络。是一种利用分布式节点技术,在全球部署服务器,即时地将网站,应用视频,音频等静态或者动态资源内容分发到用户所在的最近节点,提高用户访问这些内容的速度和稳定性,降低网络拥塞和延迟,同时也能减轻源站的压力。提升网络或应用的可用性和安全性。
CDN的基本原理是将源站的内容分发到离用户最近的节点上进行缓存,并通过智能路由,负载均衡等技术来保证用户能够快速,稳定地访问到所需资源。CDN将源站与用户之间的网络距离传输缩短,通过多节点并行传输,降低了网络传输的延迟和带宽的消耗。
五.CDN的回源是如何工作的
CDN的回源指的是当用户访问某一个URL的时候,若是被解析到的那个CDN节点没有缓存响应的内容或者是缓存的内容已经到期,就会回源站去获取。如果没有人访问,那个CDN节点就不会主动去源站拿的。
例子:比如源站在xxxx.com中发布静态资源,然后在CDN管理后台配置了这个源站。在使用CDN时,服务方会提供另一个域名,假如叫作ssss.com。然后配置将xxxx.com用CNAME记录指向CDN的智能DNS,如果用户要下载ssss.com/a.jpg,CDN的智能DNS会帮助用户选择一个最优的IP地址(最优的CDN节点),如果在这个CDN节点中没有a.jpg,或者源站内容有更新的时候,CDN就会到xxxx.com源站中去下载,缓存到CDN节点,然后再返回给用户。
CDN回源有三种情况:1.CDN节点没有对应的资源时主动到源站获取资源;
2.缓存失效的时候,CDN节点主动到源站获取资源;
3.CDN管理后台或者使用开发接口的时候主动刷新就会触发回源。