第 1 课,共 4 课 · 6 分钟
DNS 是做什么的
为什么计算机在你访问的每一个网站上都需要一次“名称转数字”的查询,以及究竟是谁在回答这个查询。
TCP/IP 课程介绍过计算机之间是如何用数字互相寻址的。没有人愿意为了看新闻或发邮件去背数字,因此互联网在你几乎所有的联网操作背后,都运行着一套“名称转数字”的查询系统:域名系统,也就是 DNS。Cloudflare 学习中心把它简单地称为“互联网的电话簿”。
一棵树,而不是一份单一的列表
根据 RFC 1034 的设计,DNS 围绕着“一个用于指代资源的一致命名空间”构建,被组织成“一种树状结构”,其中“树上的每个节点和叶子都对应一个资源集合”。在实践中,这棵树分为好几层,每一层负责一小部分名称:
- 根,位于树的最顶端,并不知道任何网站的地址,但它知道负责每个顶级域名(.com、.org 等等)的服务器是哪些。
- 顶级域名(TLD)服务器同样不知道你要访问的具体网站,但它知道负责该域名的权威服务器是哪一个。
- 权威服务器持有某个具体域名的真正答案:example.org 当前指向哪个 IP 地址。
- 解析器(或称递归服务器)是你的设备实际询问的服务器。它代替你完成沿树向下查找的工作,然后把答案缓存一段时间,这样就不必为每一次请求重复走一遍完整的查找过程。
Cloudflare 学习中心用一个图书馆的比喻来说明同样的道理:“递归服务器可以被看作一位图书管理员,被要求去图书馆里找一本特定的书”,而“根服务器是把人类可读的主机名翻译(解析)成 IP 地址的第一步……它相当于指向其他更具体地点的一份参考”。
追踪一次查询
- 你的 Mac 向它配置好的解析器(通常由你的 ISP、Wi-Fi 路由器,或某个公共服务运营)询问一个名称背后的地址。
- 如果解析器还没有缓存这个答案,它就会向某个根服务器询问该尝试哪个 TLD 服务器。
- 它再向那个 TLD 服务器询问该尝试哪个权威服务器。
- 它向权威服务器询问真正的答案,然后把答案返回给你的设备,并保留一份缓存以应对其他请求。
RFC 1035 定义了这些查询和答案的确切消息格式,并指出它们通常通过 UDP 或 TCP 的 53 端口传输。这次查询默认并不是保密的;下一课会讲谁能看到它,以及这为什么重要。
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. DNS 的主要工作是什么?
- 加密网页流量
- 把域名翻译成计算机用来建立连接的 IP 地址 — 正确。
- 为家庭设备分配私有 IP 地址
- 管理应用使用哪个端口
Cloudflare 把 DNS 描述为“互联网的电话簿”:它把域名翻译成 IP 地址。
2. 在 RFC 1034 所描述的 DNS 树中,根服务器实际上知道什么?
- 每个网站的 IP 地址
- 负责每个顶级域名的服务器是哪些,而不是具体网站的地址 — 正确。
- 什么都不知道;它只是装饰性的
- 仅限以 .com 结尾的地址
Cloudflare 的比喻是:根服务器“相当于指向其他更具体地点的一份参考”,指向的是 TLD 服务器,而不是直接给出答案。
3. DNS 解析器(递归服务器)做的是什么?
- 它存储每个网站的文件
- 它代替你的设备沿 DNS 树向下查找,并缓存找到的答案 — 正确。
- 它只处理电子邮件
- 它完全取代了对 IP 地址的需求
Cloudflare 把递归服务器比作一位去寻找答案的图书管理员,之后解析器会缓存这个答案,让以后的查询更快。
4. 一次典型的 DNS 查询默认是加密的吗?
- 是的,始终加密
- 不是,除非专门加密,否则它是明文、可读的流量 — 正确。
- 仅限 .com 域名
- 仅限 Wi-Fi 网络
RFC 1035 定义的 DNS 消息格式并未内置加密;给 DNS 加密需要一套独立的机制,会在后续课程中介绍。
用 FireAI 动手做
在你自己的 Mac 上练习这节课的内容。
来源
- RFC 1034: Domain Names – Concepts and Facilities
- RFC 1035: Domain Names – Implementation and Specification
- Cloudflare Learning: What is DNS?
在你的 Mac 上实践
免费试用全部功能 17 天,无需绑定银行卡。