路由器的递归查询怎样解释

2020-12-13 14:55:16 字数 5615 阅读 4581

1楼:匿名用户

什么是路由? 所谓路由的过程就是从入站接口接收到数据包,经过cpu的处理(查找路由表,重构二层帧),把“新”包放入到相应的接口的过程。这个过程实际上可以 转化成下面的一个模型:

一辆汽车(数据包)走到了一个十字路口,注意,此时它是有目的地的(目的ip地址),比如这辆汽车想去往北京,到了这个十字路口, 看到了有几个牌子上面写着“北京,石家庄,唐山”,那么这个时候驾驶员(cpu)就应该来选择那个去往北京的路口(出站接口),这样也就完成了路由功能。更进一步,微观上的路由查询是怎么进行的。这里所说的微观,并不去讨论路由**的各种算法,而是去讨论路由器如何去查找路由表。

我们先来看一个简单的拓扑

有四个路由器,分别是pooh,tigger,pidet,rabbit,在这个拓扑下面显示的是pooh的路由表,可以看到,现在已经可以从pooh上查询到了五个网段,也就是说现在达到了全网互通。

举 例来说,如果想达到网段10.1.10.

0,cpu开始查找路由表,发现了一个路由条目是到达10.1.10.

0的,通过192.168.1.

194,而 这个地址就是piglet路由器最左边的那个端口,那么这个192.168.1.

194又是怎么到达呢?再一次查找路由表,找到了一个网段 192.168.

1.192,这里面就包含了192.168.

1.194这个地址,而到达它是通过192.168.

1.66来实现的。那么 192.

168.1.66又是应该怎么到达?

还得继续查找路由表。192.168.

1.194

这个过程在周而复始的进行,形成一个递归的过程,知道路由器找到直连网段位置,按照上面的那个实例来说就是当找到192.168.1.64这个条目。

好了,这就是路由器递归查询的过程。

但是,这样的查询方法有什么用途呢?你是否考虑过呢?

先让我们回到一个比较本质的问题上去,路由器和交换机的作用是什么?其实无非是两个作用,一是考虑如何把数据包正确的送到目的地址,二是如何更快的送到。 至于其他的各种安全技术,qos等等都是为这两个终极目标服务的。

由于本篇不涉及到交换机的内容所以在此略过不提,单说路由器,工程师们为了让路由器更好的完成这两个任务做出了不懈的努力,其中一个就是不断改进的包交换方法以达到快速的**包的目的。

先让我们从历史的角度看一下

最早诞生的是“进程交换”

这种交换很传统,路由器每收到一个包就会通过cpu查找路由表然后送到出站端口,每过来一个包就会这样做一次。这种方法是没有问题的,但是却很慢,明显的效率不高。

为了解决这个问题,“快速交换”诞生了

这 里面有一个前提,也是能开发出“快速交换”的一个先提条件,那就是我们的数据一般都是以流的形式传播的,流,这个词十分形象,就是一串数据包都去往同一个 地方。当工程师发现了这个规律之后,“快速交换”的想法诞生了,所谓快速交换就是,先分析每个流的第一个包,按照进程交换的方式进行查询,然后出站同时把 这个查询的结果保存在一个独立的缓存中。当这个流中剩下的包进站时,路由器不是去查路由表而是去查缓存,这样就能节省cpu的资源,直接把包**出去。

这 样不但提高了包**的速度,实际上也提高了cpu的使用效率。

最后就是cef

思科的快速交换,cef有太多的内容需要讲,相对于前两种交换方式有很大的不同,我在这里只取其在交换形式上的差别。进程交换是当一个新数据流来了后路由第一个包,然后把信息记入缓存来对**进行加速。而cef的做法更绝!

连第一个包都不用查了,直接进行缓存操作!而且是在包之前就进行了缓存。

也就是大名鼎鼎的fib表。

当一个数据包入站的时候,直接查询fib表而不是路由表,这样就能大大增加**的速度。

也 许你有疑问,我当初就是有疑问的,本来有好好的路由表,现在又建立了一个fib表,一个数据包到了不还是需要查找吗?这样有什么作用?很显然现在一般的图 书上并没有写明原因,没有给我一个合理的解释。

不过对于这个问题,以及对于cef的专题讨论我会在下周的时候单独写一篇文章来叙述,让你明白cef!

现在让我们尊重一个事实,cef更快!

我用了大量的篇幅来写看似与本篇主题无关的“路由器交换”,我想告诉大家的是“加快交换,远离路由表”,cpu路由查询的次数越少**的效率越高!

那么现在让我们回到本篇文章的主题“递归路由的查询”,强烈的困惑!人家查一次路由表都嫌多,你却使用递归查询查了那么多遍路由表!

确实,这就是递归查询的最大缺点!也是我们在设计网络的时候必须要考虑的一个问题。不过仔细想一下,既然这是一个极为“不成功”的方法,那么为什么还会允许它的存在呢?这又是为了什么?

递归查询的优势!无与伦比的优势!

我们来看一下这个拓扑,注意一下sanderz的静态路由的设计。

这就是一个典型的递归路由的使用案例,可以仔细的看一下。

这里我们先设计一个情景,从显示的路由路由信息来看,现在到达右侧网段的所有数据都要从hef****mp路由器通过,这个时候如果hef****mp坏了,那么必须要从woozle进行路由。

这个时候网络管理员只需要调整一条路由就可以了。

sanderz(config)# ip route 10.87.14.0 255.255.255.0 10.23.5.95

sanderz(config)# no ip route 10.87.14.0 255.255.255.0 10.23.5.20

这样就完成了任务。

那么如果不使用递归路由呢?那么图中的每一个路由都要重新设置,如果按照上图的案例来说,我们需要重新写26条路由条目。如果你觉得这样的数量还能忍受, 那么如果有100个,400个网段呢?

你要重写200条,800条路由!这个工作量就大了吧,你还能忍受吗?同样是400个网段,使用递归路由还是上面的 两条命令。

借用并改造算法中时间复杂度的概念:不使用递归路由的时间复杂度为o(n),而使用了递归路由的时间复杂度为o(1)!

这也就是递归路由最大的优点!

面对递归路由的优点与缺点,确实是很难办,是需要斟酌的。(这是《routing tcp/ip vol.1 》的说法)

不过我想其实并不是那么“难办”

从实际的网络应用来讲,现在能够使用静态路由的网络拓扑不会很大,相对于路由器cpu的处理能力来讲不是很大的负担,也就不会很影响速度,所以为了管理的方便我们是可以放心的使用递归路由的。

但是,我这种说法并不包含 两个大的园区网之间用静态路由的情况(教育网),这样的情况还是使用最普通的路有方式吧。

具体情况具体分析,相必大家对与递归路由的优势和缺点也是很熟悉了,能够在其间取舍。

什么是递归路由?

2楼:匿名用户

比如说有计算机a,路由器bcde

a想知道 ***.***所对应的ip是

多少?a就去问b,这时候a是请求者,专b是被请求者;属

但是b也不知道***.***的ip,那么它就去问c,这时个b变成了请求者,c是被请求者

如此递归

到e时,假设e知道***.***知道返回了***.***的ip给d,然后d再告诉c,c再告诉b,b再告诉了a,这样就完成了查询。。。这样的方式就叫递归。。。

另外还有一种叫迭代。。。

比如说a想知道***.***,去请求b,b这时候告诉a说,“c可能***.***,你去问它吧”,

这时候a再去请求c,c这时候告诉a说,“d可能***.***,你去问它吧”,

。。。直到a去请求e,这时候e就告诉了a,***.***的ip地址是xx.***.xx.xx

2011年

3楼:问题大脑袋

关于递归路由bai

,不同du意楼上的例子,具体的例子可

回链接" class="iknow-ueditor-link" href="https://blog.csdn.

***/dog250/article/details/8957234" target="_blank">网页链接

且ibgp路由器通答过bgp协议学习到的外部路由,一般下一跳也不是具体的ip地址或接口,而是下一条边界路由器的loopback接口,也就是该路由器的唯一标识,与接口ip无关。这样ibgp路由器前往该边界路由器时,就需要再通过该loopback接口,通过igp协议递归路由,学习到前往边界路由器的下一跳。

路由器的递归查询怎样解释?

4楼:匿名用户

比如说有计算机a,路由器bcde

a想知道 ***.***所对应的ip是多少?

a就去问b,这时候a是请求者,b是被请求者;

但是b也不知道***.***的ip,那么它就去问c,这时个b变成了请求者,c是被请求者

如此递归

到e时,假设e知道***.***知道返回了***.***的ip给d,然后d再告诉c,c再告诉b,b再告诉了a,这样就完成了查询。。。这样的方式就叫递归。。。

另外还有一种叫迭代。。。

比如说a想知道***.***,去请求b,b这时候告诉a说,“c可能***.***,你去问它吧”,

这时候a再去请求c,c这时候告诉a说,“d可能***.***,你去问它吧”,

。。。直到a去请求e,这时候e就告诉了a,***.***的ip地址是xx.***.xx.xx

5楼:匿名用户

思科路由器上show ip route可以看到ip路由表的内容

查找规则:最长匹配,递归查询

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

6楼:流星落啊

问下楼主是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服务器属性中,你可能会混淆高级选项卡中的“禁止递归”选项和**器选项中的“不对这个域使用递归”后者控制将要接受的查询类型。

路由器的闪存有何作用,路由器的内存 和闪存有什么作用

1楼 樊 就是扩大路由器的内存和闪存容量,一般路由器的闪存只有2 4mb,如果想安装完整的第三方固件,如dd wrt固件就需要更大的闪存。不更换也能安装迷你版的。内存大一些,运行起来肯定要稳定些,不容易死机。 2楼 du小悟 路由器的内置存储是用来安装操作系统和基础应用的,为了让路由器能做出更多不同...

如何选择路由器的内存大小,怎么看 路由器 内存大小??

1楼 百度用户 说到 内存 我们一般会想到电脑内存 手机运行内存等等,其实很多设备都有内存,比如我们家中小小的路由器,它其实也有处理器 内存 存储等硬件,相当于一台微型电脑。那么,路由器内存有什么用,在买路由器的时候,是不是应该重点考虑的参数呢,下面就来聊聊这个话题。 路由器内存越大越好吗? 无论是...

智能电视的网络安装需要路由器吗,网络电视,需要路由器吗

1楼 爱吃萝卜和油菜 要。无线宽带路由器安装好后,连接电视机的方法 1 需要的条件 支持无线联网的电视机 已联网的无线路由器 3 打开电视机,用遥控器操作电视机,进入左下角的 系统设置 4 在系统设置的界面下,选择左上角的 网络 设置。 5 点击 网络 设置后,电视机系统会自动搜索附近的wifi信号...