DNS

Dec 24, 2018 21:00 · 1274 words · 3 minute read DNS

什么是 DNS

DNS 是 Domain Name System (域名系统)的缩写,是**“互联网的地址簿”**。我们平时通过像 google.com 或者 apple.com 这样的域名访问网站,实质上网页浏览器通过 IP 地址与(Google 或 Apple)的远程服务器进行交互。DNS 将域名“翻译”成了 IP 地址,这样浏览器才可以加载资源。

连接入互联网的每个设备都有一个唯一的 IP 地址,其他计算机通过这个 IP 地址来找到它。有了 DNS 服务,人们就不必人工记忆 IP 地址,例如 192.168.1.1(IPv4),甚至更复杂的 IPv6 地址 2400:cb00:2048:1::c629:d7a2。

DNS 如何工作

**DNS 解析就是将可读性更好的域名(www.example.com)转换成对计算机识别的 IP 地址(192.168.1.1)。**网络中的每台设备都会被分配一个 IP 地址,就像快递的收件地址,必须通过这个地址来找到相应的收件人所在的地方。当我们想要浏览某个网页,在浏览器地址栏中输入网站链接(URL),就会被翻译成计算机可识别的地址来定位页面资源所在地。

为了理解 DNS 解析背后的过程,首先要了解 DNS 查询必须经过的各种硬件设备。对于浏览器来说, DNS 查询是透明的,除了初始请求不需要用户另外和计算机交互。

加载一个网页涉及4种 DNS 服务器:

  • DNS 递归解析器——可以看作图书管理员,用来从客户端接收浏览器的请求,之后再由它向其他服务器发出请求。
  • 根域名服务器——返回顶级域名服务器的 IP 地址
  • 顶级域名服务器——返回某区域的权威域名服务器的 IP 地址
  • 权威域名服务器——返回相应主机的 IP 地址

权威 DNS 服务器和递归 DNS 解析器之间的区别

这两个都是 DNS 系统中的一部分,但是两者扮演不同的角色并位于 DNS 查询链的不同阶段。可以这么说,递归解析器位于 DNS 查询的开头而权威域名服务器则在尾端。

递归 DNS 解析器

递归 DNS 解析器是响应来自客户端的初始请求并追踪 DNS 记录的计算机设备。它发出一系列请求直到权威 DNS 服务器(或者超时,或者返回错误,或者找不到记录)。递归 DNS 解析器并不总是需要发出多个请求才能获取客户端想要的记录的,如果缓存中有之前 DNS 查询的记录,通过返回缓存中现成的记录,能够有效缩短 DNS 查询的处理时间。

权威 DNS 服务器

权威 DNS 服务器负责 DNS 资源记录。这是整个查找链底部的服务器,最终实现浏览器即将访问的网站的 IP 地址转换。权威域名服务器只需要查询自己的数据,因为它是特定的 DNS 记录的最终来源。

值得一提的是,

DNS 查询的步骤

  1. 用户在浏览器中输入 example.com 后按下回车,查询请求将被发送至 DNS 递归解析器。
  2. 解析器首先查询根域名服务器。
  3. 根域名服务器将顶级域名服务器(TLD)的 IP 地址返回给解析器。当查找 example.com时,我们的请求被指向了 .com 这个顶级域名。
  4. 随后解析器请求 .com 顶级域名服务器(.net、.org这样的都是顶级域名)。
  5. 顶级域名服务器将可用的区域权威域名服务器的 IP 地址返回。
  6. 最后,递归解析器向这台权威域名服务器发送查询请求。
  7. 权威域名服务器将 example.com 的 IP 地址发回递归解析器。
  8. DNS 递归解析器使用这个 IP 地址响应等待初始请求结果的浏览器。

当 DNS 查询完毕,知道了 example.com 的 IP 地址,浏览器可以真正地请求网页资源了:

  1. 浏览器向目标 IP 地址发送一个 HTTP 请求。
  2. 目标服务器响应请求并发回网页资源文件以供浏览器渲染。