解析通常需要遍历多个名称服务器,找到所需要的信息。然而,一些解析器的功能更简单地只用一个名称服务器进行通信。这些简单的解析器依赖于一个递归名称服务器(称为“存根解析器”),为他们寻找信息的执行工作。
查询时先查计算机上设置的DNS服务器,每条记录都有一定的生存期,在生存期内,记录将被服务器缓存下来,不需要再次递归查询,直接返回
超过生存期,DNS服务器将向上级DNS服务器进行递归查询,直到顶级根域名服务器
并不是所有记录都存在于同一个服务器上,而是分别存在于各个DNS服务器上,每个服务器负责解析一定的域名,经过一级一级的查询,最终查到添加IP记录的DNS服务商,返回IP地址DNS 服务器不响应客户端。 原因: DNS 服务器受到网络故障的影响。 解决方案: 验证服务器计算机是否有能正常工作的网络连接。首先,使用基本网络和硬件疑难解答步骤,检查相关的客户端硬件(电缆和网络适配器)在客户端是否运转正常。 如果服务器硬件已准备好且工作正常,请使用 Ping 命令检查与受影响的 DNS 服务器位于同一网络上的其他在用和可用计算机或路由器(如它的默认网关)之间的网络连接性。 请参阅: 使用 Ping 命令测试 TCP/IP 配置。 原因: 可以通过基本网络测试访问到 DNS 服务器,但不能响应来自客户端的 DNS 查询。 解决方案: 如果 DNS 客户端可以使用 Ping 检测 DNS 服务器计算机的连接性,请确认 DNS 服务器是否已启动,而且是否能够侦听对客户端请求的响应。请尝试使用 nslookup 命令测试服务器是否可以响应 DNS 客户端。 请参阅: 使用 nslookup 命令验证 DNS 服务器响应;启动或停止 DNS 服务器。 原因: DNS 服务器已被配置为仅限对其已配置的 IP 地址的特定列表提供服务。最初用于测试其响应性的 IP 地址不包括在列表中。 解决方案: 如果已将服务器配置成对它将响应的查询的 IP 地址进行限制,则客户端用于联系它的 IP 地址可能不在允许向客户端提供服务的受限制 IP 地址列表中。 请尝试再次测试服务器的响应,但应指定一个已知在服务器的受限制接口列表中的其他 IP 地址。如果 DNS 服务器响应该地址,则向列表添加该缺少的 IP 地址。 请参阅: 使用 nslookup 命令验证 DNS 服务器响应;限制 DNS 服务器只侦听选定的地址。 原因: DNS 服务器已被配置成禁止使用其自动创建的默认反向查找区域。 解决方案: 验证已为服务器创建了自动创建的反向查找区域,或者还没有对服务器进行高级配置更改。 默认情况下,DNS 服务器会根据征求意见文档 (RFC) 的建议自动创建下列三个标准反向查找区域: 这些区域是用它们所涵盖的、在反向查找中无用的公用 IP 地址(0000、127001 和 255255255255)创建的。作为对应于这些地址的区域的权威机构,DNS 服务可以避免不必要的向根服务器的递归,以便对这些类型的 IP 地址执行反向查找。 尽管可能性很小,但仍有可能不创建这些自动区域。这是因为禁止创建这些区域涉及到用户要对服务器注册表进行高级手动配置。 要验证是否已经创建了这些区域,请执行下列 *** 作: 1 打开DNS 控制台。 2 从“查看”菜单,单击“高级”。 3 在控制台树中,单击“反向查找区域”。 位置 DNS/适用的 DNS 服务器/反向查找区域 4 在详细信息窗格中,确认是否存在以下反向查找区域: 0in-addrarpa 127in-addrarpa 255in-addrarpa 请参阅: 打开 DNS 控制台;DNS RFC。 原因: 将 DNS 服务器配置为使用非默认的服务端口,如在高级安全性或防火墙的配置中。 解决方案: 验证 DNS 服务器是否未在使用非标准配置。 这种情况很少但仍有可能发生。默认情况下,nslookup 命令使用用户数据报协议 (UDP) 端口 53 向目标 DNS 服务器发送查询。如果 DNS 服务器位于另一个网络上,且只能通过一个中间主机(如数据包筛选路由器或代理服务器)才能访问,则 DNS 服务器可能使用非标准端口以侦听并接收客户端请求。 如果是这种情况,请确定是否有意地使用了任何中间防火墙或代理服务器配置来阻止用于 DNS 的已知服务端口上的通信。如果不是,则可以向这些配置添加这样的数据包筛选器,以允许至标准 DNS 端口的通信。 此外,还要检查 DNS 服务器事件日志以查看是否发生了事件 ID 414 或其他与服务相关的重要事件,这些事件可能指明 DNS 服务器没有响应的原因。 请参阅: DNS 服务器日志参考;查看 DNS 服务器系统事件日志;Microsoft Windows 部署和资源工具包。 DNS 服务器无法正确解析名称。 原因: DNS 服务器为成功应答的查询提供了不正确的数据。 解决方案: 确定出现 DNS 服务器错误数据的原因。 最可能的原因包括: 区域中的资源记录 (RR) 没有动态更新。 手动添加或修改区域中的静态资源记录时发生了错误。 从缓存的搜索或区域记录中留下的 DNS 服务器数据库中的旧资源记录没有根据当前信息更新,或者在不需要时未被删除。 为了防止出现最为常见的问题,请首先复查有关部署和管理 DNS 服务器的提示和建议的最佳 *** 作。此外,请根据配置需要,遵循并使用适用于安装和配置 DNS 服务器和客户端的清单。 如果要为 Active Directory 部署 DNS,请注意新的目录集成功能。当 DNS 数据库是与目录集成的数据库(与那些用于传统的基于文件的存储不同)时,这些功能可能产生与 DNS 服务器的默认配置不同的设置。 许多DNS 服务器问题是由客户端上失败的查询引起的,因此先从这里着手并解决 DNS 客户端的问题往往比较好。 请参阅: DNS 最佳 *** 作;DNS 清单;DNS 客户端疑难解答;修改区域中的现有资源记录;清除服务器名称缓存;修改服务器默认值。 原因: DNS 服务器不能解析来自您使用的直接网络以外的计算机名或服务名,如那些位于外部网络或 Internet 上的计算机名或服务名。 解决方案: 该服务器不能正确执行递归。在大多数 DNS 配置中都使用递归,以解析不在已配置的由 DNS 服务器和客户端使用的 DNS 域名中的名称。 如果DNS 服务器无法解析不属于其管辖范围的名称,原因通常都是递归查询失败。DNS 服务器经常使用递归查询解析委派给其他 DNS 区域和服务器的远程名称。 为使递归成功,在递归查询路径中使用的所有 DNS 服务器都必须能够响应并转发正确的数据。如果不能,递归查询可能会由于以下原因而失败: 递归查询还没有完成就超时了。 远程 DNS 服务器不能响应。 远程 DNS 服务器提供了不正确的数据。 如果服务器对远程名称的递归查询失败了,请查阅以下可能的原因以解决问题。如果不了解递归查询或 DNS 查询过程,请查阅帮助中的概念性主题,以便更好地了解所涉及的问题。 请参阅: DNS 查询的工作原理。 原因: DNS 服务器没有配置为使用其他的 DNS 服务器来帮助解决查询问题。 解决方案: 检查 DNS 服务器是否可以使用转发器和递归。 默认情况下,尽管禁用递归的选项是可以使用 DNS 控制台进行配置的,以修改高级服务器选项,但是,还是允许所有 DNS 服务器使用递归。递归可能被禁用的其他原因是,服务器被配置为使用转发器,但专门针对该配置禁用了递归。 注意 如果在 DNS 服务器上禁用递归,那么您将无法在同一服务器上使用转发器。 请参阅: 禁用 DNS 服务器上的递归;配置 DNS 服务器以使用转发器。 原因: DNS 服务器的当前根提示无效。 解决方案: 检查服务器根提示是否有效。 如果正确地进行了配置和使用,则根提示应该始终指向对包含域根和顶级域的区域具有管辖权限的 DNS 服务器。 默认情况下,使用 DNS 控制台配置服务器时,根据以下可用选项,DNS 服务器被配置为可使用适用于您的部署的根提示: 1 如果DNS 服务器是作为网络上的第一个 DNS 服务器安装的,则它被配置为根服务器。 对于此配置,由于该服务器对于根区域具有管辖权限,因此会在该服务器上禁用根提示。 2 如果安装的服务器是网络上的另一 DNS 服务器,则可以指导“配置 DNS 服务器向导”从网络上现有的 DNS 服务器更新它的根提示。 3 如果网络上没有其他 DNS 服务器,但仍然需要解析 Internet DNS 名称,则可以使用默认根提示文件(包含对 Internet DNS 名称空间拥有管辖权限的 Internet 根服务器列表)。 请参阅: 更新 DNS 服务器上的根提示;更新根提示。 原因: DNS 服务器与根服务器之间没有网络连接。 解决方案: 测试与根服务器的连接性。 如果根提示看上去配置是正确的,请检查失败的查询所用的 DNS 服务器能否用 IP 地址 Ping 到它的根服务器。 如果针对某个根服务器的 ping 尝试失败,可能表示这个根服务器的 IP 地址已更改。请重新配置根服务器,但这种情况不多见。 更可能的原因是网络连接完全丢失,也可能在某些情况下,DNS 服务器与它所配置的根服务器之间的中间网络链路上的网络性能不好。请遵循基本的 TCP/IP 网络疑难解答的步骤,诊断连接并确定这是否就是问题所在。 默认情况下,在递归查询失败之前 DNS 服务使用 15 秒的递归超时时间。在正常网络情况下,这个超时时间不需要更改。然而如果性能允许,可以增加这个值。 要检查有关 DNS 查询的其他性能的相关信息,可以启用 DNS 服务器调试日志文件 Dnslog,它可以提供有关几种类型的服务相关事件的大量信息。 请参阅: 使用 Ping 命令测试 TCP/IP 配置;使用服务器调试日志记录选项;查看 DNS 服务器调试日志文件;调整高级服务器参数。 原因: 更新 DNS 服务器数据时出现其他问题,如与区域或动态更新有关的问题。 解决方案: 确定问题是否与区域有关。根据需要,解决该领域中的任何问题,如可能失败的区域传输。 请参阅: 动态更新疑难解答;区域问题疑难解答。 DNS 服务器似乎受非上述原因的问题影响。 原因: 上述内容没有包括我的问题。 解决方案: 搜索 Microsoft 网站上的 TechNet 以获取与该问题相关的最新技术信息。如有必要,可获得与当前问题相关的信息和说明。 如果连接到 Internet,则可从 Microsoft 网站下载最新的 *** 作系统更新。 要获得 Windows NT Server 的最新 Service Pack 更新组件,请参阅 Microsoft 网站。 请参阅: DNS 更新技术信息;DNS;使用 Windows 部署和资源工具包。 参考资料 >递归查询和转寄查询的区别在于查询方式不同。根据查询相关公开信息显示,递归查询是一种DNS服务器的查询模式,在该模式下DNS服务器接收到客户机请求,必须使用一个准确的查询结果回复客户机。如果DNS服务器本地没有存储查询DNS信息,那么该服务器会询问其他服务器,并将返回的查询结果提交给客户机。DNS服务器另外一种查询方式为转寄查询,DNS服务器会向客户机提供其他能够解析查询请求的DNS服务器地址,当客户机发送查询请求时,DNS服务器并不直接回复查询结果,而是告诉客户机另一台DNS服务器地址,客户机再向这台DNS服务器提交请求,依次循环直到返回查询的结果。所以由此可见递归查询和转寄查询的区别是查询方式不同。1递归查询:
一般客户机和服务器之间属递归查询,即当客户机向DNS服务器发出请求后,若DNS服务器本身不能解析,则会向另外的DNS服务器发出查询请求,得到结果后转交给客户机;
2迭代查询(反复查询):
一般DNS服务器之间属迭代查询,如:若DNS2不能响应DNS1的请求,则它会将DNS3的IP给DNS2,以便其再向DNS3发出请求;
举例:比如学生问老师一个问题,王老师告诉他答案这之间的叫递归查询。这期间也许王老师也不会,这时王老师问张老师,这之间的查询叫迭代查询!
DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。
解析通常需要遍历多个名称服务器,找到所需要的信息。然而,一些解析器的功能更简单地只用一个名称服务器进行通信。这些简单的解析器依赖于一个递归名称服务器(称为“存根解析器”),为他们寻找信息的执行工作。
查询时先查计算机上设置的DNS服务器,每条记录都有一定的生存期,在生存期内,记录将被服务器缓存下来,不需要再次递归查询,直接返回。
超过生存期,DNS服务器将向上级DNS服务器进行递归查询,直到顶级根域名服务器。
并不是所有记录都存在于同一个服务器上,而是分别存在于各个DNS服务器上,每个服务器负责解析一定的域名,经过一级一级的查询,最终查到添加IP记录的DNS服务商,返回IP地址。
我们在使用PHP递归时,会遇到各种各样的问题,其中比较令人苦恼的是有关PHP递归返回值时出现的问题。其实细细想想这是一个很简单的问题。可就是这个简单的问题困扰了半个下午。问题出在递归函数的返回值上。这是开始写的:
代码如下:
<php
function test($i)
{
$i -= 4;
if($i < 3)
{
return $i;
}
else
{
test($i);
}
}
echo test(30);
>
这段代码看起来没有问题,其实有else里面是有问题的。在这里执行的test没有返回值。所以虽然满足条件$i < 3时 return $i整个函数还是不会返回值的。对上面的PHP递归返回值函数做如下修改:
代码如下:
< php
function test($i)
{
$i -= 4;
if($i < 3)
{
return $i;
}
else
{
return test($i); //增加return, 让函数返回值
}
}
echo test(30);
>
以上代码示例就是PHP递归返回值出现问题时的具体解决方法。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)