企业宣传,产品推广,广告招商,广告投放联系seowdb

DNS的工作原理是什么 小米汽车1面

不论你是否从事IT行业,和网络打交道是在所难免,比如,微信,抖音,网购比比皆是,当我们在浏览器里面输入一个域名,浏览器是如何定位到远程的服务器?其中会经历哪些过程?今天我们就来聊一聊其背后的原理?

一、什么是DNS?

其实,当用户在浏览器输入“example.com”进行访问时,浏览器会自动向 DNS服务器发送请求,DNS解析器将域名转换为IP地址,然后将 IP返回给浏览器,浏览器再访问该 IP,因此,整个过程中用户无需知道网站的 IP地址,却可轻松访问网站。如下图:

在上述描述中,有一个核心点是 DNS,那么,DNS是什么呢?

DNS是 Domain Name System的首字母缩写,翻译为域名系统,域名和IP地址的映射关系都保存在 DNS服务器上,因此,DNS是互联网的电话簿。

网上有很多公用的 DNS服务器,比如 Google的“8.8.8.8”,Cloudflare 公司的“1.1.1.1”等。

二、DNS工作原理

要了解 DNS的工作原理,需要从 DNS服务器和 DNS查询过程两个主要点来进行讲解。

在整个 DNS工作过程中,会经历 4种 DNS服务器,整个请求过程如下图:

1.DNS解析器

DNS解析器是一种服务器,负责整个域名转IP的过程,当收到客户端 DNS查询请求时,DNS解析器会根据“DNS查询类型”来查询对应的 IP地址。因此,递归 DNS解析器是域名转IP的总负责人。

2.根域名服务器

根域名服务器是将人类可读的域名转换为 IP地址的第一步,它管理着根域名,根域名用一个点(.)表示,因此,可以把根域名服务器理解成一个索引。

全球共有 13组根域名服务器,它们以英文字母“A到M”依序命名,网域名称格式为“A~M.root-servers.net”,具体信息如下表:

3.顶级域名服务器

顶级域名服务器(top-level domain,简写 TLD),托管着一些顶级域名(比如 .com,.io, .net),它是域名转IP的第二步,可以把顶级域名服务器理解成一个二级索引。

4.权威性域名服务器

权威性域名服务器(Authoritative nameserver),它是真实存储具体域名的服务器,比如(example.com,redis.io)等,它是域名转IP的最后一步,如果权威性域名服务器能查询记录,则返回 IP地址,否则做以下处理:

因此,可以把权威性域名理解成一个数据行。

需要注意:在某些情况下,主域名的权威名称服务器可能并不直接存储子域名的记录,而是委托给另一个专门管理子域名的名称服务器。比如,CNAME记录,子域名的记录指向另一个域名,因此,CNAME记录需要额外的查询步骤,以找到实际的 IP地址或进一步的 DNS记录。

DNS是一个分布式系统,内部的域名服务器以及其保存的域名是一个树状结构,如下图:

5.DNS查找过程

DNS 查找主要有以下 8个步骤:

上述 8个 DNS查找步骤可以返回“yuanjava.com”的 IP地址后,最后,浏览器使用该 IP地址向服务器发出 HTTP请求,获取对应的数据显示在网页中。

整个过程如下图:

三、DNS查询类型

在上述 DNS工作原理讲解时,我们提到了 DNS查询类型,那么 DNS查询类型有哪些呢?

通常来说,DNS查询类型有 3种:

1.递归查询

在递归查询中,DNS客户端要求 DNS服务器(通常是递归解析器)返回请求的资源记录或错误消息。如果递归解析器找不到记录,就会返回一个错误。

2.迭代查询

在迭代查询中,DNS客户端允许 DNS服务器返回它能提供的最佳答案。如果查询的 DNS服务器没有匹配的记录,它会返回一个指向更低层域名空间的 DNS服务器的引用,客户端再向引用地址发出查询。这个过程会继续,直到找到结果或出现错误或超时。

3.非递归查询

非递归查询通常发生在 DNS解析器客户端查询 DNS服务器时,DNS服务器能直接查到记录,要么因为它是该记录的权威服务器,要么因为该记录存在于它的缓存中。通常,DNS服务器会缓存 DNS记录以减少带宽消耗和上游服务器的负载。

DNS解析器通过组合上述 3种查询方式,可以优化 DNS解析过程和缩短传输距离。在理想情况下,可以使用缓存的记录数据,从而使 DNS 域名服务器能够返回非递归查询。

四、DNS查询实例演示

为了更好的演示域名的整个 DNS查询过程,本文通过对我的技术博客www.yuanjava.com这个域名进行 DNS解析,使用到的工具有dig命令,然后使用 3种方式进行解析:

在进入正式的解析之前,我们先来了解下 dig指令。

dig(Domain Information Groper,域名信息搜索器)是一个用于查询 DNS信息的命令,dig可以执行各种类型的 DNS查询,并显示详细的响应信息,包括查询的解析过程、响应时间、返回的记录等。

dig的基本语法:

dig @server name type

使用示例

(1)查询记录

dig yuanjavacom # 返回 yuanjavacom的 IPv4地址记录dig yuanjavacom # 返回 yuanjavacom的IPv6地址记录dig yuanjavacom # 返回 yuanjavacom的邮件交换记录dig @ yuanjavacom #指定 Google公共的 dig @ yuanjavacom #指定 cloudflare公共的 

(2)结果返回

dig的输出通常包含以下 6个部分:

讲解完 dig指令后,我们正式进入 DNS解析的实战演习:

2.使用指定的DNS服务器

首先,使用 13台根域名服务器的任意一台进行解析,这里以”198.41.0.4”为例,指令如下:

dig @ yuanjavacom

指令执行如下图:

因为根域名服务器给不了”yuanjava.com”的 IP地址,所以执行结果中没有 ANSWER SECTION,但是返回了.com对应的顶级域名服务器的 IPv4和 IPv6,选择第一台顶级域名服务器的IPv4,继续解析,指令如下:

dig @ yuanjavacom

指令执行如下图:

顶级域名服务器也给不了”yuanjava.com”的 IP地址,但返回了权威服务器的 IP地址,选择第一台权威域名服务器的 IP,继续解析,指令如下:

dig @ yuanjavacom

指令执行如下图:

最后,权威域名服务器查到了域名对应的 IP,到此,DNS域名解析的整个过程我们就通过手动的方法进行了演示。

3.使用公开的DNS服务器

使用公开的 DNS服务器,会屏蔽内部域名服务器查询过程,最终给出 IP地址,分别执行下面 2个指令:

dig @ yuanjavacomdig @ yuanjavacom

指令执行结果截图如下(截图中没有 Additional部分):

4.使用运营商的DNS服务器

除了上述两种方式,我们还可以使用运营商自动配置的 DNS服务器,比如下面为家庭 wifi网络的示例截图:

五、DNS缓存

因为一个域名对应的 IP地址变动的频率很低,所以,可以将域名和 IP的映射关系缓存起来并且设置一定的失效时间,从而提高数据请求的性能和可靠性。那么,DNS缓存有哪些呢?

1.浏览器的DNS缓存

在 Chrome浏览器中,可以通过chrome://net-internals/#dns 查看 DNS缓存的状态,如下图:

2.操作系统的DNS缓存

除了浏览器会设置 DNS缓存外,在每一层的域名服务器也会设计对应的 DNS缓存,缓存查询的过程如下:

六、总结

本文通过在浏览器里面输入一个域名为例,详细地分析了 DNS的工作原理,另外,为了更好地理解 DNS域名解析过程,我们通过 3种方式来手动演示整个过程。

© 版权声明
评论 抢沙发
加载中~
每日一言
不怕万人阻挡,只怕自己投降
Not afraid of people blocking, I'm afraid their surrender