DNS迭代查询和递归查询的区别

迭代查询和递归查询是可以发送到域名服务器的两种请求。递归查询是最常见的发送到本地域名服务器的请求。当本地域名服务器接受了客户机的查询请求时,本地 域名服务器将力图代表客户机来找到答案,而在域名服务器执行所有工作的时候,客户机只是等待。如果本地域名服务器不能直接回答,则它将在域名树中的各分支 上下递归搜索来寻找答案。

对于一个递归查询,DNS服务器将持续搜索直到收到回答。这种回答可以是主机的IP地址,也可以回答“主机不存在”。不论是哪种结果,递归域名服务器将把结果返回给客户机。

一个域名服务器若设置为使用前向服务器,则它将发送递归查询到指定的前向主机。这台收到前向查询的主机也将工作在递归模式以回答查询。如果本地服务器不是 一个从属服务器,过一会儿它可能会自行开始查询过程,尽管它仍然希望从它的前向主机处得到回答。如果本地域名服务器设置为一个前向服务器的从属服务器,则 工作方式会有所不同。客户机可以发送递归查询到一台从属服务器,但从属服务器不能进行递归查询,它实质上将成为其前向服务器的客户机等待回答。第3章曾对 前向服务器和从属服务器进行了介绍。

迭代查询则有所不同。迭代查询的最好例子是一台本地域名服务器发送请求到根服务器。当某个企业的本地域名服务器向根服务器提出查询,根服务器并不一定代表 本地域名服务器来担当起回答查询的责任。另一种说法是根服务器不接收递归查询。事实上,根服务器只是为解析查询做一件事:指引本地域名服务器到另一台主机 来查询回答。这种做法通常称为重指引,也是期望得到的迭代查询的结果。例如,当根服务器被要求查询www.45it.cn的地址,根服务器不会到ISI域名服务器查询www主机的地址,它只是给本地域名服务器返回一个提示,告诉本地域名服务器到ISI域名服务器去继续查询和得到结果。