关于DNS迭代递归及区域复制

简介:
:“关于dns查询,比如.com区域下面有md.com和 md1.com 和md2.com三个域,md.com下面有3主机a ,b, c! md1.com下面有主机e,f,g! a查询一个域名 www.csdn.net  a缓存没有,就去查它的 dns服务器 (这个dns服务器是a,b,c之外的机器来担任还是其中之一担任!) 
关键在于dns服务器也没有这条记录,缓存也没有,这时候dns 服务器会查询谁??是根服务器还是.com的dns服务器! (这个查询谁是不是可以设置???) ,如果查询根我就糊涂了,.com 没起什么作用嘛! 即使得到结果了,这时 e主机也查询  www.csdn.net  也是同样,自己没有缓存,dns服务器也没有!就直接查根服务器了!!
再假设md1.com区域下面又建立了sale域!   sale.md1.com下面有主机h,i,j.这时主机h 也查询 www.csdn.net ,相同情况,那不是说,最初的主机a的查询,白查了!对于其他的查寻一点帮助也没有!!!???!!   请高手指点 我知道我肯定忽略了什么???!!!!”
回答:嗯……我就尝试用fqdn来说明这个解析的过程,这个模型不用太复杂,我就以md.com下的a计算机发起 www.csdn.net 的dns请求来描述。首先确定a 的fqdn,应该是 a.md.com. 注意最后面有个点,这就是 dns root node。
当用户在计算机a上请求查询 
www.csdn.net ,那么 系统 按照如下顺序执行名称解析
Local Cache--Hosts File--DNS Server--NBT--LMhosts--WINS
具体到dns的查询,默认状态下,dns client会根据当前fqdn中的dns suffix来进行逐层抽取。
大家都知道 dns保留有树状架构,那么一次查询的顺序为:
a.md.com. -> md.com. -> .com. ->.
每到达一个dns node,dns client就会尝试询问当前dns zone的dns server,是否知道 www.csdn.net 这台主机在哪里,如果回答是否定的,那么继续进行抽取,直至最上层的dns root node,也就是那个点,这些root通常是internet dns server,目前有13台。这个查询模式就叫迭代查询。
但这里要提到一点,通常在MS的平台上,抽取动作将会保留最后两个标签,in this case,就是.com.
此时系统就会判断当前dns forest中是否存在一个内部的dns root node,这就是在dnsmgmt.msc中新建一个dns zone的时候,系统自动产生的根节点。
如果存在此根节点,那么dns请求到达此节点,系统即认为已经到达根权威服务器,所有的dns请求到此终结,如果当前节点上没有
www.csdn.net 这个主机的dns纪录,那么整个查询的结果就是否定的。
通常企业部署中,我们都是删除了这个根节点,而设置转发,forward到ISP dns,这样当请求
www.csdn.net 的纪录时,root dns server就会将这个请求转发到isp dns server,得到结果后,再将dns纪录返回给dns client。
如果企业内部 root dns server处于企业dns架构的顶点,其下还有树状的dns架构,比如md.com.,比如sales.md.com. 那么每个dns zone都至少需要有一台dns server以负责维护当前dns zone,此dns server成为当前区域的dns权威服务器。
那么当a.md.com.发起的请求到达md.com.中dns server时,该dns server将会接受这个请求,然后查询自己所维护的zone,如果没有
www.csdn.net 的纪录,就将这个结果转发到其上层dns server .com.,如果仍旧没有结果,一次向上转送,直至获得结果(即便这个结果可能是没有找到),然后将结果依次返回回来,直至md.com.,然后md.com.将结果返回给a.md.com.
这个过程就是递归查询。

在实际的网络环境中,dns查询总是伴随着这两个查询模式。那么我们回头来看看您的问题:
1、 关键在于dns服务器也没有这条记录,缓存也没有,这时候dns 服务器会查询谁??
〉〉向当前dns server的上层dns server发起查询,至于它如何知道哪台server是它的上级。根据dns suffix抽取。比如sales.md.com. 抽取最前面的dns zone name sales,那么就知道它的上级是md.com.了
2、如果查询根我就糊涂了,.com 没起什么作用嘛! 
〉〉所有的dns查询都是按照dns树状架构逐层向上的,来自md.com.的查询自然要经过.com.
当然具体到win2k3中,您设置了forward or stub zone or其他快捷方式查询,那么到达md.com.可能根据您的设置被直接跳转到其他dns server。
3、最初的主机a的查询,白查了!对于其他的查寻一点帮助也没有!!!???!!  
〉〉所有的查询结果都会被当前区域的dns server缓存下来,当您在dnsmgmt.msc中开启高级察看的时候,您就能看到之前的dns query result cache。
比如a.md.com.查询
www.csdn.net ,在root dns node获得了结果,那么负责根域的dnsserver就会将 www.csdn.net 的dns纪录缓存下来,以便于其他dns client的查询,进而提高查询效能。
这样当来自 e.md1.com.的请求到达 root dns node时,负责根域的dnsserver就直接从cache中返回
www.csdn.net 的结果,而不用再次查询isp dns server(如果之前设置了forward to isp dns)
这是在 winmag 被 pumas_king 朋友问到的问题 :“首先问个问题!LAN中的DNS如果含有.根域是否在连上外网的时候造成冲突?(一直疑惑务必回答)
提出问题一:曾经认为
递归查询:客户机向负责DNS服务器查询,
迭代查询:为负责客户机查询的DNS没有目标信息,将他转发到其他的DNS,因为主机不认识其他的DNS所以这一切都是有这台DNS的SOA记录、默认信任域负责!等待DNS查询完后在返回主机一个递归(注意:客户机不认识其他的DNS)
说的马虎点就是:客户机和DNS服务器间和DNS返回客户机的查询为递归查询、而DNS向其他DNS查询为迭代查询!
提出问题二:就是关于区域复制!
我要说的是!其实简单的说就是这样的!辅助DNA在刷新时间到时向主DNS查看序列号!
如果发现序列号比自己的大(当然不会有小的情况)就立即复制!但是如果复制不成功(比如网络拥塞等造成的复制失败)就在重试间隔时间到时重试!(还不成功就在等待重试时间到!)如果二十四小时都重试失败的话、很好辅助DNS将认为自己已经崩溃、已经无法工作(所以领了退休金就不做了)
当然(除了辅助DNS有更新时间外,主DNS也会向辅助DNS发出更新通告)”
回答:"LAN中的DNS如果含有.根域是否在连上外网的时候造成冲突?"
连上外网,说得再清晰一些就是,内网的用户需要连接到外部网络的某些服务,当然这个服务不一定就是web service
但无论什么服务,都免不了dns解析,dns只负责dns name 与ip地址之间的转换,其它任务它管不了。dns由于其树状层级结构,就决定了其层层向上的路由特性,在树的顶端,就是那个点的根域,这个就是权威,它就是解析的终结,无论任何dns请求在遇到它后,“即刻回头”无论解析结果的对错,还是无法解析,它都将解析的结果返回给dns请求者。
在dns请求者看来,无论这个点的根域是LAN还是WAN上的,都一样,“有奶的便是娘”。
所以,所谓冲突,就是如果,LAN中存在一个和WAN上同名的dns zone,而LAN中又存在点的根域,势必返回的结果就是LAN中的查询结构。
那么,在这种情况下,如果删除点的根域呢?同样也是LAN中的查询结果。谁在DNS层级架构中,最靠近dns client,谁最先响应dns query,谁就为dns client作解析,返回的结果也就是它说了算。这个情形,如果从安全的角度来讲,也就是DNS替换攻击的一种。
详细的论述,可以参考CISSP Certification Guide中 Secure DNS一节。
关于递归和迭代的问题,你的理解基本正确。
当dns client按照其dns client中设置的dns list(tcp/ip中的dns设定),从顶端依次发出查询的时候,第一个响应此请求的dns server,它和dns client之间构成的关系就是递归。这第一个响应查询的dns server,就是五星级酒店中的“金手指”,VIP提出的问题,由他来解决,客人只要等候就好了。
那么“金手指”在做什么呢?他自然为了解决客人的问题,联系一些他所知道的资源。也就是查询自己的dns cache、host file、dns server list in tcp/ip等等,当然最主要的还是依靠其在整个dns架构中的层级位置,依次查询那些dns服务器,这时候“金手指”和他们之间构成的关系就是迭代。
而如果“金手指”想尽了办法仍然徒呼奈何,怎么办呢?奥,终于想起来了,“有关部门”曾经给过他一个锦囊妙计,打开一看,“forward”给Michael(最近PrisonBreak中毒太深 )!“金手指”马上找到他,将客人的问题递了进去,焦急的等待着结果…… 这个时候就又成了递归。
yeah!终于拿到结果了!
最后“金手指”风尘仆仆地将结果递给客人,“抱歉,让您久等了!”。结果是否能让客人满意呢?就不是“金手指”所能知道的了,他已经尽力了,多么可爱的小伙子啊!
一个DNS查询的完整过程,是一个递归和迭代的混合查询的过程。
至于如何提高客户满意度,就要靠“有关部门”了,就是你们,Domain Admins!
关于区域复制,出现以下任何情况时都会发生区域转移: 
• 在辅助 DNS 服务器上启动 DNS 服务。  
• 刷新时间终止。  
• 当更改保存到主控区域文件并有 Notify List 时。 
• 在辅助 DNS 服务器上使用 DNS MMC,手动启动从主DNS服务器上的区域复制首先,辅助服务器等待一个由SOA记录中定义的“Refresh”指定的刷新间隔(默认为15分钟),向主DNS服务器查询其SOA
然后,主DNS服务器以其SOA记录回应
再次,辅助DNS服务器将返回的serial no和自己的对比,如果高,就向主DNS服务器发出更新请求
最后,主DNS服务器根据辅助DNS发出的请求,对比之前的更新记录,决定发起一个完全复制还是增量复制。如果主DNS服务器没有响应辅助DNS服务器的请求,那么复制DNS服务器将按照SOA记录中定义的“Retry”时间间隔(默认是10分钟)不断重复请求。如果超过SOA中定义的"Expire"时间段(默认是24小时),仍然没有得到回应,就废弃当前区域。但这不等同辅助DNS已经崩溃。
BTW:DNS Client 发起的DNS记录更新间隔也是24小时


本文转自gauyanm 51CTO博客,原文链接:http://blog.51cto.com/gauyanm/231730,如需转载请自行联系原作者
相关文章
|
3月前
|
算法 数据库
递归最佳解析
递归最佳解析
40 0
|
7月前
|
JavaScript
JS深拷贝----采用递归实现(例子+难点解析)
JS深拷贝----采用递归实现(例子+难点解析)
69 1
|
1月前
|
算法 Java
Java必刷入门递归题×5(内附详细递归解析图)
Java必刷入门递归题×5(内附详细递归解析图)
20 1
|
3月前
迭代归并:归并排序非递归实现解析
迭代归并:归并排序非递归实现解析
18 0
|
3月前
|
算法
递归算法:二叉树前序、中序、后序遍历解析与递归思想深度剖析
递归算法:二叉树前序、中序、后序遍历解析与递归思想深度剖析
39 0
|
4月前
|
网络协议 网络安全 数据安全/隐私保护
【应用层】P2P、DNS、递归查询、迭代查询、FTP、电子邮件系统、万维网和HTTP
【应用层】P2P、DNS、递归查询、迭代查询、FTP、电子邮件系统、万维网和HTTP
79 0
|
4月前
|
算法 容器
class038 经典递归解析【算法】
class038 经典递归解析【算法】
20 0
class038 经典递归解析【算法】
|
9月前
|
Java
递归锁解析
递归锁(Reentrant Lock)是一种可以被同一个线程多次获取的锁,它避免了死锁的发生。在Java中,ReentrantLock类实现了递归锁的机制。
313 1
|
算法 C++
【栈的应用】二叉树非递归中序遍历思想解析及代码实现
【栈的应用】二叉树非递归中序遍历思想解析及代码实现
140 0
【栈的应用】二叉树非递归中序遍历思想解析及代码实现
|
JavaScript 前端开发
简单解析JavaScript中的递归问题之斐波那契
简单解析JavaScript中的递归问题之斐波那契 本篇博客来简单讲解一下JavaScript中的递归函数问题,在数学问题中叫递推。在前面我们学到了for循环,然后利用for循环进行嵌套解决各种问题,其实for循环的嵌套在某种意义上就是一种递归函数。 简单来说递归函数就是在函数体内调用本函数,同时需要注意的是使用递归函数时要注意函数的终止条件,避免函数陷入死循环。下面我们来说一下递归函数中的典型案列,斐波那契数列(黄金比例数列)。 斐波那契数列指的是这样一个数列: 1、1、2、3、5、8、13、21、34、…… 这个数列从第3项开始,每一项都等于前两项之和。 这个问题在数学中的解决方式

相关产品

  • 云解析DNS
  • 推荐镜像

    更多