我过了很久没有写博文了,今天在做实验的时候同学们突然问到路由行为:有类路由行为(classful)与无类路由行为(classless)。我一时不知道怎么回答,我知道自己不是很明白,之前听老师在课上讲的时候也是很模糊,自己也没怎么去深究这些基本很少有人注意的环节,但是感觉我们做技术的要有敢于直面自己的弱点与不足。
事后我也好好学习了一把,假设有这样一个网络:
--A--192.168.1.0/24--B---
由两个路由器直连192.168.1.0/24的网段,且A有二个loop back 口,分别是172.16.1.1,172.16.2.1.B路由器也有两个loopback口,网络是172.16.3.1和173.16.3.1。
这时A的路由表可能是下面所示:
A: 172.16.0.0/24 is subneted,2 subnets
C 172.16.1.0 is directly connected, Loopback0
C 172.16.2.0 is directly connected, Loopback1
C 192.168.1.0/24 is directly connected, ser0/0
S* 0.0.0.0/0[1/0] via ser0/0
B C 172.16.3.0 is directly connected, Loopback0
C 173.16.13.0 is directly connected, Loopback2
S* 0.0.0.0/0[1/0] via ser0/0]
1,那么如果A的LO 0口去PING B的Lo 0口的话(也就是172.16.1.1 ping 172.16.3.1),这时是no ip classless有类路由行为,首先A路由器会把这个包的目的地址与主类172.16.0.0/16也叫一级父路由去匹配,成功。注意还会继续往下面的子路由条目或叫做2级子路由/3级子路由匹配,很显然都不匹配了,那么有类路由路由协议只做到这里,不会向下查找。不会再去匹配默认路由了!(除非在匹配的时候就没有主类路由172.16.0.0与它匹配,它才会放弃继续查找匹配默认路由),最后我们根据以上可以知道ping的结果是不通的,因为它只匹配了主类,以为知道怎么走了实际上到达不了目标,如果目标是173.16.3.1,则只能匹配默认路由了,会通!
2,如果是ip classless无类查找的话,情况就稍有差别了,这也是为什么现在都会默认用无类查找的重要原因。
在无类查找行为里,它首先会看是否与主类匹配且还会看是否下面的子网也匹配,如果只匹配主类,没有更明细的路由/子网匹配,则它还不死心继续向下查询。
如果实在没有匹配的话,那只好走默认了。所以无类路由行为对于明细查找相对支持较好一些,至少没有明细匹配之后还可以走默认路由吧。
本文转自 Bruce_F5 51CTO博客,原文链接:http://blog.51cto.com/zenfei/512840