1、什么是DNS
DNS(domain name service):域名解析服务;
提供的服务:
正向解析:将我们熟知的域名,解析为地址,方面网络上的通信;
逆向解析:将IP地址解析为域名,方便记忆。
软件服务:BIND(berkeley internet name domain)dns软件。
2、DNS域
DNS域名是以倒挂书树的方式存在的,分为:根域名、顶级域名、二级域名、子域、主机名称
![](https://i-blog.csdnimg.cn/blog_migrate/2266e4aa12be63fb7a37486443e428cb.png)
根域名:由‘.’表示,全世界共13台
顶级域名:由国家和一些组织使用,例如:中国(CN);日本(JP)......
二级域名:在顶级域名下的个人或组织注册的,例如: baidu.com
子域:在已经注册的二级域名下的派生,例如:www.baidu.com
3、域名解析的工作原理
<1> 客户机提出域名解析请求,首先查询本机的域名缓存文件(/etc/resolv.conf),若该文件中存在,则直接解析,若该文件中不存在则发送解析请求到本地的域名服务器;
<2> 当本地的域名服务器收到请求后,先查询本地服务器的缓存,如果有该解析,则本地的域名服务器就直接把查询的结果返回;如果本地的缓存中没有该纪录,则本地域名服务器就直接把请求发给根域名服务器;
<3> 当根域名服务器收到解析请求时,根域名服务器会解析请求的地址,根据域名将其返回给本地域名服务器中含查询域(根的子域)的主域名服务器的地址;
<4> 本地服务器再向上一步返回的域名服务器发送请求,然后接受请求的服务器查询自己的缓存,如果没有该纪录,则返回相关的下级的域名服务器的地址;
<5> 重复第四步,直到找到正确的纪录;
<6> 本地域名服务器把返回的结果保存到缓存,以备下一次使用,同时还将结果返回给客户机。
其中域名的解析过程分为迭代查询和递归查询,递归查询:在本地之间的解析往往是递归查询,迭代查询:在dns服务器之间的查询为迭代查询。其中递归的查询只需要发送一条命令即可;迭代查询需要不断由查询主机发送命令去查询。同时递归查询可以得到准确的结果而,迭代查询只能得到一个参考是值,但递归查询是比较消耗资源的。