阅读 403

聊聊自己不是很懂的 DNS 和 CDN 【复查篇】

前言

WechatIMG351.png

DNS & CDN

什么不懂学什么,有关缓存,我们通常提到的就是浏览器缓存和http缓存,最多谈到的是强缓存和协商缓存这类,但是对应DNS缓存(及相关知识),或者是CDN缓存(及相关知识)不是特别清楚,当中可能涉及的不仅是缓存,还有像DNS查找,CDN原理,流程之类的东西,今天就借着记录这篇文章,去了解一下有关他们的一些更多知识。

希望理完文章的我,能清楚下面几个问题:

  1. DNS是什么?为什么需要DNS呢?
  2. DNS是如何查找的呢?递归,迭代查询?
  3. DNS缓存是什么?在DNS查询中涉及哪些?
  4. CDN是什么?为啥需要?
  5. CDN和DNS有啥关系?
  6. CDN具体流程是什么?

....

文章必定有写的不当的地方,欢迎评论区留下你宝贵的建议,好了,下面我们就开始吧。

1. DNS 是什么?

有关DNS,我想到的就是那个面试经常会被问到的“输入url地址到页面显示发生了啥”,在这个过程中,我们首先会判断如果这个url是个域名,那么就需要进行域名解析。

所以为什么要进行域名解析呢?

在互联网上,通信是基于TCP/IP协议来进行的

其中的IP协议被称为网际协议,如果TCP|UDP定义了数据传输的方式,那么通过IP协议,我们就可以知道数据传输的地点。 不过日常我们也是可以通过域名去访问对应的地址,而事实上只有IP地址才可以寻找到对应服务器,因此当你使用域名去访问,首先经历的是一个域名解析的过程,将域名转换成对应的IP地址,再去寻址。

DNS 就是一个域名系统,提供的服务是将域名转换成ip地址的工作,你可以把它当做一名翻译官。

DNS 从属于应用层协议(包括http smtp ftp)

2. DNS 域名解析流程

  1. 用户主机上运行这DNS的客户端(就是我们的pc机,或者手机客户端)
  2. 浏览器将接收到的url中抽取出域名字段,就是访问的主机名,并将这个主机名传送给DNS应用的客户端

http://www.baidu.com/ 比如像这么一个地址

  1. DNS客户端向DNS服务器发送一份查询报文(包含要访问的主机名字段)
  2. 该DNS客户机最终得到一份回答报文,其中包含该主机名对应的ip地址
  3. 浏览器收到来自DNS的ip地址,向该ip地址定位的http服务器发起TCP连接

截屏2021-09-11 上午9.08.13.png

3. DNS 服务体系

【我会结合自己的理解画一些图,可能并不是清楚,大家可以结合自己的理解理一下】

在上面的DNS转换过程中我们可以看到,域名经过在DNS服务器上找到相对应的ip返回就可以了,但是,这个找到域名的过程其实里面要复杂的多,下面一起来看看吧:

下面会涉及到一个需要注意的点: 用户主机的DNS客户端接收到后,向网络中发送一个DNS查询报文。所有DNS请求和回答报文使用的UDP数据报经过端口53发送

  • 一次UDP名字服务器交换可以短到两个包:一个查询包、一个响应包。

  • 一次TCP交换则至少包含9个包:三次握手初始化TCP会话、一个查询包、一个响应包以及四次分手的包交换。

考虑到效率原因,TCP连接的开销大,故采用UDP作为DNS的运输层协议,这也将导致只有13个根域名服务器的结果。

  1. 当我们在浏览器中输入http://www.baidu.com/的时候,操作系统先检查本地hosts文件是否有对应的ip映射,如果有直接调用
  2. 如果没有,查找本地DNS解析缓存,如果有直接调用
  3. 如果没有,(在TCP/IP中有设置一个首选DNS服务器,也就是本地DNS服务器),如果该服务器上有,映射,返回ip
  4. 如果本地DNS服务器本地区域文件与缓存解析都失效,根据本地DNS服务器的设置(是否设置转发)进行查询

以上整个过程就是递归查询

截屏2021-09-11 上午9.43.13.png

  1. 无转发:
  • 本地DNS就把请求发至13台根DNS,根DNS服务器收到请求后会判断这个域名(.com)是谁来授权管理,并会返回一个负责该顶级域名服务器的一个IP

  • 本地DNS服务器收到IP信息后,将会联系负责.com域的这台服务器。这台负责.com域的服务器收到请求后,如果自己无法解析,它就会找一个管理.com域的下一级DNS服务器地址 给本地DNS服务器。

  • 当本地DNS服务器收到这个地址后,就会找域服务器,重复上面的动作,进行查询,直至找到www . baidu.com主机。

  1. 有转发:
  • 此DNS服务器就会把请求转发至上一级DNS服务器,由上一级服务器进行解析,

  • 上一级服务器如果不能解析,或找根DNS或把转请求转至上上级,以此循环。

  • 不管是本地DNS服务器用是是转发,还是根提示,最后都是把结果返回给本地DNS服务器,由此DNS服务器再返回给客户机。

以上整个过程就是迭代查询

截屏2021-09-11 上午10.02.23.png

客户端到本地DNS服务器就是地柜查询,而DNS服务器之间的交互查询是迭代查询

3. DNS 查找 总结

  1. 客户端的DNS缓存
  • 浏览器缓存
  • 系统缓存 hosts
  • 路由缓存
  • ISP(互联网服务提供商) DNS缓存
  • 根域名服务器 13台
  • 顶级域名服务器
  • 主域名服务器
  • 保存结果到缓存

4. CDN 是什么?

内容分发网络

简单理解成一个离用户很近的,可以从上面获取到完整的原始数据的服务器,它会定期和拥有原始内容的服务器进行同步,保证用户可以从上面获取到最新的内容。

CDN可以大幅度的体改下载速度,提高带宽,加速了网站的访问——用户与内容之间的物理距离缩短,用户的等待时间也得以缩短。

因为CDN服务器要比原始内容服务器更靠近用户端

传统的:

截屏2021-09-11 下午12.52.58.png

使用CDN:

  1. 在靠近用户的地方,建一个缓存服务器,把远端的内容,复制一份,
  2. CDN就是采用更多的缓存服务器(CDN边缘节点),布放在用户访问相对集中的地区或网络中。
  3. 当用户访问网站时,利用全局负载技术,将用户的访问指向距离最近的缓存服务器上,由缓存服务器响应用户请求。

截屏2021-09-11 下午12.56.14.png

5. CDN 具体流程?

当部署了CDN的网络,我们使用url进行访问的时候,回和之前说的DNS域名解析过程有那么一些不一样,具体来看个栗子🌰:

比如我们现在要去腾讯视频点播一集电视剧📺:

  1. 当我们点击这个app上的内容,app也会根据这个url地址去本地的DNS域名解析系统寻求IP地址解析
  2. 本地DNS系统会将域名解析的权利给我们CDN专用的DNS服务器
  3. CDN专用DNS服务器,将CDN的全局负载均衡设备IP地址返回用户

截屏2021-09-11 下午1.11.38.png

  1. 用户根据ip地址向CDN的负载均衡设备发起内容URL访问请求
  2. CDN负载均衡设备根据用户IP地址,以及用户请求的内容URL,选择一台用户所属区域的缓存服务器。
  3. 负载均衡设备告诉用户这台缓存服务器的IP地址,让用户向所选择的缓存服务器发起请求
  4. 用户向缓存服务器发起请求,缓存服务器响应用户请求,将用户所需内容传送到用户终端
  5. 如果这台缓存服务器上并没有用户想要的内容,那么这台缓存服务器就要网站的源服务器请求内容。
  6. 源服务器返回内容给缓存服务器,缓存服务器发给用户,并根据用户自定义的缓存策略,判断要不要把内容缓存到缓存服务器上。

截屏2021-09-11 下午1.20.08.png

6. CDN 总结

相信看到这里的你,一定对CDN的整个流程应该有了大致的了解了:

(1)CDN的加速资源是跟域名绑定的。本地DNS服务器会把域名解析的权利给CDN专用服务器

(2)通过域名访问资源,首先是通过DNS查找离用户最近的CDN节点(边缘服务器)的IP (当中使用了CDN的负载均衡设备),而用户能找到这个设备,就是之前的CDN专用服务器提供的ip地址

(3)通过IP访问实际资源时,如果CDN上并没有缓存资源,则会到源站请求资源,并缓存到CDN节点上,这样,用户下一次访问时,该CDN节点就会有对应资源的缓存了。

写在后面 ❤

这篇文章就暂时到这里啦,有关DNS,CDN的一些浅显的理解,但是目前还没有真正的实践过,不过一些理论的知识也要先掌握才行呀。

我是婧大

一个在默默准备秋招的大四学仔。

希望可以和你一起学习一起进步呀

wx: lj18379991972

欢迎👏🏻加好友,一起学前端。❤

image.png 参考了很多优秀的文❤:

阿里巴巴淘系技术的知乎回答

到底什么是CDN

DNS域名解析

DNS原理及其解析过程

DNS查询过程

文章分类
前端
文章标签