如何去理解“DNS服务器”的工作流程

大家在打电话的时候都有过这样的经验:

1、自己记得住号码的电话,直接就可以拨了

2、如果记不住的电话号码,就查找自己的电话本

3、如果记不住的电话号码,而电话本里也没有,那么就打114查询,而114会根据你提供的人的姓名或者是企业单位,告诉你对方的电话号码。

其实,DNS服务器的工作流程和这个差不多。

DNS,全名Domain Name System ,中文叫做“域名系统”。它提供的最常见的服务就是把域名转换为相应的IP地址。 我们在访问网站的时候,其核心不是访问的某个域名(俗话叫做“网址”),而是访问的是网站的IP,或者是发布网站的堡垒主机的IP。但是,IP地址这种一串数字,谁也不愿意去记,所以才有了域名,即“网址”这一说,用网址代替IP,这样,容易记。就像我们打电话,我们也是只愿意去记电话主人的名字,很少去记电话号码一样。 而域名如何跟IP联系起来,就要靠这个DNS服务器来解析了。

我们访问网页,实际上也是作了DNS的客户端,计算机都有一个缓存,当然,也可以缓存DNS解析记录。如果我们经常访问某个网址,DNS缓存就会将其解析结果记录下来。 就像是:我们经常打某人的电话,时间长了,电话号码就记住了。

在每台windows计算机,都有一个hosts文件,路径是C:\WINDOWS\system32\drivers\etc,这个文件就相当于是“DNS解析记录的‘电话本’”,用来存放我们手写的网址和对应的IP。但是,这个文件最好不要往里写入东西,因为写了它,可能造成DNS解析错乱。比如你在里面写入:111.111.111.111   www.sina.com。那么,你下次访问www.sina.com的时候,就不会到正确的新浪服务器上了,而是访问了IP:111.111.111.111 。

那么,当你的缓存也没有DNS解析记录,而hosts文件也没有相应记录呢?所以,就去找DNS服务器了。在电脑的TCP/IP协议里面,都会有一个“首选DNS服务器”这个选项,这个就是给你提供DNS解析的服务器的IP地址。当你用浏览器打开一个网址,比如www.sina.com的时候,计算机首先查看你的DNS缓存,如果没有的话,就检查hosts文件,如果没有,就将这个请求发送给首选DNS服务器,首选DNS服务器如果有www.sina.com的解析记录,就将这个记录发送给你;如果没有的话,就将你的请求通过转发器转发到别的DNS服务器,让它们通过域名的层次性来解析,最后将解析到的结果告诉你。

DNS服务器的解析,大概是这个流程:

 

1、客户机向首选DNS服务器请求网址www.sina.com.cn,如果首选DNS有记录,就直接发给客户机,如果没有,进行第二步,通过转发器或根提示转发给根域的DNS服务器

2、根域DNS服务器将结果传给首选DNS服务器,然后首选DNS服务器通过该结果查找二级域.cn、.jp等等,然后将查找到的结果.cn返回首选DNS服务器。

3、首先DNS查找到了.cn,然后再向下一级的DNS服务器查找.com.cn的,这级DNS服务器将查找的.com.cn结果返回首选DNS服务器

4、重复以上的步骤,逐渐缩小查找范围,继续找下一级的DNS服务器,最后找到www.sina.com.cn的公网发布地址,然后首选DNS讲查找到的结果交给客户机,客户机得到解析结果,开始访问www.sina.com.cn的网站服务器,同时将这个结果存入缓存。

最后要说一点:有些网站的IP地址可能发生变化,所以,最好在每次访问完网站或者关机的时候,清除一下DNS缓存,打开“开始-运行-输入cmd”调出命令行,然后在命令行里输入ipconfig /flushdns清除了DNS缓存,保证能够获得最正确的DNS解析。