:“关于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中毒太深 关于DNS迭代递归及区域复制 _职场)!“金手指”马上找到他,将客人的问题递了进去,焦急的等待着结果…… 这个时候就又成了递归。
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小时