我們在之前的學習當中知道了路由表的重要性,但是我們并沒有探讨路由表到底是如何生成的,這篇文章,我們就要來探讨一下這個問題。目前網際網路采用路由選擇協定來來獲得路由表中的項目。
路由選擇協定可以分為兩大類,一種是靜态路由選擇協定和動态路由選擇協定。靜态路由選擇協定主要依靠的是人工設定路由表的方式來設定路由表中的項目,而動态路由選擇協定主要是自适應的,适合于大型的網際網路,是以我們把主要的目光放在動态路由選擇協定的特點上。
由于一個路由選擇協定最主要的是路由選擇算法,是以我們不可能讓一個算法的對象設定為整個網際網路上的所有主機,同時有些機構不希望外界知道自己機構内部的通信協定,是以整個網際網路被劃分為一個個的自治系統。每個自治系統的内部使用單一的路由選擇協定,這種協定稱之為内部網關協定,而自治系統之間也需要交換路由表的資訊,這個時候就需要使用外部網關協定。是以我們分為兩個部分來讨論。
内部網關協定之一——路由資訊協定(RIP)
RIP的主要特點是以跳數的多少來衡量路由的好壞,相鄰的路由的跳數定義為1,和相鄰的路由的相鄰路由定義為2,以此類推。RIP選擇最少跳數的路由作為路由表項目。需要注意的是,RIP最多允許一條路徑包含15個路由器,當距離為16的時候,代表這個IP位址不可達。
要想弄清楚RIP協定,最重要的是弄清楚三個要點,第一:目前路由器和那些路由器交換資訊?第二:交換什麼資訊?第三:在什麼時候交換資訊?
第一個問題的答案是——目前路由器僅和其相鄰的路由器交換資訊。
第二個問題的答案是——交換目前路由器中所有的路由表。
第三個問題的答案是——按固定的時間間隔來交換路由資訊。(在網絡拓撲發生變化的時候,路由器也要向相鄰的路由器交換必要的路由資訊)
RIP最關鍵的當然是距離向量算法。當路由器收到一個相鄰路由發過來的RIP封包,進行以下步驟:
(1)首先明白目前路由表項目中重要的三個要素——下一跳的位址,距離,目的位址。例如,路由器X将其路由表中的資訊發給目前路由器,那麼下一跳的位址是X,距離等于目前路由器X發過來的時候的距離加一,目的位址不變。
(2)經過上面處理之後,如果目的位址在目前路由器不存在,那麼就把上面的路由資訊放置到目前路由器中的路由表中。如果目的位址在目前路由器的路由表中,且下一跳位址為X,則更新目前的路由表項目的資訊。如果目的位址在路由表中,但是下一跳位址不是X,且X的距離比舊路由資訊中的距離要小,那麼就将之前路由表中的資訊代替掉。
(3)如果三分鐘還沒收到相鄰路由器的路由更新資訊,就将這個 路由器的距離設定為16,表示不可達。
(4)傳回。
對于一個協定我們有必要研究其封包的内容,RIP使用UDP來進行協定的傳輸。

其中RIP首部為4位元組,RIP資料部分,圖中每一行的長度也為4位元組,是以傳播路由表中的一個項目需要20位元組。而一共最大能傳播25個項目。
其他RIP協定需要注意的地方——RIP協定所在的網絡拓撲一旦出現問題,那麼可能需要比較長的時間才能趨于穩定。這種情況出現在,假設原本和路由器1直接相連的網絡1突然出現故障,那麼路由器1就将路由表中的關于網路1的項目改為1,16,網絡1。而正在此時,和路由器直接相連但是要通過路由器1到達網絡1的路由器2可能已經把封包發給了路由器1,封包為1,2,網絡1。此時路由器1更新路由表中的項目,這樣來回幾次,才能最後收斂,這個在教科書上稱之為,壞消息傳播的快!
内部網關協定之二——開放最短路徑優先(OSPF)
我們再讨論RIP的時候我們說明了三個要點——和哪些路由器交換路由資訊,交換什麼資訊,和什麼時候交換資訊。同樣在這裡OSPF也需要讨論這三個要點。
(1)OSPF和自制系統中所有的路由器交換資訊。路由器将資訊發送給所有相鄰的路由器,相鄰的路由器再将資訊轉發給相鄰的路由器。
(2)OSPF交換的資訊是和它相鄰所有路由器的鍊路狀态,而不僅僅是“距離”。這裡鍊路狀态其實很靈活,可以由管理者來設定相應的鍊路代價。
(3)在網絡拓撲發生變化的時候OSPF要交換資訊,在規定的時間間隔也要交換資訊。
需要注意的是路由器交換的資訊隻是它所知道的部分資訊,由于路由資訊不斷地在全網當中不斷地傳播,是以所有的路由器都知道全網中所有的路由器的鍊路狀态,知道全網的網絡拓撲,是以可以建立一個資料庫,建立起路由表。
由于OSPF可以适用于很大的網絡,是以在具體的實作過程當中在自治系統當中劃分出更多的區域,這樣可以減少算法的開銷,收斂的也更加地快。
我們再來看一下OSPF的封包的具體内容。(OSPF使用IP資料報進行傳送)
’
其中需要解釋的是OSPF資料報的類型。一共有五種。
(1)問候分組,這個是探索相鄰的路由器是否可達,也是進行其他封包交換的基礎。
(2)資料庫描述分組,向相鄰的路由器傳達目前路由器中所有的摘要資訊。
(3)鍊路狀态請求分組,向路由器請求資料庫中某部分的詳細資訊。
(4)鍊路狀态更新分組,将鍊路狀态的資訊向全網洪範發送。
(5)鍊路狀态确認分組,對鍊路狀态更新分組的确認。
還有需要注意的地方就是——當OSPF封包在全網當中洪範地傳播的時候,目前路由器需要給相鄰的路由器傳播這份封包,但是不能重新傳給上遊的路由器。