路由表裡的子網掩碼有什麼作用?看這篇文章你就懂了

求大神給具體答案,不要說什麼精確選擇路由路線什麼的,我想知道一個ip過來後是怎麼和這個掩碼進行操作的,又和路由表裡的目的ip進行了怎樣的比較?

路由表裡的子網掩碼有什麼作用?看這篇文章你就懂了

北京的老王打算來

上海浦東川沙迪斯尼

玩,老王是老司機,不屑用車載導航、手機導航,老王完全靠G2高速上的指示牌一路順暢到達了迪斯尼。老王是如何做到的?

當老王的車子進入江蘇境內時,前方有三個分岔口,分別指示:

上海

南京

合肥

老王毫不猶豫地選擇了上海,這個動作非常簡單,計算時間可能只有零點幾毫秒,但是老王的大腦還是計算了。老王拿著自己的目的地:上海浦東川沙迪斯尼,與三者分別匹配,結果只有與上海匹配到兩個字:“上海“。與其它兩者沒有任何的匹配,老王快速選擇了上海。

老王三腳油門到了上海境內,前方又出現了三個岔路口,分別是:

上海嘉定

上海浦東

上海浦西

老王又用自己的目的地“

上海浦東川沙迪斯尼

“與三者進行匹配,匹配的結果分別為:

上海

上海浦東

上海

老王不傻,老王果斷地選擇了最長的匹配:上海浦東。老王一腳油門又走了30公里。前方又出現了三個岔路口,分別為:

上海浦東三林

上海浦東南匯

上海浦東川沙

老王快速計算,匹配結果為:

上海浦東

上海浦東

上海浦東川沙

老王最終選擇了上海浦東川沙,下高速離很遠就看到了迪斯尼的天鵝城堡。。。

路由器對IP包的路由決策,和老王的路由決策是非常相似的,每次做路由決策採用最長匹配原則。

最長匹配原則

將IP報文目的IP地址提取出來,與路由表的掩碼做按位與操作,得到的結果,與路由表條目進行匹配,匹配最長勝出,採用該路由表指示的出口將IP包扔出。

二進位制按位與操作

0 and 0 = 0

0 and 1 = 0

1 and 0 = 0

1 and 1 = 1

一個例子

IP報文的目的IP = 8。8。8。8,到達路由器,路由器有以下幾條路由:

0.0.0.0/0 ------------ > 中國

20.1.0.0/16 ------------ > 江蘇南京

8.8.0.0/16 ------------ > 上海浦東川沙

8.1.8.8/32 ------------ > 上海黃埔區中山東一路一號

匹配長度(二進位制長度)為:

0

0

16

8

路由器選擇了第三條路由:8。8。0。0/16,因為它匹配長度最長。

作者|車小胖談網路|公眾號