我過了很久沒有寫博文了,今天在做實驗的時候同學們突然問到路由行為:有類路由行為(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