DNS原理
一、DNS是什么
DNS Domain Name System 域名系统,它是由解析器和域名服务组成的
域名和IP地址相互映射的一个分布式数据库
不用去记住能够被机器直接读取的IP
二、DNS解析过程
1、用户在浏览器中输入www.baidu.com
2、DNS做域名解析,浏览器自己也有缓存,如果有直接拿缓存ip,windos也会找host文件域名对应的ip,如果有的话就直接返回ip
如果没有则走DNS域名解析对应的ip并且缓存,通过这种循环迭代的查询相应的ip
3、用户在得到IP地址后,向该地址所指向的网站的服务器进行访问
解释DNS域名解析的过程:
打开浏览器,输入一个域名。比如输入www.163.com,这时,你使用的电脑会发出一个DNS请求到本地DNS服务器。
本地DNS服务器一般都是你的网络接入服务器商提供,比如中国电信,中国移动。
查询www.163.com的DNS请求到达本地DNS服务器之后,本地DNS服务器会首先查询它的缓存记录,如果缓存中有此条记录,就可以直接返回结果。
如果没有,本地DNS服务器还要向DNS根服务器进行查询。
根DNS服务器没有记录具体的域名和IP地址的对应关系,而是告诉本地DNS服务器,你可以到域服务器上去继续查询,并给出域服务器的地址。
本地DNS服务器继续向域服务器发出请求,在这个例子中,请求的对象是.com域服务器。
.com域服务器收到请求之后,也不会直接返回域名和IP地址的对应关系,而是告诉本地DNS服务器,你的域名的解析服务器的地址。
最后,本地DNS服务器向域名的解析服务器发出请求,这时就能收到一个域名和IP地址对应关系,
本地DNS服务器不仅要把IP地址返回给用户电脑,还要把这个对应关系保存在缓存中,以备下次别的用户查询时,可以直接返回结果,加快网络访问。
关于DNS解析的TTL参数:
我们在配置DNS解析的时候,有一个参数常常容易忽略,就是DNS解析的TTL参数,Time To Live。
TTL这个参数告诉本地DNS服务器,域名缓存的最长时间。
用阿里云解析来举例,阿里云解析默认的TTL是10分钟,10分钟的含义是,本地DNS服务器对于域名的缓存时间是10分钟,
10分钟之后,本地DNS服务器就会删除这条记录,删除之后,如果有用户访问这个域名,就要重复一遍上述复杂的流程。
其实,如果网站已经进入稳定发展的状态,不会轻易更换IP地址,我们完全可以将TTL设置到协议最大值,即24小时。
带来的好处是,让域名解析记录能够更长时间的存放在本地DNS服务器中,以加快所有用户的访问。
设置成24小时,其实,还解决了Googlebot在全球部署的服务器抓取网站可能带来的问题,
这个问题麦新杰专门有一篇博文,请参考:“Googlebot无法访问您的站点”问题理解和处理方法
阿里云之所以只将TTL设置成10分钟,是为了让域名解析更快生效而已。
因为之前的解析会在最长10分钟之后失效(本地DNS服务器将对应的解析条目删除),然后新的解析生效。
如果是24小时,这个生效的时间最长就是24小时,甚至更长(本地DNS服务器要有用户请求,才会发起查询)。
参考:http://www.maixj.net/ict/dns-chaxun-9208