ip classless(无类)和no ip classless(有类classful)
什么是有类:no ip classless 或 classful
严格按照TCP/IP ABCD给IP地址分类,子网掩码只在所定义的路由器内有效,掩码信息到不了其它路由器;
什么是无类:ip classless
不按照按照TCP/IP ABCD给IP地址分类,掩码任何时候都和IP地址成对地出现;
IP classless的作用:
1、ip classless这条命令是作用于路由转发进程的,告诉路由器工作在无类环境下
2、它能让路由器超越有类网络的边界而根据最长匹配条目来转发数据包;
3、当目的网络没有出现在路由表中时通过默认路由转发数据包,而不是简单的丢弃
4、如果路由器工作在有类环境下,当目的网络出现在路由表中,但没有具体的网络 匹配时,防火墙将丢弃数据包。
例如:
ip classless命令最早在cisco IOS 10.0被介绍,在cisco IOS 11.3后。ip classless就缺省有效了(enable)。
为什么呢?
原因是这样的,当在路由器中使用了classful的路由协议(如:RIP)时,而在路由表里有子网时,问题就出现了。
当no ip classless的时候,假设现在路由器里有10.0.0.0/8,10.1.0.0/16,10.2.0.0/16的路由记录,这时路由器收到了
一个目的地为10.4.0.0/16的IP包,路由器发现10.4.0.0/16不在路由表中,那么这个包将被路由器丢弃。即使有缺省路由也没有用。
现在假设 ip classless命令被启动了,那么这个10.4.0.0/16包将怎样被转发呢?它将会按照10.0.0.0/8的路由记录来转发这个包。因为它是10.4.0.0/16的超网。当然,如果路由器里连这个10.0.0.0/8的路由记录也不存在,10.4.0.0/16的包就会按照缺省路由来
总结:
加一条ip classless命令,那么路由器成为无类路由环境,当目的数据包到达时,不进行有类匹配,而是进行无类匹配,即进行最长匹配原则;当用最长匹配时不在路由表内,那么路由器将把它交给默认路由,通过默认路由,把数据包送出。
使用有类路有,当一个路由器收到一个数据包,而它的目的地址在路由表中不存在的话,它就会丢弃这个数据包。如果你使用了缺省路由,就必须使用ip classless命令,因为远端子网并不存在于你的路由表中。
看了ip classless命令书中的解释,说的还不是很清楚.
关于ip classless问题,给个简单的例子,假设show ip route时在路由表中有以下输出
C 10.1.1.0/24 s0/0
C 10.1.2.0/24 s0/1
S 10.1.3.0/24 s0/0
S 0.0.0.0/0 s0/1
问路由器收到IP包,目的地址10.1.4.1,路由器该如何转发?
问路由器收到IP包,目的地址20.1.4.1,路由器该如何转发?
根据常识大家都会说走默认路由。回答正确,但是这只是在ip classless命令生效的时候。如 果去除这条命令,结果就是去20.1.4.1走默认路由,去10.1.4.1路由器则丢弃!
为什么这样,在没有ip classless命令生效的时候,cisco 路由器找路由记录首先看目的地址 是哪个大的网络号,如现在10.1.4.1的大网络号是10.0.0.0,因为它是A类地址,然后在路由表中找这个大网络号或其子网的相关的记录,如果能找到对应记录则转发,如果找不到则丢弃。为什么不走默认路由?因为现在路由器认为它知道10.0.0.0这个A类地址上的所有子网,例子中只有3个10.1.1.0/24, 10.1.2.0/24 , 10.1.3.02/24,数据包要去的10.1.4.0/24这个子网并不存在,所以将数据包丢掉。
去20.1.4.1则不同,因为路由表中没有20.0.0.0这个大网络号的相关路由记录,所以立刻走默认路由。
总结:ip classless命令其实是影响的路由表查找的方法,最直接的效果就是对默认路由的使用。有了ip classless命令,则路由器查找路由表使用的是最长匹配原则,而不首先考虑目的地址是哪个类的
|