什么是 DNS? 域名系统简介

已发表: 2022-04-11

当您坐在电脑前时,互联网似乎很简单。 您打开浏览器,输入域名,然后在屏幕上查看网站。 然而,在图形用户界面 (GUI) 下方是一个由软件和服务器组成的扩展网络,称为域名系统 (DNS)。 但是,什么是 DNS,它如何帮助我们在设备上查看网络?

这个问题的答案很复杂,因为涉及到大量的运动部件。 您会发现链中的几乎每个环节都使用服务器。 更重要的是,有一些技术可以帮助您减少可能影响快速页面加载速度的瓶颈。

在这篇文章中,我们将以最直接的方式帮助您了解 DNS。 让我们总结一下本文将要介绍的内容。

目录

  • 互联网如何从服务器获取网页到您的浏览器
    • 获取和加载网页的 4 个 DNS 服务器
  • DNS Recursor 和 Authoritative Nameserver 的区别
  • DNS 查找的工作原理
    • 您将在 DNS 查找中找到的查询
  • DNS缓存入门
  • 更改 DNS 记录:“传播”
  • 结论

互联网如何从服务器获取网页到您的浏览器

总而言之,DNS 是我们将可读域名转换为它所代表的最终 Internet 协议 (IP) 地址的方式。 虽然这表面上看起来是一项简单的任务,但事实远非如此。

每个网站都存在于服务器上,每个服务器(实际上是计算机)都有一个 IP 地址。 DNS是将IP地址映射到域名的系统,因此我们可以享受用户友好的浏览。 作为一个类比,想想街道名称和房屋地址实际上是一组地图坐标。 我们使用街道地址来简化位置的经度和纬度。

显示物理地址和纬度和经度的地图屏幕。

当您将 IP 地址转换为域名时(反之亦然),这就是“DNS 解析”。 该链中有许多硬件组件,特别是四种不同类型的服务器。 让我们接下来讨论这些。

获取和加载网页的 4 个 DNS 服务器

每个 DNS 请求和解析都经过四台服务器。 简而言之,它们是:

  • DNS 递归器。 这是整个 DNS 的“水载体”。 当您从浏览器请求网站时,您会告诉递归器在 DNS 中查找(或“查找”)该站点。
  • 根名称服务器。 如果您考虑一个包含大量站点的 Web 服务器,那么根名称服务器就代表了整体。 它是 IP 地址的一般位置。
  • 顶级域 (TLD) 名称服务器。 网站将存在于根名称服务器中,但 TLD 名称服务器将挖掘出 IP 地址的最后部分:主机名的结尾部分。 这可能是 .com、.net 或无数其他。
  • 权威的域名服务器。 为了使这个复杂的服务器变得简单,它是 IP 地址的参考库。 该服务器会将完整的 IP 地址发送回递归器,然后递归器会在您的浏览器中显示该站点。

在查询解析之前,DNS 查询会经历所有这些步骤,甚至多次。 因此,链中有很多点会导致查询失败——这就是为什么我们会出现 HTTP 错误。

不过,值得更详细地深入研究这条链的正面和背面。 接下来让我们这样做。

DNS Recursor 和 Authoritative Nameserver 的区别

您将了解递归器获取查询的结果,并且是整个 DNS 过程的开始。 反过来,您还将知道权威名称服务器将此过程的结果传递回递归器。 但是,两者都有更多您需要了解的差异:

  • DNS 递归器。 此服务器响应 DNS 查询请求。 它之所以活跃,是因为它沿着链跟踪 DNS 记录。 虽然递归器的典型方法是向其他服务器发出多个请求,但缓存可以减少这段时间。 稍后我们将详细讨论这一点。
  • 权威名称服务器。 此服务器保存所有 DNS 记录。 它的工作是根据从链中其他服务器(包括递归器)接收到的信息来响应请求。 正是这个服务器让浏览器显示一个网站。 因为它是权威的,所以它不需要咨询其他来源来验证查询——它是事实的来源。

但是,虽然权威名称服务器是 DNS 请求的端点,但并不总是这样。 在此之后,您还将根据请求找到其他名称服务器。

如果 DNS 查询是针对子域(例如 shop.example.com),您会发现在权威域名服务器之后会有一个额外的域名服务器。 这将存储相关子域的CNAME记录。

注册商中的 CNAME 记录。

理论上,查询请求的额外名称服务器的数量没有限制。 但是,大多数时候,只会有一个额外的名称服务器。

DNS 查找的工作原理

虽然有四台服务器处理 DNS 查找和查询,但链中有很多步骤传递查询并获取结果。 以下是查找过程的工作原理:

  • 您将在浏览器中输入域名。 单击Enter后,查询将从您的浏览器和操作系统 (OS) 进入 DNS 递归器接收它的 Internet。
  • 递归器将此查询传递给根名称服务器,并执行自己的查询。
  • 此查询的结果将是 TLD 名称服务器,它返回给递归器。
  • 这一次,递归器查询 TLD 名称服务器,它以域的权威名称服务器的 IP 地址进行响应。
  • 递归器向权威名称服务器发送另一个查询,后者又以初始域请求的 IP 地址进行响应。

从这里,递归器将其工作结果发送回 Web 浏览器。 这样就完成了 DNS 过程,递归器可以休息几毫秒! 然后浏览器将处理 HTTP 请求,以便在浏览器中显示该站点。

有许多复杂且劳动密集型的步骤(相对于服务器可以实现的目标),这种情况在全世界每秒发生数十亿次。 即便如此,在一次查找中也只会发生三个查询。

您将在 DNS 查找中找到的查询

DNS 客户端和服务器之间的每个查询都存在关系。 虽然这些是通用术语,但我们会在解释中注明任何细节:

  • 递归查询。 在此查询中,客户端将请求 DNS 递归器以请求的 DNS 记录或错误消息进行响应。
  • 迭代查询。 此查询为递归器提供免费许可,以对其返回的内容进行“最佳猜测”。 如果查询不匹配,则结果将被引荐到较低级别的权威服务器,直到此“路径”耗尽。
  • 非递归查询。 如果缓存中存在 DNS 记录,或者递归器对记录具有权威访问权限,您会发现此查询将发生。 我们将在本文末尾讨论缓存。

在很多情况下,您会发现递归和非递归查询是最常见的。 这就是您会看到错误消息以及查找过程可能很复杂的原因。

DNS缓存入门

当您处理非递归查询时,记录有机会驻留在 DNS 记录的专用缓存中。 如果您了解缓存,您就会明白它会包含您定期访问的文件。 本地应用程序可以做到这一点,但您网站的缓存是最好的例子:

WordPress 仪表板中的 W3 Total Cache 插件。

这将保存您站点文件的记录,以便您可以减少 HTTP 请求的数量。 DNS 记录也是如此。 这使相关记录更靠近您的计算机位置,以便您可以比通常更快的速度获取 IP 地址。

对于 Web 开发人员, GET请求是浏览器发出的。 使用缓存,递归器切断链中的其他服务器,或者直接进入权威名称服务器,或者在不需要进一步查询的情况下调用它。 这是您可以进行的最典型的非递归查询。

事实上,您会发现跨多种技术的 DNS 缓存,例如您的 Internet 服务提供商 (ISP)、路由器和本地计算机。

Brave 浏览器显示内存中缓存文件的数量。

您会发现您的浏览器缓存是寻找 DNS 记录的递归器的第一个调用端口,因此,浏览器通常会将记录缓存为默认设置。 您的操作系统还将有一个 DNS 解析器,它还会检查其缓存中的 DNS 记录。

同样,如果操作系统在其缓存中不包含该记录,它会将查询发送到您的 ISP 递归器进行处理。 这两个递归器都将与您的域的ANS记录一起使用,以在完整的查找过程发生之前尝试解决查询。

更改 DNS 记录:“传播”

说到这一点,您可以通过您的注册商对您的ANSCNAME记录进行更改。 在很多情况下,在所有这些更改注册之前,总共需要 72 小时。

这是 DNS 传播,完成所需的时间取决于许多因素 - 即相关记录的生存时间 (TTL) 值:

以秒为单位显示 TTL 值的注册商记录。

简而言之,这决定了更改对特定 DNS 记录生效的速度。 典型的 TTL 约为 4 小时,值越高,传播所需的时间越长。

注册商通常会为您的域名服务器设置 TTL,因此,您或其他任何人都无法进行更改。 这就是为什么您经常必须等待传播完成,以及为什么您会不断检查诸如我的 DNS 是什么之类的站点的原因。 衡量其进展:

我的 DNS 是什么?网站。

解决方案是在决定更改 DNS 记录之前尽可能多地设置 TTL。 当然,注册商将负责您的域名服务器,但您会尽可能地减少传播时间。

结论

如果您认为访问网页很简单,请再想一想。 对于最终用户来说,这个过程的核心很简单。 然而,在底层它要复杂得多,并且涉及大量额外的服务器。

这篇文章研究了 DNS——互联网获取域名并将其解析为 IP 地址的方式。 从那里,它可以返回浏览器并呈现为网页。 但是,您会发现许多其他过程也会发生,例如传播和缓存。 结合起来,它们为我们提供了快速且(大部分)无故障的浏览。

您认为本文回答了“什么是 DNS?”这个问题吗?如果没有,您还有其他问题吗? 如果是这样,请在下面的评论部分询问!