跳到正文HisnLabs
← DNS:互联网的地址簿

第 1 课,共 4 课 · 6 分钟

DNS 是做什么的

为什么计算机在你访问的每一个网站上都需要一次“名称转数字”的查询,以及究竟是谁在回答这个查询。

TCP/IP 课程介绍过计算机之间是如何用数字互相寻址的。没有人愿意为了看新闻或发邮件去背数字,因此互联网在你几乎所有的联网操作背后,都运行着一套“名称转数字”的查询系统:域名系统,也就是 DNS。Cloudflare 学习中心把它简单地称为“互联网的电话簿”。

一棵树,而不是一份单一的列表

根据 RFC 1034 的设计,DNS 围绕着“一个用于指代资源的一致命名空间”构建,被组织成“一种树状结构”,其中“树上的每个节点和叶子都对应一个资源集合”。在实践中,这棵树分为好几层,每一层负责一小部分名称:

  • 根,位于树的最顶端,并不知道任何网站的地址,但它知道负责每个顶级域名(.com、.org 等等)的服务器是哪些。
  • 顶级域名(TLD)服务器同样不知道你要访问的具体网站,但它知道负责该域名的权威服务器是哪一个。
  • 权威服务器持有某个具体域名的真正答案:example.org 当前指向哪个 IP 地址。
  • 解析器(或称递归服务器)是你的设备实际询问的服务器。它代替你完成沿树向下查找的工作,然后把答案缓存一段时间,这样就不必为每一次请求重复走一遍完整的查找过程。

Cloudflare 学习中心用一个图书馆的比喻来说明同样的道理:“递归服务器可以被看作一位图书管理员,被要求去图书馆里找一本特定的书”,而“根服务器是把人类可读的主机名翻译(解析)成 IP 地址的第一步……它相当于指向其他更具体地点的一份参考”。

追踪一次查询

  1. 你的 Mac 向它配置好的解析器(通常由你的 ISP、Wi-Fi 路由器,或某个公共服务运营)询问一个名称背后的地址。
  2. 如果解析器还没有缓存这个答案,它就会向某个根服务器询问该尝试哪个 TLD 服务器。
  3. 它再向那个 TLD 服务器询问该尝试哪个权威服务器。
  4. 它向权威服务器询问真正的答案,然后把答案返回给你的设备,并保留一份缓存以应对其他请求。

RFC 1035 定义了这些查询和答案的确切消息格式,并指出它们通常通过 UDP 或 TCP 的 53 端口传输。这次查询默认并不是保密的;下一课会讲谁能看到它,以及这为什么重要。

从命令行执行一次 DNS 查询
dig example.com

;; ANSWER SECTION:
example.com.		233	IN	A	104.20.23.154
example.com.		233	IN	A	172.66.147.243

这一条命令,就是这堂课讲的整个过程在大约十分之一秒内发生的样子:你的解析器沿着这棵树走了一遍(或者直接给出了一个缓存答案),并把名称背后的数字地址返还给了你。

要点

  • DNS 把人类可读的名称,翻译成计算机实际用来建立连接的数字 IP 地址。
  • RFC 1034 把 DNS 组织成一棵树:根,然后是顶级域名服务器,再然后是每个域名各自的权威服务器。
  • 解析器(递归服务器)代替你的设备沿着这棵树向下查找,并缓存答案。
  • RFC 1035 定义了查询/应答的格式;查询通常通过 UDP 或 TCP 的 53 端口传输。
  • 一次 DNS 查询默认并不保密;除非专门加密,否则它就是明文、可读的流量。

自我检测

  1. 1. DNS 的主要工作是什么?

    • 加密网页流量
    • 把域名翻译成计算机用来建立连接的 IP 地址 — 正确。
    • 为家庭设备分配私有 IP 地址
    • 管理应用使用哪个端口

    Cloudflare 把 DNS 描述为“互联网的电话簿”:它把域名翻译成 IP 地址。

  2. 2. 在 RFC 1034 所描述的 DNS 树中,根服务器实际上知道什么?

    • 每个网站的 IP 地址
    • 负责每个顶级域名的服务器是哪些,而不是具体网站的地址 — 正确。
    • 什么都不知道;它只是装饰性的
    • 仅限以 .com 结尾的地址

    Cloudflare 的比喻是:根服务器“相当于指向其他更具体地点的一份参考”,指向的是 TLD 服务器,而不是直接给出答案。

  3. 3. DNS 解析器(递归服务器)做的是什么?

    • 它存储每个网站的文件
    • 它代替你的设备沿 DNS 树向下查找,并缓存找到的答案 — 正确。
    • 它只处理电子邮件
    • 它完全取代了对 IP 地址的需求

    Cloudflare 把递归服务器比作一位去寻找答案的图书管理员,之后解析器会缓存这个答案,让以后的查询更快。

  4. 4. 一次典型的 DNS 查询默认是加密的吗?

    • 是的,始终加密
    • 不是,除非专门加密,否则它是明文、可读的流量 — 正确。
    • 仅限 .com 域名
    • 仅限 Wi-Fi 网络

    RFC 1035 定义的 DNS 消息格式并未内置加密;给 DNS 加密需要一套独立的机制,会在后续课程中介绍。

用 FireAI 动手做

在你自己的 Mac 上练习这节课的内容。

来源

在你的 Mac 上实践

免费试用全部功能 17 天,无需绑定银行卡。

下载 Mac 版 文档