以客户端访问 www.vhdns.cn 为例,看域名的完整解析过程。
① 客户端向 LocalDNS 发出请求,询问域名的 IP 地址。
② LocalDNS 收到请求后,如发现缓存中有这个域名,则直接将对应结果返回给客户端;如没有,会向根 DNS 服务器发出询问请求。
③ 根 DNS 服务器收到请求后,反馈该域名由 .cn 顶级域负责,遂告知 LocalDNS 顶级域 DNS 服务器地址。
④ LocalDNS 向顶级域 DNS 服务器发出请求,询问域名的 IP 地址。
⑤ 顶级域 DNS 服务器反馈不知,让 LocalDNS 向权威 DNS 服务器询问,并告知其地址。
⑥ LocalDNS 向权威 DNS 服务器发出域名的 IP 地址查询需求。
⑦ 权威 DNS 服务器通过自己的配置查到对应的 IP 地址后,反馈给 LocalDNS。
⑧ 最终 LocalDNS 再将权威 DNS 服务器返回的 IP 地址发给客户端,同时记录到自己的缓存中。
⑨ 客户端通过这个 IP 地址和目标建立连接,发送业务数据。
这就是一次完整的域名解析过程。整个过程分为两部分,如下图示,左边是客户端与 LocalDNS 之间的交互,被称为递归查询;右边是 LocalDNS 与根/顶级域/权威 DNS 服务器之间的交互,被称为迭代查询。
递归查询和迭代查询的区别是:递归查询是虽然我不知道,但原因我帮你问,你只需要等待最终结果就好了;而迭代查询则是虽然我不知道,但我可以告诉你谁可能知道,你需要自己去问它。 |