DNS,也叫域名系统,主要包括了以下两点:
网络中的主机往往有多种方式可以进行标识,常用的两种一种是主机名,另一种是IP地址。事实上主机名无法定位一台主机在网络中的位置,IP地址则可以。
当我们访问一个网站时,本质上还是对IP地址的访问。那么如何通过主机名找到其对应的IP地址,就是DNS帮我们做的事。
DNS服务器结构层次分为三层,分别是:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xwNM6gUx-1658938364075)(E:/Blog/lansg/source/img/image-20220727175402632.png)]](https://1000bd.com/contentImg/2022/07/31/170359978.png)
还有一种DNS服务器称为本地DNS服务器,它不属于以上结构却十分重要。每个ISP(一所大学、一个公司等)都有一台本地DNS服务器。当主机发送DNS请求时,会先发往本地DNS服务器,它起着代理的作用,然后将该请求转发到DNS服务器层次结构中。
当客户端主机对服务器主机发送请求时,DNS对服务器主机IP的查询步骤如下:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wGubMRq5-1658938364077)(E:/Blog/lansg/source/img/image-20220727181746504.png)]](https://1000bd.com/contentImg/2022/07/31/170400117.png)
1.“客户端主机”向本地DNS服务器进行查询“服务器主机”IP地址
2.本地DNS服务器向根DNS服务器进行查询
3.根DNS服务器返回顶级域DNS服务器的IP地址
4.本地DNS服务器向顶级域DNS服务器进行查询
5.顶级域DNS服务器返回权威DNS服务器的IP地址
6.本地DNS服务器向权威DNS服务器进行查询
7.权威DNS服务器中存储着“服务器主机”的IP地址,于是返回给本地DNS服务器
8.本地DNS服务器将解析后的IP地址返回给“客户端主机”
看上去比较繁琐,但实际上DNS是有缓存的,所以并不会经历那么多步骤。
为了减少网络中DNS报文的数量,DNS广泛使用了缓存。当某个DNS服务器收到一个DNS回答后,它能将该回答中的信息缓存在本地存储器中。
本地的DNS服务器中,不仅可以缓存“服务器主机”的ip地址,也可以缓存权威DNS服务器和顶级域DNS服务器的地址,所以在实际查询中,经常会绕过查询链中的根DNS服务器。
但由于主机名和IP地址的映射不是永久的,所以DNS服务器在一段时间后就会丢弃缓存的信息。