今天看到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命令,则路由器查找路由表使用的是最长匹配原则,而不首先考虑目的地址是哪个类的。