這個系列主要會介紹一些計算機網絡體系中「看上去稍有些複雜」但「一旦理解了又會很容易」的內容,我會嘗試經過示意圖/動圖的方式對概念進行儘可能直觀的詮釋,若是可以對你們學習計算機網絡有所啓發的話就最好了。算法
互聯網採用分層次的路由選擇協議。緣由是:數據庫
定義:在單一的技術管理下的一組路由器,而這些路由器使用一種 AS 內部的路由選擇協議和共同的度量以肯定分組在該 AS 內的路由,同時還使用一種 AS 之間的路由選擇協議用以肯定分組在 AS之間的路由。
儘管一個 AS 使用了多種內部路由選擇協議和度量,但重要的是一個 AS 對其餘 AS 表現出的是一個單一的和一致的路由選擇策略。
網絡
「路由器」和「網關」在這裏能夠視做同義詞。session
內部網關協議 IGP (Interior Gateway Protocol)分佈式
外部網關協議 EGP (External Gateway Protocol)佈局
路由信息協議 RIP (Routing Information Protocol) 是內部網關協議 IGP 中最早獲得普遍使用的協議。
RIP 是一種分佈式的、基於距離向量的路由選擇協議。學習
RIP 協議中的「距離」也稱爲「跳數」(hop count),由於每通過一個路由器,跳數就加 1。(這裏的「距離」實際上就是指「最短距離」)計算機網絡
RIP 容許一條路徑最多隻能包含 15 個路由器。「距離」的最大值爲 16 時即至關於不可達。3d
以目前普遍使用的RIP version2爲例,簡單瞭解一下RIP報文的組成:
orm
距離向量算法
路由器收到相鄰路由器(其地址爲 X)的一個 RIP 報文:
(1) 先修改此 RIP 報文中的全部項目:把「下一跳」字段中的地址都改成 X,並把全部的「距離」字段的值加 1。
(2) 對修改後的 RIP 報文中的每個項目,重複如下步驟:
若項目中的目的網絡不在路由表中,則把該項目加到路由表中。
不然
若下一跳字段給出的路由器地址是一樣的,則把收到的項目替換原路由表中的項目。
不然
若收到項目中的距離小於路由表中的距離,則進行更新,
不然,什麼也不作。(3) 若 3 分鐘尚未收到相鄰路由器的更新路由表,則把此相鄰路由器記爲不可達路由器,即將距離置爲 16(表示不可達)。
(4) 返回。
文字敘述看着有點累,不過理解了「不一樣路徑選短的,一樣路徑選新的」的思路就會很容易。
RIP只與相鄰路由交換信息不可避免會帶來路由更新的一類延遲,即以前提到的「好消息傳得快,壞消息傳得慢」。
「好消息傳得快,壞消息傳得慢」其實是信息傳送延遲形成路由器的「誤判」
例如:
R1本來直接鏈接NET-A(可直接交付),但NET-A忽然出故障,變爲不可達。
R1中關於NET-A不可達的更新尚未傳遞給鏈接着R1的路由R2,此時R2仍覺得能夠經過R1達到NET-A,便向R1發送<NET-A,2,R2>的路由表;
R1收到後覺得R2能夠到達NET-A(其實已經不行了),便更新本身的路由表爲<NET-A,3,R2>,並將更新發送出去;
R2收到更新後將本身的路由表更新爲<NET-A,4,R1>,並將更新發送出去;
如此來來回回直到兩個路由器的路由表跳數都更新至16才肯定了NET-A不可達。
爲了克服RIP的缺點,咱們便開發出了OSPF協議。
開放最短路徑優先協議,即OSPF(Open Shortest Path First),如上所述,是爲克服 RIP 的缺點在 1989 年開發出來的。
因爲各路由器之間頻繁地交換鏈路狀態信息,所以全部的路由器最終都能創建一個鏈路狀態數據庫。
這個數據庫實際上就是全網的拓撲結構圖,它在全網範圍內是一致的(這稱爲鏈路狀態數據庫的同步)。
同時,爲了使 OSPF 可以用於規模很大的網絡,OSPF 將一個自治系統再劃分爲若干個更小的範圍,叫作區域。
劃分區域後,利用洪泛法交換鏈路狀態信息的範圍侷限於每個區域而不是整個的自治系統。
在一個區域內部的路由器只知道本區域的完整網絡拓撲,而不知道其餘區域的網絡拓撲的狀況。
OSPF 使用層次結構的區域劃分。在上層的區域叫作主幹區域 (backbone area)。
主幹區域的標識符規定爲0.0.0.0,用來連通其餘在下層的區域。
OSPF還有一點與RIP不一樣,即OSPF 不用 UDP 而是直接用 IP 數據報傳送。
OSPF 構成的數據報很短,這樣作可減小路由信息的通訊量。
OSPF有五種分組類型
下圖簡單說明了OSPF的五種分組類型以及它們所能完成的操做
BGP 是不一樣自治系統的路由器之間交換路由信息的協議。 默認爲當前較新的版本BGP-4。
互聯網的規模太大,使得自治系統之間路由選擇很是困難。對於自治系統之間的路由選擇,要尋找最佳路由是很不現實的。
所以,邊界網關協議BGP只能是力求尋找一條可以到達目的網絡且比較好的路由(不能兜圈子),而並不是要尋找一條最佳路由。
每個自治系統的管理員要選擇至少一個路由器做爲該自治系統的「** BGP 發言人**」 (BGP speaker)。經過它與其餘自治系統(中的 BGP 發言人)交換路由信息。
一個 BGP 發言人與其餘自治系統中的 BGP 發言人要交換路由信息,就要先創建 TCP 鏈接,而後在此鏈接上交換 BGP 報文以創建 BGP 會話(session),利用 BGP 會話交換路由信息。
使用 TCP 鏈接交換路由信息的兩個 BGP 發言人,彼此成爲對方的鄰站(neighbor)或對等站(peer)。
BGP所交換的網絡可達性的信息就是要到達某個網絡所要通過的一系列 AS。
當BGP發言人互相交換了網絡可達性的信息後,各BGP發言人就根據所採用的策略從收到的路由信息中找出到達各 AS 的較好路由。
在衆多路由選擇協議中,BGP是爲數很少的使用TCP做爲傳輸協議的路由選擇協議。
BGP有四種分組類型
真的很但願可以和你們交流啊(有任何想法/意見/建議的話均可以在留言區留言~