目录
1.什么是 DNS
2.分布式、层次数据库
A.什么是分布式?
B.什么是层次?
D.什么是根 DNS 服务器
E.顶级域 DNS 服务器
F.权威 DNS 服务器
3.本地 DNS 服务器
4.递归查询、迭代查询
A.图解DNS解析过程
B.解析过程当中的递归解析和迭代解析
5.DNS 缓存
6.以bilibili解析过程进行示例
A.bilibili请求的层次服务器分布
B.图解解析过程
1.什么是 DNS
- DNS 的作用就是将主机名转换成 IP 地址。
- DNS 是一个应用层协议,我们发送一个请求,其中包含我们要查询的主机名,它就会给我们返回这个主机名对应的 IP;
- DNS 是一个分布式数据库,整个 DNS 系统由分散在世界各地的很多台 DNS 服务器组成,每台 DNS 服务器上都保存了一些数据,这些数据可以让我们最终查到主机名对应的 IP。
所以 DNS 的查询过程,说白了,就是去向这些 DNS 服务器询问,你知道这个主机名的 IP 是多少吗,不知道?那你知道去哪台 DNS 服务器上可以查到吗?直到查到我想要的 IP 为止。
2.分布式、层次数据库
A.什么是分布式?
这个世界上没有一台 DNS 服务器拥有因特网上所有主机的映射,每台 DNS 只负责部分映射。
B.什么是层次?
DNS 服务器有 3 种类型:根 DNS 服务器、顶级域(Top-Level Domain, TLD)DNS 服务器和权威 DNS 服务器。它们的层次结构如下图所示:
D.什么是根 DNS 服务器
首先我们要明确根域名是什么,比如 www.baidu.com
,有些同学可能会误以为 com
就是根域名,其实 com
是顶级域名,www.baidu.com
的完整写法是 www.baidu.com.
,最后的这个 .
就是根域名。
根 DNS 服务器的作用是什么呢?就是管理它的下一级,也就是顶级域 DNS 服务器。通过询问根 DNS 服务器,我们可以知道一个主机名对应的顶级域 DNS 服务器的 IP 是多少,从而继续向顶级域 DNS 服务器发起查询请求。
E.顶级域 DNS 服务器
除了前面提到的 com
是顶级域名,常见的顶级域名还有 cn
、org
、edu
等。顶级域 DNS 服务器,也就是 TLD,提供了它的下一级,也就是权威 DNS 服务器的 IP 地址。
F.权威 DNS 服务器
权威 DNS 服务器可以返回主机 - IP 的最终映射。
3.本地 DNS 服务器
- 严格来说,本地 DNS 服务器并不属于 DNS 的层次结构,但它对 DNS 层次结构是至关重要的。
-
每个 ISP 都有一台本地 DNS 服务器,比如一个居民区的 ISP、一个大学的 ISP、一个机构的 ISP,都有一台或多台本地 DNS 服务器。当主机发出 DNS 请求时,该请求被发往本地 DNS 服务器,本地 DNS 服务器起着代理的作用,并负责将该请求转发到 DNS 服务器层次结构中。
4.递归查询、迭代查询
A.图解DNS解析过程
接下来就让我们通过一个简单的例子,看看 DNS 的查询过程是怎样的,看看客户端、本地 DNS 服务器、DNS 服务器层次结构之间是如何交互的。
如下图,假设主机 m.n.com
想要获取主机 a.b.com
的 IP 地址,会经过以下几个步骤:
-
首先,主机
m.n.com
向它的本地 DNS 服务器发送一个 DNS 查询报文,其中包含期待被转换的主机名a.b.com
; -
本地 DNS 服务器将该报文转发到根 DNS 服务器;
-
该根 DNS 服务器注意到
com
前缀,便向本地 DNS 服务器返回com
对应的顶级域 DNS 服务器(TLD)的 IP 地址列表。意思就是,我不知道
a.b.com
的 IP,不过这些 TLD 服务器可能知道,你去问他们吧; -
本地 DNS 服务器则向其中一台 TLD 服务器发送查询报文;
-
该 TLD 服务器注意到
b.com
前缀,便向本地 DNS 服务器返回权威 DNS 服务器的 IP 地址。意思就是,我不知道
a.b.com
的 IP,不过这些权威服务器可能知道,你去问他们吧; -
本地 DNS 服务器又向其中一台权威服务器发送查询报文;
-
终于,该权威服务器返回了
a.b.com
的 IP 地址; -
本地 DNS 服务器将
a.b.com
跟 IP 地址的映射返回给主机m.n.com
,m.n.com
就可以用该 IP 向a.b.com
发送请求啦。
B.解析过程当中的递归解析和迭代解析
主机 m.n.com
向本地 DNS 服务器 dns.n.com
发出的查询就是递归查询,这个查询是主机 m.n.com
以自己的名义向本地 DNS 服务器请求想要的 IP 映射,并且本地 DNS 服务器直接返回映射结果给到主机。
而后继的三个查询是迭代查询,包括本地 DNS 服务器向根 DNS 服务器发送查询请求、本地 DNS 服务器向 TLD 服务器发送查询请求、本地 DNS 服务器向权威 DNS 服务器发送查询请求,所有的请求都是由本地 DNS 服务器发出,所有的响应都是直接返回给本地 DNS 服务器。
5.DNS 缓存
为了让我们更快的拿到想要的 IP,DNS 广泛使用了缓存技术。DNS 缓存的原理非常简单,在一个 DNS 查询的过程中,当某一台 DNS 服务器接收到一个 DNS 应答(例如,包含某主机名到 IP 地址的映射)时,它就能够将映射缓存到本地,下次查询就可以直接用缓存里的内容。当然,缓存并不是永久的,每一条映射记录都有一个对应的生存时间,一旦过了生存时间,这条记录就应该从缓存移出。
事实上,有了缓存,大多数 DNS 查询都绕过了根 DNS 服务器,需要向根 DNS 服务器发起查询的请求很少。
6.以bilibili解析过程进行示例
A.bilibili请求的层次服务器分布
B.图解解析过程
注:本文大量引用稀土掘金博主“我是陆小北”相关文章,侵权请联系作者删除