DNS:它是什么以及它是如何工作的

已发表: 2014-08-14

域名系统或 DNS 是互联网最重要的基础之一。 它负责我们连接服务器的能力,而无需记住长而繁琐的数字字符串。 作为设计人员或开发人员,了解 DNS 是什么、它如何工作以及如何使用它非常重要。

什么是 DNS?

Arpanet_logical_map_march_1977

1977 年 3 月,每台连接到互联网前身 ARPANET 的计算机示意图

在 1970 年代,联网的计算机非常少,以至于每个人都可以轻松地保留每台其他计算机的手动列表。 在 ARPANET(互联网的前身)时代,如果购买了一台新计算机并将其添加到网络中,所有者只需告诉 ARPANET 上的其他所有人,谁会将这台新计算机添加到他们的列表中。 当只有几十台计算机连接在一起时,这个系统工作得很好,但随着计算变得更便宜和更容易公开访问,它很快就退化了。 用今天的术语来说,这类似于在新网站或服务启动时必须通知全世界。

在 80 年代初期,DNS 旨在通过维护一个权威的域列表以及它们指向哪些计算机来解决这个问题。 但这究竟是如何工作的? 用技术术语来说,DNS 是一个系统,几乎所有支持网络的设备都使用它来解析具有关联 IP 地址的域名。 把它想象成互联网的电话簿。

当您在网络浏览器中输入 http://www.getflywheel.com 之类的网址时,您的计算机不会自动知道要去哪里。 它需要一个 IP 地址才能连接,但您为它提供了一个域名,它只是一串字母。 域使人们更容易记住网站的位置,但它们并不是计算机建立连接所需要的。 相反,您的计算机会联系 DNS 服务器并要求它提供该网站的 IP 地址。 DNS 服务器响应并告诉您的计算机“http://www.getflywheel.com 位于 192.241.128.208”。 您的计算机从 DNS 服务器中获取该 IP 地址并使用它连接到该 IP 地址,从而打开 Flywheel 的网站。

DNS_Rquest

DNS 记录是如何管理和设置的?

DNS 是通过 DNS 记录设置的,其中包含域应指向的 IP 地址、子域、电子邮件设置甚至任意文本等信息。 购买域后,所有者会为该域指定权威名称服务器。 这些名称服务器控制域的 DNS 记录,这些记录被其他 DNS 服务器获取并在整个 Internet 中传播。 通常,如果您要设置自己的 DNS 记录,您会知道您网站的 IP 地址。 例如,Flywheel 将为您提供一个 IP 地址,您可以将 A 名称记录指向该地址。

全世界有成千上万的 DNS 服务器,它们都同步在一起以记录所有内容的位置。 但是,并非所有 DNS 服务器都是一样的。

了解 DNS 的工作原理非常棒。 需要付诸实践吗? 查看我们很棒的免费电子书,了解最常见的 DNS 记录以及如何使用它们。

DNS 服务器的结构有点像倒置的树。 有 13 台服务器或主服务器构成了这棵树的主干。 它们是 DNS 的终极主副本。 所有 DNS 数据必须要么来自根服务器,要么来自之前联系过根服务器并获取数据的服务器。 根服务器构成所谓的根区域,或最权威的 DNS 区域。

在根区域之后,还有包含域的子区域。 每个顶级域都有自己的区域记录,该区域记录进一步细分为单独的域,例如http://www.getflywheel.com,称为二级域。

这有点技术性,所以让我们从树类比的角度来看。 根区域形成主干,每个顶级域,例如 .com 或 .org,都是该主干的一个分支。 每个网站,例如 getflywheel.com 都是从该分支伸出的一片叶子。 那个小叶子是域所有者拥有 DNS 控制权的区域。 每个分支都是一个单独的名称服务器,跟踪源自它的分支和叶子。

因此,当计算机请求 getflywheel.com 时,它首先会联系根服务器,该服务器会说:“您正在寻找一个 .com 网站。 去与位于此处的 .com 名称服务器交谈。” 然后,您的计算机沿着链向下递归到负责 .com 的名称服务器,并要求它提供更多详细信息。 您的计算机与服务器联系,直到它最终找到域所有者指定的名称服务器。 然后它会计算出与该网站关联的 IP 地址并访问它。 您的计算机沿着分支遍历服务器树,直到它最终到达包含最终目标的叶子。

DNS 根层次结构

注意:虽然官方有 13 台根 DNS 服务器,但除两台外,其他所有服务器都通过一种称为选的路由技术单独链接并分发到数十台相同的服务器。 Anycast 允许多个节点作为同一个实体存在。 当设备连接到该实体时,它将连接到网络上最近的可用节点(这与在 CDN 中使用的geocast不同,例如,设备连接到最近的地理服务器)。 Anycast 允许根服务器在世界范围内成倍增加和分布,从而平衡负载、加快响应时间并防止单点故障。

每次您想访问一个网站时,整个服务器联系链似乎都非常麻烦且费力。 幸运的是,DNS 被大量缓存,这意味着副本经常保存在离您较近的计算机上,从而减轻了根服务器的负载并使您的查询加载速度更快。 许多 ISP、公司、大学,甚至您自己的计算机都会保留最近 DNS 查询的缓存。 例如,如果您正在寻找 google.com,那么您的计算机很可能已经存储了 IP 地址。 但是,如果您正在寻找一个您从未访问过的网站,那么您附近或公司中的其他人可能已经在那里,并且查询和信息只是存储在您的 ISP 的 DNS 服务器中。

如果没有 DNS,我们每个人都必须记住或写下我们想要访问的每个网站和计算机的 IP 地址。 幸运的是,DNS 是一个非常有弹性、可靠和令人印象深刻的工程,它可以跟踪我们所有的网站和我们的通信,所以我们不必这样做。