CDN与DNS原理和应用

一. CDN

1. 概念:

  • Content Delivery Network,内容分发网络,使用户可以就近取得所需的内容,是一种提高用户访问速度的技术。
  • CDN = 更智能的镜子(并不是对整站做全部的备份,而只是做缓存) + 缓存 + 流量导流(如果没有CDN只能去一个站点获取资源,如果有了CDN可以从多个地方获取资源,实现了流量的导流)

2. CDN加速原理和应用:

  1. 内容缓存
  2. 分布在全国各地的网络节点
  3. 多线路(联通、移动、电信)支持(减少跨网访问)

适用范围

  • 静态和更新频率低的内容更适用
  • 数据流量大的产品更适用 (视频网站、直播网络等)

二. 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,这是不完整域名。
CDN与DNS原理和应用_第1张图片

3. DNS理论知识

3.1 域名的层次结构

域名系统必须要保持唯一性。

为了达到唯一性的目的,因特网在命名的时候采用了层次结构的命名方法:

  1. 每一个域名(本文只讨论英文域名)都是一个标号序列(labels),用字母(A-Z,a-z,大小写等价)、数字(0-9)和连接符(-)组成
  2. 标号序列总长度不能超过255个字符,它由点号分割成一个个的标号(label)
  3. 每个标号应该在63个字符之内,每个标号都可以看成一个层次的域名。
  4. 级别最低的域名写在左边,级别最高的域名写在右边。

域名服务主要是基于UDP实现的,服务器的端口号为53。

关于域名的层次结构,如下图所示:

CDN与DNS原理和应用_第2张图片

例如:
一个域名“www.baidu.com.”由4部分:第1部分“.”代表根服务器、第2部分“.com.”代表顶级域名服务器、第3部分“baidu.com.”代表域名所有者服务器、第4部分“www.baidu.com.”代表主机域名。
域名体系是一个分级体系,最高级是根服务器,最低级是本地服务器(如114.114.114.114),域名查询需要逐级递归查询。

说明:在第3部分中的域名所有者也就是是我们平常所说的一级域名,而如果自己通过云解析设置一个zhidao.baidu.com,则这个就变成了二级域名。

4. DNS工作原理:

CDN与DNS原理和应用_第3张图片
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解析的过程:

CDN与DNS原理和应用_第4张图片
当一个用户在地址栏输入www.taobao.com时,DNS解析有大致十个过程,如下:

  1. 浏览器先检查自身缓存中有没有被解析过的这个域名对应的ip地址,如果有,解析结束。同时域名被缓存的时间也可通过TTL属性来设置。(DNS中的TTL(Time To Live)表示一条域名解析记录在DNS服务器上的缓存时间)。

  2. 如果浏览器缓存中没有(专业点叫还没命中),浏览器会检查操作系统缓存中有没有对应的已解析过的结果。而操作系统也有一个域名解析的过程。在windows中可通过c盘里一个叫hosts的文件来设置,如果你在这里指定了一个域名对应的ip地址,那浏览器会首先使用这个ip地址.
    CDN与DNS原理和应用_第5张图片
    但是这种操作系统级别的域名解析也会被很多黑客利用,通过修改你的hosts文件里的内容把特定的域名解析到他指定的ip地址上,造成所谓的域名劫持。所以在windows7中将hosts文件设置成了readonly,防止被恶意篡改。

  3. 如果至此还没有命中域名,才会真正的请求本地域名服务器(LDNS)(也就是你的运营服务商)来解析这个域名,这台服务器一般在你的城市的某个角落,距离你不会很远,并且这台服务器的性能都很好,一般都会缓存域名解析结果,大约80%的域名解析到这里就完成了。

  4. 如果LDNS仍然没有命中,就直接跳到Root Server 域名服务器请求解析

  5. 根域名服务器返回给LDNS一个所查询域的主域名服务器(gTLD Server,国际顶尖域名服务器,如.com .cn .org等)地址。

  6. 此时LDNS再发送请求给上一步返回的gTLD

  7. 接受请求的gTLD查找并返回这个域名对应的Name Server的地址,这个Name Server就是网站注册的域名服务器。

  8. Name Server根据映射关系表找到目标ip,返回给LDNS

  9. LDNS缓存这个域名和对应的ip

  10. LDNS把解析的结果返回给用户,用户根据TTL值缓存到本地系统缓存中,域名解析过程至此结束

参考链接:https://www.imooc.com/learn/917
参考链接:https://blog.csdn.net/m0_37812513/article/details/78775629

你可能感兴趣的:(计算机网络)