1.什么是DNS

        DNS作为最基本的网络服务,全称为Domain Name System(域名服务系统),DNS的作用是为了将容易记住的主机域名解析为主机的地址,而不用去记忆无规律的IP地址。我们现在所有的应用都是基于DNS,现阶段DNS故障或是伪故障也曾出不穷,直接导致我们的很多应用无法正常使用,比如无法购网、发不了邮件、玩不了游戏等。那么DNS到底是个什么东西呢?

    根域:根域顾名思义就是域名系统的根,用”.”表示,而我们在平常使用域名过程中省略这个”.“。由于TCP/IP的不足,全球只能有13台逻辑根域服务器,10台在美国,2台在欧洲,1台在日本。这13台根域服务器中名字分别为”A”至”M”,使用任播技术在全球放置这13个根域系统的镜像服务器,方便世界各地用户的域名解析服务。目前这13台根域服务器由ICANN(互联网名字与数字分地址分配机构)管理和维护。

   顶级域:顶级域就是根域的子域,也叫一级域,基本有两种划分标准:

               1.按行业或组织性质,例如:com、net、org等。

               2.按国家地址区分,例如:us、cn、jp、tw、kr等。

  当然一级域下面还有二级域、三级域等,如下图。当然从下图中也看可看出域名服务系统的基本原则是只对其子域负责,就是根域只知道顶级域的存在,顶级域只知道二级域的存在

 

2.DNS工作原理之简单理解

       DNS工作过程如下图所示,某用户要访问debian.linuxsir.org主机上的资源,用户(左下角)无法知道该这是哪一台主机,用户主机就向DNS服务器发送DNS查询请求,DNS服务器经过查询后将debian.linuxsir.org主要的IP地址返回给用户主机,用户主机直接使用返回的IP地址访问debian.linuxsir.org主机。

                    

 

图片来源于google搜索

3.DNS工作原理之完整DNS工作原理

   DNS工作主要有迭代和递归两种工作机制,我们分别说明一下。

迭代:假设我们的客户机m.xyz.com要访问y.abc.com这台主机.注意:我们省略了域名最后面的一个”.”.

        

 

       1.客户机查询本地的hosts文件,如果有对应主机y.abc.com主机的IP地址,则直接访问该主机。

       2.客户机的hosts文件中没有主机y.abc.com的IP地址,则向本地DNS服务器dns.xyz.com发送DNS查询请求。本地域名服务器查询本地的高速缓存,查看是否有该主机的IP地址,有则返回该主机IP地址给客户机,并标记为非权威服务器应答。

       3.本地域名服务器中如果缓存中没有,本地DNS服务器会从配置文件中读取13台根域服务器的地址,并向其中一台发出请求。

       4.根域服务器收到DNS请求,发现自己不知道这台主机的IP地址,但是知道.com域的NS服务器的地址,就将.com域的NS记录发送给客户端,让本地域名服务器向.com的域名服务器查询。

       5.本地的DNS服务器根据收到地址向.com域的域名服务器查询,.com域名服务器发现自己不知道y.abc.com主机的IP地址,但是它知道.abc.com域的NS服务器地址,就将.abc.com域的NS服务器地址发送给本地的DNS服务器。 

       6.本地DNS服务器收到后向.abc.com域的NS服务器发送查询请求,.abc.com域的NS服务器收后查到y.abc.com是自己域中的一台主机,然后将这台主机的IP地址发送给本地域名服务器,并且标记为权威服务器应答。

       7.当地DNS服务器收到将该地址发送给客户机,并且将该记录存在自己的高速缓存中。

       8.客户机使用查询到的IP地址即可访问y.abc.com主机。

    递归:递归就是收到查询请求的服务器会一层一层的主动查询,然后一层一层的将查询结果返回给客户机,所以这每一次的查询就是递归查询,递归查询得到的答案都是非权威服务器应答。由于这种机制会增加DNS服务器的负载,所以很少使用这种机制,一般在公用的DNS,例如电信的222.222.222.222和google的8.8.8.8都是类似的递归方式工作,这样的服务器直接将最终结果告诉用户。