路由的有类查找和无类查找

    作者:课课家教育更新于: 2016-09-06 18:18:40

    软考,您想通过吗?一次通过才是硬道理

      今天,小编通过一个例子来对路由表的结构以及路由查找过程进行解释说明,在当中,最重要的是关于路由有类查找以及路由无类查找的讨论。对cnna感兴趣的大家可以关注一下。

      (一)路由表结构

      首先,如图配置的R1和R2,R1上有4个回环接口,其中Lo3的子网掩码长度是26,R1上有一条默认的路由来指向R2的s0/1接口IP,R2上有一条指向R1的s0/0接口IP的静态路由:

    路由的有类查找和无类查找_cnna基础_cnna教程_cnna认证_课课家

      R1配置:

    R1配置

      R2配置:

    R2配置

      配置完成以后,对R1和R2的路由表进行查看:

    配置完成

      这个路由表的结构中,R2中像"172.16.0.0/15[1/0]via12.1.1.1"以及"192.168.2.0/24isdirectlyconnected,Loopback0"类似的路由只显示成一行,而"12.0.0.0/24issubnetted,1subnets"显示两行的原因是什么呢?以上的输出格式,是路由级别决定的,那路由级别是什么呢?

      (1)级别1路由(Level1Route)

      级别1路由指的是一条路由使用的子网掩码小于或者等于有类网络的默认子网掩码(注意:有类网络的默认子网掩码是指,比如说在IPv4中,192.168.1.0/24就是一个C类网络,C类网络的默认子网掩码长度就是24)。

      级别1路由包括:

      A.网络路由:指的是一条路由使用的子网掩码等于有类网络默认的子网掩码,比如说,R2上的192.168.2.1/24;

      B.超网路由:指的是一条路由使用的子网掩码小于有类网络默认的子网掩码,比如说,R2上的172.16.0.0/15;

      C.默认路由:比如说,R1上的0.0.0.0/0;

      以上三种路由,在路由表中只显示成一行。

      (2)父路由(ParentRoute)

      注意:R2的路由表中"12.0.0.0/24"是一条父路由,父路由不包括下一跳地址或者本地路由的外出接口,实际上,父路由只是一个头部,为了暗示后面还有级别2的路由,级别2的路由也称为子路由。

      只要路由表中出现了一条子网掩码长度大于默认有类网络子网掩码的路由,父路由就有可能被创建。

      R2的路由表中,"12.0.0.0/24issubnetted,1subnets"指的是父路由,子网掩码的位数是24,这个主类网络在路由表中有一个子网。

      R1的路由表中,"172.17.0.0/16isvariablysubnetted,2subnets,2masks"也是一条父路由,由于子路由拥有不同的子网掩码,父路由的子网掩码使用主类网络默认的子网掩码16。"variablysubnetted"表示是变长子网,有两个子网,有两种掩码,不同的子网掩码在子路由中进行分别表示。

      R1中的"172.16.0.0/24issubnetted,2subnets"也是一条父路由,由于两个子路由的掩码长度都相同,在父路由中用/24表示出来,父路由中就表示了子网掩码长度,子路由就不消炎药表示了。

      (3)子路由(ChildRoute)

      在子路由明确的标出了下一跳的IP地址或本路由的外出接口,要是所有子路由的子网掩码都相同,那就将在父路由中表示出来,子路由中就不显示子网掩码长度了,例如,R1中的"172.16.1.0isdirectlyconnected,Loopback0"以及"172.16.2.0isdirectlyconnected,Loopback1";

      要是子路由有不同的子网掩码长度,子网掩码就会在每个子路由中单独表示出来,父路由就使用默认主类网络掩码进行表示,例如:R1中"172.17.1.0/24isdirectlyconnected,Loopback2"以及"172.17.2.0/26isdirectlyconnected,Loopback3"。

      (4)最终路由(UltimateRoute)

      最终路由指的是路由条目中包含下一跳路由器的IP地址或本路由的外出接口,除了父路由以外,所有级别1的路由以及子路由都是最终路由。

      (二)路由查找过程

      在一个路由器收到一个IP报文时,检查目的IP地址,以下面的步骤查找路由表:

      A.路由器按照目的IP查找级别1路由,依次查看包括父路由、超网路由、默认路由,要是最佳匹配,其中子网掩码最长匹配为级别1路由的最终路由(注意:路由条目中包含下一跳IP或本地外出接口),那这条路由用来转发数据包;

      B.在最佳匹配的是级别1中的父路由中,继续查找该父路由的子路由,要是找到匹配的子路由,那这条子路由用来转发数据包;

      C.要是子路由没有匹配,那就继续查找,这时,路由执行的是有类查找还是无类查找进行判断(注意:有类或者是无类查找是通过ipclassless和noipclassless这两条命令来控制的),要是有类查找就跳到第4步,如果是无类查找那就跳到第5步;

      D.有类路由行为:就是指终止查找,丢弃数据包;

      E.无类路由行为:就是说继续查找级别1的超网路由和默认路由,要是没有超网路由匹配,也没有默认路由匹配,就终止查找,丢弃数据包。找到匹配后,就使用找到的路由条目进行转发;

      下面,对上面介绍的路由查找过程进行演示:

      路由查找实例一:R2上新增一个Loopback1,并且配置IP(2.2.2.2/24),然后在R1上去pingR2的lo1;

    实例一

      由R1的路由表R1的查找过程进行分析:

      A.查找级别1路由,这时R1上只有一条级别1路由,就是说默认路由;

      B.然后,找到一条最终路由以及默认路由"0.0.0.0/0[1/0]via12.1.1.2",下一条是12.1.1.2;

      C.使用这条路由进行转发,R1把数据发往R2;

      路由查找的实例二:路由R1上去往12.1.1.2的数据包查找过程;

      A.R1进行查找级别1路由;

      B.找到最佳匹配的一条级别1的父路由12.0.0.0/24,然后继续下一步查找;

      C.对这条父路由的子路由进行查找,子路由中的12.1.1.0/24匹配12.1.1.2,R1根据这条路由,把数据从自己的s0/0发送出去;

      路由查找实例三:R1去往172.16.3.1的数据包查找过程;

      注意:无类查找需要让R1执行进程交换而不是快速交换,默认的快速交换会影响无类路由查找过程。

      在R2上新增一个回环接口loopback2,然后给它分配IP地址172.16.3.1/24,然后在R1上使用进程交换,使用有类查找:

    有类查找

      导致这一步无法ping通是由于R1开启了有类查找,以下是R1路由查找过程:

      A.R1根据自身路由表查找级别1路由,找到了匹配的父路由172.17.0.0/16;

      B.下一步继续查找这个父路由的子路由,却无法找到匹配172.17.3.1的最终路由;

      C.路由R1对自己是使用有类查找还是无类查找进行检查,却发现自己是使用有类查找;

      D.停止继续查找,丢弃该数据;

      开启R1的无类查找,再进行ping测试:

    ping测试

      开启无类查找以后,R1的路由查找过程:

      A.R1根据自身路由表查找级别1路由,找到了匹配的父路由172.17.0.0/16;

      B.下一步继续查找该父路由的子路由,却无法找到匹配172.17.3.1的最终路由;

      C.路由R1对自己是使用有类查找还是无类查找进行检查,发现是使用无类查找;

      D.然后查找其他的级别1路由,找到默认路由匹配,使用这条默认路由转发数据;

      以上就是关于路由表的结构以及路由查找过程的解释说明了,其中,最重要的是关于路由有类查找以及路由无类查找的讨论了。如果希望能够学习到更多关于CCNA的内容,那就请继续关注我们的网站:课课家教育吧。

课课家教育

未登录

1