# DNS 协议

DNS 协议属于应用层的服务。


# 域名

我们知道,一个完整的域名一般由多级域名组成,例如:

www.ceynri.cn

其中,cn 域名就属于顶级域名,ceynri 则是二级域名,而 www 则为三级域名。一般的,一般用户购买域名都是选择在不同顶级域名下的自定义二级域名,而三级甚至更多级的域名则由用户自行划分。


# DNS 查询流程

每一个域名都会对应一个相应的 ip 地址,从而达到用户无需记忆难记的公网 ip 地址也能和公网上的服务器进行连接。

但新的域名是不断出现的,每一个主机无法完整记录所有的域名于其 ip 地址的对应关系,实时维护每一个主机是不现实的,于是基于查询的 DNS 服务器就被构建提出。

我们设立一些 DNS 根服务器,对于任何的DNS 顶层服务器地址都有所记录。而 DNS 顶层服务器保证在该域名下申请的新域名所对应的 ip 地址,都会被记录到这些服务器中。

但是如果本地主机一无法解析域名就去请求 DNS 根服务器,带来的巨大服务器压力是无法想象的,这时就需要许许多多的本地 DNS 服务器来作为中间节点,对大部分常见的域名解析进行缓存记录。

本地 DNS 服务器如果记录了某域名的缓存,则无需再去查询其他 DNS 服务器;如果没有记录,则去迭代地访问 DNS 服务器,直到获得结果,然后将该结果保存在缓存中并返回给用户主机。


# 递归与迭代查询

在这过程中,客户端与本地 DNS 服务器的查询就是一个递归查询的过程,因为客户端只用向本地 DNS 服务器发起请求,然后就不用管接下来的问题,本地 DNS 服务器会保证找到结果或者查找失败后,再返回结果给客户端,所以称为递归查询

而本地 DNS 服务器则因为考虑到更高级的 DNS 服务器的压力问题,所以每次查询某高级 DNS 服务器,其返回的结果都是指向低级的 DNS 服务器地址,然后本地 DNS 服务器再去迭代地请求低级 DNS 服务器,所以称为迭代查询


上次更新: 2020/4/15 16:14:13