互聯網把路由選擇協議划分為兩大類,即:
(1)內部網關協議IGP(Interior Gateway Protocol):即在一個自治系統內部使用的路由選擇協議,與在互聯網中其他自治系統選用的什么路由選擇協議無關,如RIP和OSPF協議。
(2)外部網關協議EGP(External Gateway Protocol):若源主機和目的主機處在不同的自治系統中(這兩個自治系統可能使用不同的內部網關協議),當數據報傳到一個自治系統的邊界時,需要使用一種協議將路由選擇信息傳遞到另一個自治系統中。如BGP協議。
RIP(Routing Information Protocol)
RIP是一種分布式的基於距離向量的路由選擇協議,要求網絡中的每一個路由器都要維護從它自己到其他每一個目的網絡的距離記錄。RIP允許一條路徑最多只能包含15個路由器。因此“距離”等於16時即相當於不可達,可見RIP只使用與小型互聯網。
RIP協議的特點:
(1)僅和相鄰路由器交換信息。
(2)路由器交換你的信息時當前本路由器所知道的全部信息,即自己現在的路由。
(3)按固定的時間間隔交換路由信息。然后路由器根據收到的路由信息更新路由表。當網絡拓撲發生變化時,路由器也及時向相鄰路由器通告拓撲變化后的路由信息。
RIP協議使用運輸層的用戶數據報UDP進行傳送(使用UDP的端口520)。
RIP報文結構:

RIP首部占4個字節,其中命令字段指出報文的意義。首部后面的“必為0”是為了4字節對齊。
路由部分由若干個路由信息組成。每個路由信息需要用20個字節。地址族標識符(又稱為地址類別)字段用來標志所使用的地址協議。路由標記填入自治系統號ASN(Autonomous System Number)。后面指出網絡地址、該網絡的子網掩碼、下一跳路由器地址、到此網絡的距離。一個RIP報文最多可包括25個路由,因此RIP的最大長度為4+20*25=504字節。
OSPF(Open Shortest Path First)
開放最短路徑優先協議,使用了Dijkstra提出的最短路徑算法SPF。OSPF的最主要特征是使用分布式的鏈路狀態協議(link state protocol),而不是像RIP那樣的距離向量協議。
特點:
(1)向本自治系統中所有路由器發送信息,使用的方法是洪泛法(flooding)。
(2)發送的信息是與本路由器相鄰的所有路由器的鏈路狀態,所謂鏈路狀態就是說明本路由器都和那些路由器相鄰,以及該鏈路的度量。
(3)只有當鏈路狀態發生變化時,路由器才向所有路由器用洪泛法發送此消息。
OSPF不用UDP而是直接使用IP數據報傳送(其IP數據報首部的協議字段值為89)。

各字段意義:
(1)版本:當前版本號為2。
(2)類型:五種類型分組中的一種。
(3)分組長度:包括OSPF首部在內的分組長度,以字節為單位。
(4)路由器標識符:標志發送該分組的路由器的接口的IP地址。
(5)區域標識符:分組屬於的區域的標識符。
(6)檢驗和:用來檢測分組中的差錯。
(7)鑒別類型:目前只有兩種,0(不用)和1(口令)。
(8)鑒別:鑒別類型為0時填入0,鑒別類型為1則填入8個字符的口令。
OSPF的五種分組類型:
(1)問候(Hello)分組,用來發現和維持鄰站的可達性。
(2)數據庫描述(Database Description)分組,向鄰站給出自己的鏈路狀態數據庫中的所有鏈路狀態項目的摘要信息。
(3)鏈路狀態請求(Link State Request)分組,向對方請求發送某些鏈路狀態項目的詳細信息。
(4)鏈路狀態更新(Link State Update)分組,用洪泛法對全網更新鏈路狀態。
(5)鏈路狀態確認(Link State Acknowledgment)分組,對鏈路更新分組的確認。
BGP(Border Gateway Protocol)
邊界網關協議BGP時力求尋找一條能夠到達目的網絡且比較好的路由,而並非要尋找一條最佳路由。BGP采用了路徑向量(path vector)路由選擇協議。
一個BGP發言人與其他AS的BGP發言人要交換路由信息,需要先建立TCP連接(端口號為179),然后再次連接上交換BGP報文以建立BGP會話(session),利用BGP會話交換路由信息。使用TCP連接交換路由信息的兩個BGP發閹人,彼此成為對方的鄰站(neighbor)或對等站(peer)。
特點:
(1)實現自治系統間通信,傳播網絡的可達信息。BGP 是一個外部網關協議,允許一個AS與另一個AS進行通信。BGP允許一個AS向其他AS通告其內部的網絡的可達性信息,或者是通過該AS可達的其他網絡的路由信息。同時,AS也能夠從另一個AS中了解這些信息。與距離向量選路協議類似,BGP為每個目的網絡提供的是下一跳(next-hop)結點的信息。
(2)多個BGP路由器之間的協調。如果在一個自治系統內部有多個路由器分別使用BGP與其他自治系統中對等路由器進行通信,BGP可以協調者一系列路由器,使這些路由器保持路由信息的一致性。
(3)BGP支持基於策略的選路(policy-base routing)。一般的距離向量選路協議確切通告本地選路中的路由。而BGP則可以實現由本地管理員選擇的策略。BGP路由器可以為域內和域間的網絡可達性配置不同的策略。
(4)可靠的傳輸。BGP路由信息的傳輸采用了可靠地TCP協議。
(5)路徑信息。在BGP通告目的網絡的可達性信息時,處理指定目的網絡的下一跳信息之外,通告中還包括了通路向量(path vector),即去往該目的網絡時需要經過的AS的列表,使接受者能夠了解去往目的網絡的通路信息。
(6)增量更新。BGP不需要再所有路由更新報文中傳送完整的路由數據庫信息,只需要在啟動時交換一次完整信息。后續的路由更新報文只通告網絡的變化信息。這種網絡變化的信息稱為增量(delta)。
(7)BGP支持無類型編制(CIDR)及VLSM方式。通告的所有網絡都以網絡前綴加子網掩碼的方式表示。
(8)路由聚集。BGP允許發送方把路由信息聚集在一起,用一個條目來表示多個相關的目的網絡,以節約網絡帶寬。
(9)BGP還允許接收方對報文進行鑒別和認證,以驗證發送方的身份。
BGP使用如下四種消息類型:
(1)Open消息:Open消息是TCP連接建立后發送的第一個消息,用於建立BGP對等體之間的連接關系。
(2)Keepalive消息:BGP會周期性地向對等體發出Keepalive消息,用來保持連接的有效性。
(3)Update消息:Update消息用於在對等體之間交換路由信息。它既可以發布可達路由信息,也可以撤銷不可達路由信息。
(4)Notification消息:當BGP檢測到錯誤狀態時,就向對等體發出Notification消息,之后BGP連接會立即中斷。
報文結構:

標記(marker):16字節長,用來鑒別收到的BGP報文。當不需要鑒別是,全置為1。
長度:包括首部在內的整個BGP報文的長度,以字節為單位,最小值為19,最大為4096。
類型:值為1到4,分別對應4種BGP報文中的一種。
OPEN報文:6個字段,版本(1字節)、本自治系統號(2字節)、保持時間(2字節)、BGP標識符(4字節,通常為該路由器的IP地址)。可選參數長度(1字節)和可選參數。
UPDATE報文:5個字段,不可行路由長度(2字節,指明下一個字段的長度)、撤銷的路由(列出所有要撤銷的路由)、路徑屬性總長度(2字節,指明下一個字段的長度)、路徑屬性(定義在這個報文中增加的路徑的屬性)、網絡層可達性信息NLRI(Network Layer Reachability Information,定義發出此報文的網絡,包括網絡前綴的位數、IP地址前綴)。
KEEPALIVE報文:只有BGP的19字節的通用首部。
NOTIFICATION報文:3個字段,差錯代碼(1字節)、差錯子代碼(1字節)、差錯數據(給出有關差錯的診斷信息)。