1. 程式人生 > >IP選路與動態選路協議(六)

IP選路與動態選路協議(六)

(參考文獻)TCP/IP詳解,卷1:協議

選路是IP最重要的功能之一。需要進行選路的資料報可以有本地主機產生,也可以由其他主機產生。在有一種情況下,主機必須配置成一個路由器,否則通過網路介面搜到的資料報,如果目的地址不是本機就要丟棄。


在以上圖中有一個路由守護程式(daemon),通常這是一個使用者程序。在Unix系統中,大多數普通的守護程式都是路由程式和閘道器程式(術語daemon指的是執行在後臺的程序,它代表整個系統執行某些操作。Daemon一般在系統引導時啟動,在系統執行期間一直存在)。

簡單路由表

執行netstat –rn 命令輸出如下:

Destination    Gateway         Genmask         Flags  MSS Window  irtt Iface

152.188.7.133  192.168.8.1     0.0.0.0         UGH       0 0          0 eth0

Default        192.168.8.1     0.0.0.0         UG        0 0          0 eth0

169.254.0.0    0.0.0.0         255.255.0.0     U        0 0          0 eth0

192.168.8.133  0.0.0.0         255.255.255.0   U        0 0          0 eth0

第一行表明,如果目的地址是 192.168.8.133 那麼閘道器(路由器)將把分組轉發給192.168.8.1。

對於一個給定的路由器,可以打印出5種不同的標誌:

U  該路由器可以使用

G  該路由器是到一個閘道器(路由器),如果沒有標誌說明目的地址是直接相連的。

H  該路由器是到一個主機,也就是說,目的地址是一個完整的主機地址.

D  該路由是由重定向報文建立的

M  該路由已被重定向報文修改

標誌G是非常重要的,他區分了間接路由和直接路由,區別在於,發往路由的分組中不但具有目的端的IP地址,還具有其鏈路層地址,指明的是閘道器。當為某個目的地址搜尋路由表時,主機地址必須與目的地址完全匹配,如果沒有則匹配網路地址;而網路地址只需要匹配目的地址的網路號和子網號就可以了。

輸出的第2行是預設路由,每個主機都有一個或者多個預設路由。這一項表明,如果在路由表中沒有找到特定的路由,就把分組傳送到路由器  192.168.8.1  

,這說明當前主機利用這一路由表現就可以通過Internet訪問其他的網路系統。

沒有到達目的地的路由

前面我們都假定對路由表的搜尋都能找到匹配的表項,即使匹配的是預設路由。但如果路由表中沒有預設項,又沒有找到匹配的項,這時會發生什麼呢。

結果取決於該IP資料報是由主機產生的還是被轉發的。如果資料報是由本地產生的,那麼就給傳送該資料報的應用返回一個差錯(“主機不可達差錯”或“網路不可達差錯”)。如果是被轉發的資料報,那麼就給原始傳送端傳送一份ICMP主機不可達的差錯報文。

ICMP重定向差錯

我們假定主機發送一份IP資料報給R1,因為R1是該主機的預設路由。

當R1收到資料報並檢查他的路由表,發現R2是傳送該資料報的下一站。當他把資料報傳送給R2時,R1監測到他正在傳送資料報的介面與資料報到達介面是一樣的(即R1接收到該資料報的埠和他要傳送出去使用的埠是同一個)。這樣就給路由器傳送重定向報文給原始傳送端提供線索。

R1傳送一份ICMP重定向報文給主機,告訴他以後把資料報傳送給R2而不是R1,。

重定向一般讓具有很少選路資訊的主機逐漸建立更完善的路由表。主機啟動時,路由表中可以只有一個預設表項。一旦預設路由傳送差錯,預設路由器將通知他進行重定向,並允許主機對路由表做相應的改動。ICMP重定向允許TCP/IP主機在進行選路時不需要具有智慧特性,而把所有的智慧特性放在路由器端。主機只是通過重定向報文來逐步學習。

ICMP路由器發現報文

一般情況下,初始化路由表的方法是在配置檔案中指定靜態路由。這種方法常用來設定預設路由另一種方法是使用ICMP通告報文和請求報文。

一般認為,主機在引導以後要廣播或多播一份路由器請求報文。一臺或更多臺路由器相應一份路由器通告報文。另外路由器定期的廣播或者多播傳送他們的路由器通告報文,執行每個正在監聽的主機更新他們的路由表。

ICMP路由請求報文格式:


ICMP路由器通告報文:

 

路由器在一份報文中可以通告多個地址。地址書指的是報文中所含的地址數;地址項大小指的是每個路由器地址32bit的數目;生存時間指的是通告地址有效的時間(秒)。優先順序是指出IP地址作為預設路由器地址的優先順序。

 動態選路

路由器之間的通訊使用RIP協議,即選路資訊協議(Routing Infromation Protocol),大多數TCP/IP實現都提供這個應用廣泛的協議。

當相鄰路由器之間進行通訊,已告知對方每個路由器當前所連線的網路,這時就出現了動態選路。路由器之間必須採用選路協議進行通訊,這樣的選路協議有很多種。路由器上有一個程序,成為路由守護程式,它執行選路協議,並與其相鄰的路由器進行通訊。路由守護程式更具它從相鄰路由器接收到的資訊,更新核心中的路由表。

動態選路並不會改變核心在IP層的選路方式(即IP選路)。核心搜尋路由表,查詢主機路由、網路路由。以及預設路由的方式並沒有改變。僅僅是放置到路由表中的資訊變了----當路由隨時間變化時,路由是由路由守護程式動態地增加或刪除,而不是來自載入程式檔案中的route程式。

路由守護程式將選路策略加入到系統中,選擇路由並加入到路由表中。如果守護程式發現前往同一信宿存在多條路由,那麼他(以某種方法)將選擇最佳路由並加入到路由表中。如果路由守護程式發現一條鏈路已經斷開(可能是路由器崩潰或者線路不好),他可以刪除受影響的路由或增加一條路由以繞過該問題。

在internet這樣的系統中,採用了許多不同的選路協議。Internet是由多組自制系統組成的,每個自制系統都有各自的選路協議。常常將一個公司或者大學定義為一個自制系統。每個自制系統可以選擇該自制系統中各個路由器之間的選路協議,這種協議我們稱之為內部閘道器協議IGP(Interior Gateway Protocol)或域內選路協議(interadomain routing protocol)。最常用的IGP選路資訊協議RIP。(選路協議的作用在於,提供最優路徑,並加入到路由表中;他為主題檢視路由表提供一套更優質的路由表方案)