域名系统简介。

2025-06-09

域名系统简介。

如果您了解互联网或计算机网络的工作原理,那么您可能听说过或了解域名系统 (DNS)。如果您不熟悉 DNS,我建议您查看我之前关于计算机网络的博客文章。

主机名本身无法告诉我们,我们试图与之通信的特定机器/硬件位于世界上的哪个位置。因此,所有通信都通过 IP 地址进行。

域名服务器是将主机名映射到运行服务的机器/硬件的 IP 地址的设备。

在这篇文章中,我将详细解释 DNS 查询的类型、DNS 服务器的类型和 DNS 记录的类型。

DNS解析器

DNS 解析器是互联网服务提供商 (ISP) 使用的计算机,用于在其数据库中查找用户请求的特定主机名。然后,它们将用户重定向到映射的 IP 地址。它们在 DNS 解析中发挥着至关重要的作用。

DNS 解析器也会缓存数据。例如,我的 websiteexample.com 目前托管在 IP 地址为 35.195.226.230 的机器上。因此,全球各地 DNS 解析器的缓存映射如下:

example.com->35.195.226.230

试想一下,如果将来我想将我的网站托管在全球任何一台 IP 地址为 的服务器上。35.192.247.235全球所有 DNS 解析器的 DNS 缓存在一段时间内仍会保留旧的 IP 地址。这可能会导致网站在 DNS 迁移完成之前无法通过常规方式访问。

DNS 解析器缓存中的记录会保留一段时间,这称为生存时间(简称 TTL)。

这是记录在 DNS 解析器中缓存的时间。您可以在购买域名的注册商控制面板中设置。

注意:从现在开始,我将在此博客文章中将 DNS 解析器仅称为解析器。

DNS 服务器的类型

根 DNS 服务器

根 DNS 服务器拥有所有 TLD 域名服务器的地址。请求在传输过程中首先会遇到根 DNS 服务器,以便根据主机名获取 IP 地址。

截至 2016 年,全球共有 13 个根域名服务器。这并不意味着只有 13 台机器处理来自世界各地的请求负载——有多台地面服务器在处理负载。

不同的组织管理根 DNS 服务器:

根服务器

TLD域名服务器

这些是根据顶级域名分类的。它们通常是迭代查询在到达根 DNS 服务器后遇到的下一个服务器。它们存储了主机名的 TLD 特定记录。

假设我们请求的 IP 地址为medium.com,则会查询“.com”顶级域名服务器。顶级域名服务器会将权威 DNS 服务器的地址返回给解析器。

顶级域名服务器

现在,问题出现了:TLD 域名服务器如何知道权威域名服务器的地址?答案很简单:当您从 GoDaddy 或 Namecheap 等注册商处购买任何域名时,注册商也会将域名传送给 TLD 域名服务器。这样它就能联系权威域名服务器了。

如今,一些注册商提供了使用第三方权威域名服务器的功能。如上图所示,您可以在注册商的控制面板中设置权威域名服务器。

权威 DNS 服务器

解析器最终会迭代查询这些记录。它们存储了 A 类、NS、CNAME、TXT 等类型的实际记录。

因此,如果主机名的 IP 地址可用,它们会返回该 IP 地址。如果即使在权威 DNS 服务器中也找不到该 IP 地址,它们会抛出错误并显示特定消息,并且跨域名服务器搜索 IP 地址的过程结束。

DNS 查询的类型

DNS 查询有三种类型:

递归:递归查询由用户向解析器发起。这实际上是执行任何 DNS 查找时发出的第一个查询。

解析器可以是您的 ISP 或您的网络管理员,但通常在几乎所有情况下都是 ISP。

非递归:在非递归查询中,解析器知道答案并立即响应,无需向任何其他域名服务器进行进一步查询。这是因为本地 DNS 服务器已将 IP 地址存储在其本地缓存中,或者它直接查询权威域名服务器。这些服务器恰好保存了该记录,从而最终避免了递归查询。

迭代查询:当解析器由于未缓存结果而无法返回时,就会发生迭代查询。因此,它会向根 DNS 服务器发出请求。根 DNS 服务器知道在哪里可以找到特定的 TLD 域名服务器。

例如,如果我们尝试获取 的 IP 地址medium.com,那么根域名服务器会存储 TLD 服务器的地址.com,并将其发送回解析器。解析器随后向 TLD 服务器请求 IP 地址。TLD 域名服务器可能不知道该 IP 地址,但它知道 的权威 DNS 服务器的地址medium.com

好了,理论讲得够多了。让我们通过流程图来理解:

DNS解析

让我们分步分解上面的图表:

  1. 用户向解析器发出请求,请求其想要获取 IP 地址的主机名。这是一个递归查询。
  2. 解析器在其缓存中查找是否存在该缓存。
  3. 如果是,它会将其返回给用户。
  4. 如果缓存中没有该信息,它会向全球的根 DNS 服务器发出迭代请求。截至 2016 年,共有 13 台根 DNS 服务器,名称从 A 到 M。现在,根 DNS 服务器会查找所请求域名的顶级域名 (TLD)。例如,如果主机名是medium.com,则 TLD 变为“.com”,根 DNS 服务器会获取“.com”域名服务器的条目,并将结果返回给解析器。解析器必须拥有所有根域名服务器的地址。如果没有,DNS 查找可能一开始就会失败。
  5. 现在,解析器再次向 TLD 域名服务器发出迭代请求,询问该域名的 IP 地址。然后,TLD 域名服务器返回该请求域名的权威服务器地址。
  6. 到目前为止,我相信您可能已经了解了什么是权威 DNS 服务器。它们包含将主机名映射到 IP 地址的实际记录,因此 IP 地址会返回给解析器(解析器又将其返回给用户)。
  7. 如果在权威名称服务器中未找到匹配的记录,则会抛出一条错误消息“DNS_PROBE_FINISHED_NXDOMAIN”,表示没有所请求主机名的记录。
  8. 在请求经过的所有名称服务器中,所请求主机名的结果都会被缓存,以便当任何其他用户请求同一域时,该记录已经存在于 DNS 缓存中。
  9. 总而言之,执行 DNS 查询最多需要四次查询。但执行查询所需的时间几乎只有几毫秒。

DNS传播的概念

假设你的网站托管在某个提供商(例如 Digital Ocean)的一台 IP 地址为“x”的机器上,现在你想将网站托管转移到另一台 IP 地址不同的机器上,比如“y”。你需要在授权记录中更改 IP 地址,以便流量导航到新的 IP 地址。

即使您更新了注册商/域名服务器仪表盘中的记录,也需要一些时间才能反映在全球所有解析器的缓存中。DNS 传播可能需要 24 到 72 小时,但由于大多数 ISP 会将 TTL 保持在较低水平,因此通常会更快。

就是这样!

感谢您阅读本文。如果您有任何疑问,请在下方评论区留言,并分享这篇文章给任何您想分享的人。

下次再见。谢谢!

欢迎随时通过Twitter与我联系

鏂囩珷鏉ユ簮锛�https://dev.to/lunaticmonk/an-introduction-to-the-domain-name-system-18bi
PREV
回顾我的编程生涯
NEXT
2023 年 7 个开源 AI 项目将加速编码🧑‍💻🚀 更多 AI 项目