DNS如何工作?
DNS解析过程涉及将主机名(例如www.gingerdoc.com) 转换为计算机友好的IP地址(例如192.168.1.1)。IP地址已分配给Internet上的每个设备,该地址对于找到合适的Internet设备是必不可少的-就像使用街道地址来查找特定的家庭一样。当用户想要加载网页时,必须在用户在其网络浏览器(gingerdoc.com)中键入的内容与查找gingerdoc.com网页所需的机器友好地址之间进行转换。
为了了解DNS解析背后的过程,了解DNS查询必须经过的不同硬件组件非常重要。对于Web浏览器,DNS查找“在幕后”进行,除了初始请求外,不需要用户计算机的任何交互。
加载网页涉及4个DNS服务器:
- DNS递归 -递归可以看作是一个图书馆员,被要求去图书馆的某个地方查找特定的书。DNS递归服务器是一种服务器,旨在通过Web浏览器等应用程序从客户端计算机接收查询。然后,通常,递归程序负责发出其他请求,以满足客户端的DNS查询。
- 根名称服务器 – 根服务器是将人类可读的主机名转换(解析)为IP地址的第一步。可以认为它就像是图书馆中的索引,指向不同的书架-通常,它用作对其他更特定位置的引用。
- TLD名称服务器 -顶级域名服务器(TLD)可以被视为图书馆中特定的书架。此名称服务器是搜索特定IP地址的下一步,它托管主机名的最后一部分(在gingerdoc.com中,TLD服务器为“ com”)。
- 权威名称服务器 -该最终名称服务器可以看作是一本书架上的字典,在其中可以将特定名称翻译成其定义。权威名称服务器是名称服务器查询中的最后一站。如果权威名称服务器可以访问请求的记录,它将把请求的主机名的IP地址返回给发出初始请求的DNS递归器(馆员)。
权威DNS服务器和递归DNS解析器之间有什么区别?
这两个概念都指的是DNS基础结构必不可少的服务器(服务器组),但是每个服务器执行不同的角色,并且位于DNS查询管道内的不同位置。考虑差异的一种方法是递归解析器在DNS查询的开始,而权威名称服务器在末尾。
递归DNS解析器
递归解析器是一种计算机,它响应来自客户端的递归请求并花费时间来跟踪DNS记录。它通过发出一系列请求直到到达请求记录的权威DNS名称服务器(或超时或在找不到记录时返回错误)来进行此操作。幸运的是,递归DNS解析程序并不一定总是需要发出多个请求才能跟踪响应客户端所需的记录;缓存是一种数据持久性过程,它通过在DNS查找中更早地提供请求的资源记录来帮助缩短必要的请求。
权威DNS服务器
简而言之,权威的DNS服务器是实际上拥有并负责DNS资源记录的服务器。这是位于DNS查找链底部的服务器,它将使用查询的资源记录进行响应,最终使Web浏览器发出请求以达到访问网站或其他Web资源所需的IP地址。权威的名称服务器可以满足其自身数据的查询,而无需查询其他来源,因为它是某些DNS记录的最终真实来源。
值得一提的是,在查询针对某个子域名(例如blog.gingerdoc.com )的实例中,将在授权名称服务器之后的序列中添加一个额外的名称服务器,该名称服务器负责存储子域名的CNAME记录。
关于权威DNS和root根DNS服务器请跳转阅读此文:DNS根服务器
DNS查找的步骤是什么?
对于大多数情况,DNS与将域名转换为适当的IP地址有关。要了解此过程的工作方式,它有助于在DNS查找从网络浏览器行进通过DNS查找过程并再次返回时进行跟踪。让我们看一下步骤。
注意:通常,DNS查找信息将被缓存在查询计算机内部的本地或DNS基础结构的远程中。DNS查找通常有8个步骤。缓存DNS信息后,将从DNS查找过程中跳过步骤,从而使其更快。下面的示例概述了什么都不缓存时的所有8个步骤。
DNS查找的8个步骤:
- 用户在网络浏览器中键入“ gingerdoc.com”,查询进入Internet,并由DNS递归解析器接收。
- 然后,解析程序查询DNS根名称服务器( . )(注意括号里面的点,这是根DNS的标识)。
- 根服务器使用顶级域名(TLD)DNS服务器(例如.com或.net)的地址响应解析器,该地址存储其域名的信息。搜索gingerdoc.com时,我们的请求指向.com TLD。
- 解析程序向.com TLD发出请求。
- TLD服务器将使用域名称服务器gingerdoc.com的IP地址进行响应。
- 最后,递归解析器将查询发送到域名的名称服务器。
- gingerdoc.com的IP地址从名称服务器返回到解析器。
- 然后,DNS解析器使用最初请求的域名的IP地址响应Web浏览器。
- 一旦DNS查找的8个步骤返回了gingerdoc.com的IP地址,浏览器便可以请求该网页:
- 浏览器向IP地址发出HTTP请求。
- 该IP的服务器返回要在浏览器中呈现的网页(步骤10)。
什么是DNS解析器?
DNS解析器是DNS查找的第一站,它负责处理发出初始请求的客户端。解析器启动查询序列,最终导致将URL转换为必要的IP地址。
注意:典型的未缓存DNS查找将涉及递归查询和迭代查询。
区分递归DNS查询和递归DNS解析器很重要。该查询是指对需要解析查询的DNS解析器的请求。DNS递归解析器是接受递归查询并通过发出必要请求来处理响应的计算机。
DNS查询的类型是什么?
在典型的DNS查找中,会出现三种类型的查询。通过结合使用这些查询,DNS解析的优化过程可以减少行进距离。在理想情况下,缓存的记录数据将可用,从而允许DNS名称服务器返回非递归查询。
3种类型的DNS查询:
- 递归查询 -在递归查询中,DNS客户端要求DNS服务器(通常是DNS递归解析器)将使用请求的资源记录或错误消息(如果解析器找不到该记录)来响应客户端。
- 迭代查询 -在这种情况下,DNS客户端将允许DNS服务器返回其可能的最佳答案。如果查询的DNS服务器与查询名称不匹配,它将返回对域名空间较低级别的DNS服务器的引荐。然后,DNS客户端将查询引荐地址。此过程将继续使用查询链中的其他DNS服务器,直到发生错误或超时。
- 非递归查询 -通常在DNS解析器客户端查询DNS服务器以获取其有权访问的记录(因为该记录具有权威性或该记录存在于其缓存中)时发生。通常,DNS服务器将缓存DNS记录,以防止额外的带宽消耗和上游服务器上的负载。
什么是DNS缓存?DNS缓存在哪里发生?
缓存的目的是将数据临时存储在某个位置,从而提高数据请求的性能和可靠性。DNS缓存涉及将数据存储在更靠近请求客户端的位置,以便可以更早地解决DNS查询,并且可以避免在DNS查找链下游的其他查询,从而缩短了加载时间并减少了带宽/ CPU消耗。DNS数据可以缓存在多个位置,每个位置都将存储DNS记录一段由生存时间(TTL)确定的时间。
浏览器DNS缓存
现代Web浏览器默认情况下设计为将DNS记录缓存一定的时间。目的很明显;DNS缓存距Web浏览器越近,必须采取的处理步骤就越少,以便检查缓存并向IP地址发出正确的请求。当请求DNS记录时,浏览器缓存是检查请求记录的第一个位置。
在chrome中,您可以转到chrome://net-internals/#dns查看DNS缓存的状态。
操作系统(OS)级DNS缓存
操作系统级别的DNS解析器是DNS查询离开您的计算机之前的第二个也是最后一个本地停止位置。操作系统内部用于处理此查询的过程通常称为“存根解析器”或DNS客户端。当存根解析器从应用程序获取请求时,它首先检查其自己的缓存以查看其是否具有记录。如果没有,它将在本地网络外部将DNS查询(设置了递归标记)发送到Internet服务提供商(ISP)内部的DNS递归解析器。
当ISP中的递归解析器接收到DNS查询时,就像前面的所有步骤一样,它还将检查所请求的主机到IP地址的转换是否已经存储在其本地持久性层中。
递归解析器还具有其他功能,具体取决于其缓存中的记录类型:
- 如果解析器没有A记录,但是具有权威名称服务器的NS记录,它将绕过DNS查询中的几个步骤,直接查询那些名称服务器。此快捷方式可防止从根服务器和.com名称服务器(在我们搜索example.com的情况下)查找,并有助于更快地解决DNS查询。
- 如果解析器没有NS记录,它将向TLD服务器(在本例中为.com)发送查询,而跳过根服务器。
- 万一解析器没有指向TLD服务器的记录,则解析器将查询根服务器。此事件通常在清除DNS缓存后发生。