什么是域名系统? 它是如何工作的?

已发表: 2021-07-04

DNS 是互联网的电话簿!

计算机通过数字(IP 地址)相互连接和通信以发送和接收信息。 每个连接到互联网的设备都有一个唯一的地址作为身份,其他设备使用它来识别和通信。

相比之下,人类使用他们的名字相互交流,这比打电话给某人更容易记住。

引入域名系统(DNS) 是为了弥合人与计算机之间的通信鸿沟。 DNS 将名称解析为数字,直接将人类友好的域名解析为计算机友好的 IP 地址。

域名系统

什么是域名?

域名是识别互联网上特定资源的唯一字符串。 它表示当前正在请求哪个 Web 应用程序服务器。 尽管您还没有听说过域名,但您可能已经使用过无数个域名。 是的! google.comyahoo.comgeekflare.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 查询解析器

在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 服务器。

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 个地址中的一个进行通信。

DNS 域级别层次结构
图片来自 netnod

全球有 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,当我们生活在拥有无数网站的互联网世界时,这对我们所有人来说将是一个沉重的负担。