什么是域名系统? 它是如何工作的?
已发表: 2021-07-04DNS 是互联网的电话簿!
计算机通过数字(IP 地址)相互连接和通信以发送和接收信息。 每个连接到互联网的设备都有一个唯一的地址作为身份,其他设备使用它来识别和通信。
相比之下,人类使用他们的名字相互交流,这比打电话给某人更容易记住。
引入域名系统(DNS) 是为了弥合人与计算机之间的通信鸿沟。 DNS 将名称解析为数字,直接将人类友好的域名解析为计算机友好的 IP 地址。

什么是域名?
域名是识别互联网上特定资源的唯一字符串。 它表示当前正在请求哪个 Web 应用程序服务器。 尽管您还没有听说过域名,但您可能已经使用过无数个域名。 是的! google.com 、 yahoo.com 、 geekflare.com等都是域名。

什么是 DNS?我们为什么需要它?
人类通过浏览器使用 amazon.com、geekflare.com 等域名在线访问信息。 但是 Web 浏览器只能通过Internet 协议地址(IP 地址)进行通信。
DNS 通过将提供的域名转换为其各自的 IP 地址来帮助我们,以便浏览器可以加载请求的资源。

现在,让我们打个比方来演示 DNS 的需求:
如果您想拨打某人的电话,请先拿起您的电话,然后滚动或搜索已保存的联系人列表,然后拨打电话。
即使我们只能通过电话号码给某人打电话,也很难为我们所有的联系人记住他们。 这是我们在电话簿中使用姓名保存手机号码的主要原因。
DNS 使用相同的机制,假设它有一个数据库,其中包含具有相应域名的 IP 地址列表。
在当今世界,万维网上有大约 15 亿多个网站。 我们在日常生活中会用到其中的一些。 不可能记住所有站点的 IP 地址。 DNS 记住它们是为了让我们的生活更轻松。
它是如何工作的?
当用户在浏览器中输入 URL(域)时,比如 geekflare.com,浏览器需要找到 Google 的 IP 地址才能连接到它。 从给定域名中查找 IP 地址的过程称为DNS 解析。

计算机通过 IP 地址而不是域名识别网站位置。 当您输入 geekflare.com 时,浏览器会进行 DNS 查找以获取相应的 IP 地址,然后将我们的请求转发到 Geekflare 服务器,该服务器将 Geekflare 的登录页面发回。
DNS 查找发生在幕后的Web 浏览器中,不需要输入 geekflare.com 的用户进行交互。
要获取网站的 IP 地址,请在命令提示符或终端中尝试以下命令:
nslookup www.example.com您可以直接在浏览器中输入此结果的 IP 地址。 但是有些网站可能已经屏蔽了直接IP访问,您将无法获得预期的结果。
DNS 工作流程
现在,我们知道每次键入域名时都会请求一个 IP 地址。 让我们看看这个过程是如何发生的。
当在浏览器中输入域名以获取其 IP 地址时,它首先会在本地缓存中查找。 此本地缓存数据可能在以下两个位置中的任何一个可用:
- Web 浏览器缓存。
- 操作系统的缓存。

在DNS查找查找IP的过程中,当请求的域名没有可用的缓存数据时,一组DNS服务器协同工作来查找IP地址。
与远程 DNS 服务器的过度通信是一个耗时的过程,会导致性能降低。 为了防止这种情况,生成的 IP 地址将存储在操作系统缓存、浏览器缓存、DNS 解析器缓存中。
DNS 服务器的类型
DNS 服务器有四种类型:
- 递归解析器
- 根域名服务器
- 顶级域 (TLD) 名称服务器
- 权威域名服务器
让我们以这些 DNS 服务器如何通过相互协调来工作为例:
假设您需要一本书,因此您去当地书店购买,然后通过告诉店主您想要的书来联系店主,您充当客户,店主是递归解析器。
然后所有者去查看指向不同机架集 ( TLD ) 的商店索引(根名称服务器)。

找到合适的书架后,他会转到那个特定的书架 ( TLD ),并尝试找到有书可用的完美书架(权威名称服务器),并找到客户要求的合适书。
DNS递归解析器
如果 IP 在本地缓存数据中不可用,它会将请求转发到DNS 递归解析器,也称为 DNS递归器。 这种将请求发送到 DNS Recursor 以查找 IP 的方法称为DNS 查询。
DNS 递归器是一个特殊的服务器,用于接收客户端的 DNS 查询请求,并在需要时发出一些额外的请求,以满足请求的客户端。
它通常是您的Internet 服务提供商(ISP) 的 DNS 服务器。

您的 ISP 提供的这些 DNS 服务器也将在其数据库中缓存。 如果给定域的预期 IP 位于缓存内存中,那么它将简单地将其提供给请求的客户端。
否则,在查找 IP 时会发生以下步骤:
- DNS Recursor 将请求发送到根名称服务器。 ( DNS Recursor → Root Nameserver )
- 根域名服务器不会有域名的IP信息,但是会提供对应的TLD服务器的信息,可以帮助我们找到。 (根域名服务器 → DNS 递归)
- 现在,递归器向 TLD 服务器询问所提供域的 IP。 ( DNS Recursor → TLD 服务器)
- TLD服务器会给出对应的拥有IP的权威域名服务器的信息,是DNS查询的最后一站。 ( TLD 服务器 → DNS 递归)
- 这时递归者向权威服务器询问域名的IP地址。 ( DNS Recursor → 权威域名服务器)
- 最后,权威域名服务器找到给定域名的IP地址并将其发送给递归者。 (权威域名服务器 → DNS Recursor )
- 最后,递归器将结果存储在其缓存数据库中,并将 IP 地址发送回请求的客户端。 ( DNS 递归 → 客户端)
根名称服务器
根域名服务器(又名'.' nameserver )是域翻译过程的第一步。 让我们假设收到的请求是www.google.com,现在根名称服务器将搜索适当的.com TLD 服务器并将该 TLD 服务器 IP 发送到递归。
根名称服务器位于域层次结构的顶部。 递归解析器不知道如何将请求分派到根服务器。
因此,每个递归解析器都配置了一个包含 13 个 IP 根服务器地址的列表。 每当发生 DNS 查找时,递归解析器的第一次通信将与这 13 个地址中的一个进行通信。

全球有 1300 多个可用的根服务器,由 12 个不同的组织运营。 但是它们只能通过这 13 个数字地址访问。
由于只有 13 个根服务器 IP 地址,因此在任何给定时间从任何单个位置只能看到 13 个根名称服务器。
顶级域名服务器
顶级域名服务器维护共享公共扩展名的所有域名的信息。 这是查找IP地址的第二步。
随后,TLD 服务器将从 DNS 递归检查收到的域名 ( google.com ) 并搜索适当的权威名称服务器。
在找到 google.com 的权威服务器后,它将其 IP 地址发送回 DNS 递归。

那里有不同类型的 TLD,其中一些是:
- gTLD – 通用 TLD(.com、.net、.org 等)
- ccTLD – 国家代码 TLD(.in、.us、.uk 等)
- sTLD – 赞助的 TLD(.edu、.gov 等)
权威域名服务器
权威名称服务器包含特定于特定域的信息。 它是 DNS 查询旅程的最后一站。
要求权威服务器提供域的A 记录(代表“地址”记录),其中包含托管网站的服务器的 IP 地址。
如果它有请求的域记录的信息,它会将其IP地址返回给递归器,递归器再将其返回给请求的客户端。
结论
域名系统是互联网的重要方面之一。 这是连接到 Internet 的第一步。 它确保互联网不仅用户友好,而且有助于有效加载请求的内容。
没有DNS,当我们生活在拥有无数网站的互联网世界时,这对我们所有人来说将是一个沉重的负担。
