DNS是一个由分层的DNS服务器实现的分布式数据库,它主要记录了域名与IP地址的对应关系。

我们平时访问网站,都是输入域名,而不是IP地址,而域名被解析为对应IP地址这一步,就是由DNS实现的。

它还提供了一些其他的服务,比如说将一个域名映射到多个IP地址上,用于减轻单个服务器的压力。

DNS架构

它是一个分布式的数据库,且分多层次。

不采用单点是因为如果单点故障,那么整个因特网就不能用,而且单点无法承载那么大的请求量,存储那么多的数据。如果采用单点,还会因为地理位置原因导致很大的时延。

分层

DNS分为根域名服务器,顶级域名服务器,权威域名服务器和本地域名服务器。

一个用户在浏览器中输入一个域名,解析的过程大致如下(迭代查询):

1、向本地域名服务器发送请求。

2、本地域名服务器向根域名服务器发送请求,根域名服务器返回顶级域名服务器的地址。

3、本地再向顶级域名服务器发起请求,顶级域名服务器返回权威域名服务器的地址,到这一步就可以获取到IP。

4、本地域名服务器将获取到的ip返回给用户浏览器。

test

递归查询:

image-20230414110639339

DNS缓存

某一个DNS服务器接受一个DNS回答时,它可以将映射存储在本地的存储器中,下一次如果有同样的映射,可以直接返回而不用去往下一层请求。

但是该缓存并不是永久存在的,过一段时间会被清除。