认识Web浏览器(四)——DNS服务器

178 阅读5分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第14天,点击查看活动详情

DNS服务器

DNS服务器的基本工作

简而言之:接收来自客户端的查询消息,然后根据消息内容返回响应。
查询消息包括三种信息:

(a)域名
服务器、邮件服务器(邮件地址中 @ 后面的部分)的名称
(b)Class
在最早设计 DNS 方案时,DNS 在互联网以外的其他网络中的应用也被考虑到了,而 Class 就是用来识 别网络的信息。不过,如今除了互联网并没有其他的网络了,因此 Class 的值永远是代表互联网的 IN
(c)记录类型
表示域名对应何种类型的记录。例如,当类型为 A 时,表示域名对应的是 IP 地址;当类型为 MX 时,表示域名对应的是邮件服务器。对于不同的记录类型,服务器向客户端返回的信息也会不同.
图解:
在这里插入图片描述

对记录类型的解释:
A类型:Address,且只要是作为 A记录在DNS服务器上注册的,都可以作为 Web 服务器的域名 。
MX类型:Mail eXchange,查询邮件服务器
PTR 类型: 根据 IP 地址反查域名
CNAME 类型:查询域名相关别名
NS 类型: 查询 DNS 服务器 IP 地址
SOA 类型:查询域名属性信息
在 DNS服务器上,IP 地址是保存在 A 记录中的,而邮件服务器则是保存在 MX 记录中。

综上所述,
DNS 服务器的基本工作就是根据需要查询的域名和记录类型查找相关的记录,并向客户端返回 响应消息。

DNS 服务器会从域名与 IP地址的对照表中查找相应的记录,并返回 IP 地址。

域名的解释

DNS服务器中的所有信息是按照域名以分层次的结构来保存的。(层次结构可以更好的管理大量信息)
细节:

  1. DNS的域名是用句点来分隔,越靠右的位置代表其层级越高。
  2. 一个层级的部分叫做域。
  3. 这种层级结构的信息会注册到DNS服务器中,每个域都是作为一个整体来处理的。
  4. DNS服务器与域之间关系不全是一对一,可以说一对多(即一台DNS服务器中有多个域的信息)但绝不可能是多对一(因为域是不可以拆开的)
  5. 因此DNS服务器也有层级关系,某一层级的域存放在相应层级的DNS服务器中。

寻找相应的 DNS 服务器并获取 IP 地址

关键在于:如何找到与之对应的要访问的 Web 服务器的信息归哪一台 DNS 服务器管。
寻找方法:

首先,将负责管理下级域的 DNS 服务器的 IP 地址注册到它们的上级 DNS 服务器中,然后上级 DNS 服务器的 IP 地址再注 册到更上一级的 DNS 服务器中,以此类推。

注:1.顶级域(例如com,cn)的上面还有一级域,称为根域。
(但一般可以省略,如果要明确表示根域,可以在域名的最后加上一个句点)
2. 将根域的 DNS 服务器信息保存在互联网中所有的 DNS 服务器中。
(这样一来,任何 DNS 服务器就都可以找到并访问根域 DNS 服务器了。)

分配给根域 DNS 服务器的 IP 地址在全世界仅有 13 个 ,而且这些地址几乎不发生变 化,因此将这些地址保存在所有的 DNS 服务器中也并不是一件难事。实际上,根域 DNS 服务器的相关信息 已经包含在 DNS 服务器程序的配置文件中了,因此只要安装了 DNS 服务器程序,这些信息也就被自动配置好了。

图解——找到目标DNS服务器
在这里插入图片描述
在这里插入图片描述

通过缓存加快DNS服务器的响应

在现实互联网中,为了节省效率,一台服务器可以管理多个域的信息,有可能上图的上下级域都共享着同一台DNS服务器

因为 DNS 服务器有一个缓存功能,可以记住之前查询过的域名。
1.如果要查询的域名和相关信息已经在缓存中,那么就可以直接返回响应,接下来的查询可以从缓存的位置开始向下进行。相比每次都从根域找起来说,缓存可以减少查询所需的时间。
2.当要查询的域名不存在时,“不存在”这一响应结果也会被缓存。这样,当下次查询这个不存在的域名 时,也可以快速响应。
3.缓存:指的是将使用过的数据存放在离使用该数据的地方较近的高速存储装置中,以便提高后续访问速度的技术。这一技术有很多应用,如 CPU 和内存之间的缓存、磁盘和内存之间的缓存等,在网络中缓存也是一种用来提高访问速度的普遍性技术。