码迷,mamicode.com
首页 > 其他好文 > 详细

DNS相关概念和原理

时间:2015-09-29 01:18:09      阅读:184      评论:0      收藏:0      [点我收藏+]

标签:dns

一、DNS查询

技术分享

1、整个查询过程(PC和DNS都没有缓存的情况):

0.1)PC在浏览器上访问http://www.benet.com;


0.2)PC先查询本地hosts文件,如果没有hosts文件没有解析,则进行下一步;


1)PC向自己设置的localdns发起解析www.benet.com的请求;


2)localdns先向全球13台根dns中的一台发起请求:www.benet.com=?;

#localdns怎么知道根dns的ip地址呢?一般dns本地都会存放全球13台根dns的ip地址


3)根dns回给localdns说我不知道www.benet.com的ip地址,但.com的dns可能知道,你去问他吧,于是将.com的dns的ip地址告诉localdns(即.com这个域的NS记录,和NS对应的A记录);


4)localhost继续去问.com的dns:www.benet.com=?;


5).com回给localdns说我不知道www.benet.com的ip地址,但.benet.com的dns可能知道,你去问他吧,于是将.benet.com的dns的ip地址告诉localhost(即benet.com这个域的NS记录,和NS对应的A记录);


6)localdns继续去问.benet.com的dns:www.benet.com=?;


7).benet.com的dns将www.benet.com的ip地址(A记录)返给localdns;


8)localdns获得了www.benet.com的ip地址后将结果返回给PC;


9)PC获取了ip地址后就可以将ip封装在三层报头上了,然后将http请求发送到www.benet.com的web服务器;


10)web服务器将网页内容返给PC。


2、递归查询和迭代查询

递归查询:

       只发出一次请求,就能得到结果(查询的到或查询不到)。一般是用户向localdns发起查询请求时,用的是递归查询。如果localdns没有开启递归功能,那么本地如果没有结果,则直接返回查询不到,而不会进行迭代查询去获取结果。但一般localdns都会开启递归功能的~而某个域的权威dns一般只对内开启递归,对外关闭。

#所谓的localdns不一定指你的内网dns,像我们平常上网设置的114.114.114.114、8.8.8.8或者联通电信的dns,都可以叫localdns,这些dns的类型就叫缓存dns,即将迭代查询得到的结果缓存到本地,当有其他用户请求同一个域名解析时直接调取缓存,加速dns查询速度,毕竟迭代查询还是很慢和消耗资源的~

#权威dns:管理某个域的dns就是权威dns,即迭代查询给出最终答案的那台dns。平常我们去localdns去解析域名拿到的一般都是非权威应答,即localdns直接从缓存中查询结果,然后将结果返回给你,下图是用nslookup解析百度域名的结果,获得的就是非权威应答:

技术分享


迭代查询:

       发出多次请求才能得到答案。迭代查询的话,一般从根域查起,逐级查询,直到获得结果。为啥要逐级查询呢,因为dns是分层管理的,根域管理一级域,一级域管理二级域………即上级知道下级在哪。


3、DNS服务器的查询顺序:

1)如果查询请求是本机所负责区域中的数据的话,要通过查询区域数据文件返回结果(这样获得的就是权威应答);


2)如果查询请求不是本机所负责区域中的数据的话,就查询缓存,有答案则返回结果(非权威应答);


3)如果缓存中没有答案,则向根发起查询请求(前提是开启了递归),根返回负责.com的dns的ns记录和a记录,如此迭代查询直到获得结果。


二、DNS服务器类型

未完待续

本文出自 “华哥在路上” 博客,请务必保留此出处http://wshstc.blog.51cto.com/10676059/1698973

DNS相关概念和原理

标签:dns

原文地址:http://wshstc.blog.51cto.com/10676059/1698973

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!