> 唯美句子 > 什么是dns递归查询

什么是dns递归查询

什么是dns递归查询

1. 递归查询 : 一般客户机和服务器之间属 递归查询 ,即当客户机向 DNS 服务器发 出请求后,若 DNS 服务器本身不能解析,则会向另外的 DNS 服务 器发出查询请求,得到结果后转交给客户机; 2.迭代查询(反复查询): 一般 DNS 服务器之间属迭代查询,如:若 DNS 2不能响应 DNS 1的请求,则它会将 DNS 3的IP给 DNS 2,以便其再向 DNS 3发出请求; 举例:比如学生问老师一个问题,王老师告诉他答案这之间的叫 递归 查询。这期间也许王老师也不会,这时王老师问张老师, 这之间的查询叫迭代查询!

满意请采纳

递归是什么意思?

递归是一种重要的编程技术。该方法用于让一个函数从其内部调用其自身。一个示例就是计算阶乘。0 的阶乘被特别地定义为 1。 更大数的阶乘是通过计算 1 * 2 * ...来求得的,每次增加 1,直至达到要计算其阶乘的那个数。

下面的段落是用文字定义的计算阶乘的一个函数。

“如果这个数小于零,则拒绝接收。如果不是一个整数,则将其向下舍入为相邻的整数。如果这个数为 0,则其阶乘为 1。如果这个数大于 0,则将其与相邻较小的数的阶乘相乘。”

要计算任何大于 0 的数的阶乘,至少需要计算一个其他数的阶乘。用来实现这个功能的函数就是已经位于其中的函数;该函数在执行当前的这个数之前,必须调用它本身来计算相邻的较小数的阶乘。这就是一个递归示例。

递归和迭代(循环)是密切相关的 — 能用递归处理的算法也都可以采用迭代,反之亦然。确定的算法通常可以用几种方法实现,您只需选择最自然贴切的方法,或者您觉得用起来最轻松的一种即可。

显然,这样有可能会出现问题。可以很容易地创建一个递归函数,但该函数不能得到一个确定的结果,并且不能达到一个终点。这样的递归将导致计算机执行一个“无限”循环。下面就是一个示例:在计算阶乘的文字描述中遗漏了第一条规则(对负数的处理) ,并试图计算任何负数的阶乘。这将导致失败,因为按顺序计算 -24 的阶乘时,首先不得不计算 -25 的阶乘;然而这样又不得不计算 -26 的阶乘;如此继续。很明显,这样永远也不会到达一个终止点。

因此在设计递归函数时应特别仔细。如果怀疑其中存在着无限递归的可能,则可以让该函数记录它调用自身的次数。如果该函数调用自身的次数太多,即使您已决定了它应调用多少次,就自动退出。

下面仍然是阶乘函数,这次是用 JScript 代码编写的。

// 计算阶乘的函数。如果传递了

// 无效的数值(例如小于零),

// 将返回 -1,表明发生了错误。若数值有效,

// 把数值转换为最相近的整数,并

// 返回阶乘。

function factorial(aNumber) {

aNumber = Math.floor(aNumber); // 如果这个数不是一个整数,则向下舍入。

if (aNumber < 0) { // 如果这个数小于 0,拒绝接收。

return -1;

}

if (aNumber == 0) { // 如果为 0,则其阶乘为 1。

return 1;

}

else return (aNumber * factorial(aNumber - 1)); // 否则,递归直至完成。

}

解释一下DNS的递归解析是什么含义?

一个完整的域名格式应该是“[www.abc.]”最后的那个“.”就叫根域,也叫点域,通常在域名中都是省略的。

递归查询就是主机向DNS服务器发送域名查询请求,服务器直接把查询的结果返回给主机。

与递归查询相对应的是迭代查询。

迭代查询的步骤是:

1、主机将查询请求发送到本地DNS服务器。

2、本地DNS服务器查询不到结果。即将该请求转发到互联网上的根域。

3、根域将所要查询域名中的顶级域(假设要查询[www.abc],该域名的顶级域就是com)的服务器IP地址返回到本地DNS。

4、本地DNS根据返回的IP地址,再向顶级域(就是com域)发送请求。

5、com域服务器再将域名中的二级域(即[www.abc]中的abc。如果是[www.abc.]cn,它的顶级域就是cn,com在这里就变成了二级域)的IP地址返回给本地DNS。

6、本地DNS再向二级域发送请求进行查询。

7、之后不断重复这样的过程,直到本地DNS服务器得到最终的查询结果,并返回到主机。这时候主机才能通过域名访问该网站。

递归查询 的向上递归 和 向下递归 是什么意思

递归说白了就是自己调用自己,向上递归和向下递归机制都一样,都有一个边界,都是调用自身。只是一个限定了最大值,一个限定了最小值,举个例子:

向下递归:

求5的阶乘。。

如下:

Java代码

public class Test {

static int multiply(int n){

if(n==1||n==0)

return n;

else

return n*multiply(n-1);

}

public static void main(String[] args){

System.out.println(multiply(10));

}

}

向上递归:

Java代码

public class Count

{

static void count(int n) //递归方法

{

if (n<5)

count(n+1);

System.out.print(" "+n);

}

public static void main(String args[])

{

count(1);

System.out.println();

}

}

这个结果输出5,4,3,2,1

初学者请教Linux中的递归查询是个啥意思

递归的意思是一般指的改变目录及其子目录和文件 由后往前层层递归

进行域名解析时,递归和迭代查询方式是什么意思?什么场合用?还是合起来用?

问下楼主是 nupt的吗  下面是我的答案

递归查询是最常见的查询方式,域名服务器将代替提出请求的客户机(下级DNS服务器)进行域名查询,若域名服务器不能直接回答,则域名服务器会在域各树中的各分支的上下进行递归查询,最终将返回查询结果给客户机,在域名服务器查询期间,客户机将完全处于等待状态。

示例: (红色为查询,蓝色为迭代查询返回的提示信息,棕色为递归查询返回的IP信息)

示例说明:A向B发送递归查询请求,B向C发送迭代查询请求(下一节将介绍迭代查询),得到C给出的提示后,B向D发送迭代查询请求,得到D给出的提示后,B向E发出迭代请求,得到E给出的提示后,B向F发出迭代查询请求,得到F给出的提示后,B得到了F返回G的IP地址,B向A返回G的IP地址,整个查询结束。

迭代查询的工作方式

迭代查询又称重指引,当服务器使用迭代查询时能够使其他服务器返回一个最佳的查询点提示或主机地址,若此最佳的查询点中包含需要查询的主机地址,则返回主机地址信息,若此时服务器不能够直接查询到主机地址,则是按照提示的指引依次查询,直到服务器给出的提示中包含所需要查询的主机地址为止,一般的,每次指引都会更靠近根服务器(向上),查寻到根域名服务器后,则会再次根据提示向下查找。从上节的图中可以知道,B访问C、D、E、F、G,都是迭代查询,首先B访问C,得到了提示访问D的提示信息后,开始访问D,这时因为是迭代查询,D又返回给B提示信息,告诉B应该访问E,依次类推。

说明:假设你要寻找一家你从未去过的公司,你会有2种解决方案,1是找一个人替你问路,那可能是你的助手,2是自己问路,每走过一个路口,就问一个人,这就好比递归查询和迭代查询,递归查询在这里代表你的第1种解决方案,而迭代则是第2种解决方案。

如合配置递归查询及迭代查询

在默认情况下DNS服务器既接受来自其他客户机(其他DNS服务器)的迭代查询也接受其他客户机(其他DNS服务器)的递归查询。

提醒:在DNS服务器属性中,你可能会混淆高级选项卡中的“禁止递归”选项和转发器选项中的“不对这个域使用递归”后者控制将要接受的查询类型。

递归是什么意思?

递归就是在自己调用自己。例如:

int foo(int n)

{

。。。

return foo(n); //这里就是 递归调用

}

C语言中的递归是什么意思

要理解递归,首先你要理解递归

简单来说就是一个函数调用到了自己,就可以称为递归.下面是简单的求n!的例子:

#include

#include

int fac(int n)

{

if(n==0)return 1;

return n*fac(n-1);

}

void main()

{

printf("%d\n",fac(6));

}

谁能说说JAVA的递归是什么意思?

一、含义

程序调用自身的编程技巧称为递归( recursion)。递归做为一种算法在程序设计语言中广泛应用。 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。

二、递归算法解决问题的特点:

【1】递归就是方法里调用自身。

【2】在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口。

【3】递归算法代码显得很简洁,但递归算法解题的运行效率较低。所以不提倡用递归设计程序。

【4】在递归调用的过程中系统为每一层的返回点、局部量等开辟了栈来存储。递归次数过多容易造成栈溢出等,所以一般不提倡用递归算法设计程序。

【5】在做递归算法的时候,一定把握出口,也就是做递归算法必须要有一个明确的递归结束条件。这一点是非常重要的。其实这个出口就是一个条件,当满足了这个条件的时候我们就不再递归了。

三、示例程序:

使用Java代码求5的阶乘。(5的阶乘=5*4*3*2*1)

[java] view plain copy

package org.wxp.recursion;

/**

* 计算5的阶乘(result = 5*4*3*2*1)

* @author Champion.Wong

*

*

*/

public class Test01 {

public static void main(String[] args) {

System.out.println(f(5));

}

public static int f(int n) {

if (1 == n)

return 1;

else

return n*f(n-1);

}

}

此题中,按照递归的三个条件来分析:

(1)边界条件:阶乘,乘到最后一个数,即1的时候,返回1,程序执行到底;

(2)递归前进段:当前的参数不等于1的时候,继续调用自身;

(3)递归返回段:从最大的数开始乘,如果当前参数是5,那么就是5*4,即5*(5-1),即n*(n-1)

java中递归的作用是什么?为什么要用到递归?

递归做为一种算法在程序设计语言中广泛应用.是指函数/过程/子程序在运行过程中直接或间接调用自身而产生的重入现象.递归是计算机科学的一个重要概念,递归的方法是程序设计中有效的方法,采用递归编写程序能使程序变得简洁和清晰.。

给你个求阶乘的例子:

public long factorial(long n){//求n!

if(n==0)return 1;

else return n*factorial(n-1);//利用递归n!=n*(n-1)!直到0

}

比较经典的递归例子,汉诺塔:

public class T2010_7_9{

static int count=1;

public static void move(char j,char k){

System.out.println("第"+(T2010_7_9.count++)+"步:将一个盘子从柱子"+j+"拿到柱子"+k);

}

public static void hanoi(char a,char b,char c,int n){

if(n==1)move(a,c);

else{hanoi(a,c,b,n-1);

move(a,c);

hanoi(b,a,c,n-1);

}

}

public static void main(String[] args){

char a='A',b='B',c='C';

int num=3;//盘子的个数

hanoi(a,b,c,num);

}

}