路由器的作用:
路由器收到數據包后,會根據數據包中的目的IP地址選擇一條最優的路徑,並將數據包轉發到下一個路由器,路徑上最后的路由器負責將數據包送交目的主機。
那么如何選擇最優路徑的,這便涉及到了路由選路。

數據包在網絡上的傳輸就好像是體育運動中的接力賽一樣,每一個路由器負責將數據包按照最優的路徑向下一跳路由器迚行轉發,通過多個路由器一站一站的接力,最終將數據包通過最優路徑轉發到目的地。當然有時候由於實施了一些特別的路由策略,數據包通過的路徑可能並並一定是最佳的。路由器能夠決定數據報文的轉發路徑。如果有多條路徑可以到達目的地,則路由器會通過計算來決定最佳下一跳。計算的原則會隨實際使用的路由協議不同而不同。
1 路由器首先會查詢路由表

路由表中包含了下列關鍵項:
目的地址(Destination):用來標識IP包的目的地址或目的網絡。
網絡掩碼(Mask):在路由表中網絡掩碼也具有重要的意義。IP地址和網絡掩碼進行“邏輯不”運算便可得到相應的網段信息。
例如:目的地址為8.0.0.0,掩碼為255.0.0.0,邏輯不運算后便可得到一個A類的網段信息(8.0.0.0/8)。
PS:根據目的地址與掩碼進行邏輯不運算來確定網段。
邏輯不運算:
8.0.0.0 --->00001000.0.0.0
255.0.0.0 --->11111111.0.0.0
邏輯不運算--->00001000.0.0.0 1與1得1,其他都為0
網絡掩碼的另一個作用還表現在當路由表中有多條目的地址相同的路由信息時,路由器將選擇其掩碼最長的一項作為匹配項。
協議(Proto):表明使用那種路由協議
路由表中優先級(Pre)、度量值(cost) 下文會有介紹
輸出接口(Interface):指明IP包將從該路由器的哪個接口轉發出去。 下一跳IP地址(NextHop):指明IP包所絆由的下一個路由器的接口地址。
2 最長匹配原則 對象是目的網絡

例如路由器收到數據包目的IP是10.1.1.1,查詢路由表后,路由表中有兩個表項到達目的網段10.1.1.0,下一跳地址都是20.1.1.2。如果要將報文轉發至網段10.1.1.1,則10.1.1.0/30符合最長 匹配原則。
3 路由優先級 前提是同一網絡 對象是不同路由協議

每個路由協議都有一個協議優先級(取值越小、優先級越高)。當有多個路由信息時,選擇最高優先級的路由作為最佳路由。
如圖所示,路由器通過兩種路由協議學習到了網段10.1.1.0的路由。雖然RIP協議提供了一條看起來更加直連的路線,但是由於OSPF具有更高的優先級,因而成為優選路由,並被加入路由表中。
PS: 路由表中存在的始終是最佳路由。
4 路由度量 前提是同一網絡 同一路由協議 對象是不同開銷

如果路由器無法用優先級來判斷最優路由,則使用度量值(metric)來決定需要加入路由表的路由。
一些常用的度量值有:跳數,帶寬,時延,代價,負載,可靠性等。跳數是指到達目的地所通過的路由器數目。 帶寬是指鏈路的容量,高速鏈路開銷(度量值)較小。
metric值越小,路由越優先;因此,圖示中metric=1+1=2的路由是到達目的地的最優路由,其表項可以在路由表中找到。
路由器通過上述規則會選擇出最佳路徑,然后就可以轉發數據了。
轉載鏈接:https://www.jianshu.com/p/658fd52a1ca9