DNS原理4-递归和迭代查询
dns迭代查询和递归查询定义及区别 DNS系统是用来解析完全限定域名(fully qualified domain name (FQDN))为相应ip地址的,这个解析过程叫做域名解析(name resolution)。 递归查询时,dns client只发一次解析请求,返回的结果只有两种:name resolution(查询成功)或 错误消息(查询失败)。递归查询发生在dns client和local dns server之间。 迭代查询发生在local dns server和其它dns servers之间,迭代查询并不强制要求返回name resolution,也就是其它dns servers如果知道域名解析则返回解析结果,也可以返回referral。 以浏览器访问www.baidu.com为例: 浏览器首先会检查两个地方是否有之前解析google网站的记录,一个地方是电脑上的缓存(window上查看dns缓存:ipconfig/displaydns),另一个是hosts文件。 假设这两地方都没有解析记录,电脑(dns client)将向我的local dns server发起查询:“我想知道www.baidu.com的ip地址”;从dns client到local dns server的查询称为递归查询,dns client要求获得一个明确的结果(name resolution或error message),local dns server负责返回解析结果。 假设local dns server上没有缓存www.baidu.com的ip地址,接下来就是进行迭代查询,迭代查询期间,其它dns servers不知道ip地址的话,会简单返回referral,具体如下: local dns server首先向根域服务器发起查询,根域服务器只负责顶级域解析,如.com, .edu, .org等,这里根域服务器返回.com顶级域服务器地址,同时也称为根域服务器返回一个referral。 接着local dns server向.com顶级域名服务器发起查询,.com顶级域名服务器返回baidu.com权威服务器地址。 然后local dns server向baidu.com权威服务器地址发起查询,baidu.com权威服务器返回www.baidu.com的ip地址。 最后local dns server把解析结果返回给电脑(dns client)。 电脑(dns client)收到结果后,把ip地址缓存起来,供下次使用;local dns server也会缓存解析结果,这样网络中的其它电脑就可以直接拿到结果了,而不需要再走一遍迭代查询流程。 总结下,dns递归查询发生在dns client和local dns server之间,local dns server负责响应dns client的请求,当local dns server不知道域名ip时,则向其它dns servers发起迭代查询,并返回最终结果给dns client。 这里递归查询是从电脑端角度看,迭代查询是从local dns server角度。dns client设置使用的DNS服务器一般都是递归服务器,它负责全权处理客户端的DNS查询请求,直到返回最终结果。而DNS服务器之间一般采用迭代查询方式。...