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。(選路協議的作用在于,提供最優路徑,并加入到路由表中;他為主題查看路由表提供一套更優質的路由表方案)
總結
以上是生活随笔為你收集整理的IP选路与动态选路协议(六)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: centos 安装testlink出现:
- 下一篇: MySQL查看与修改编码方式(mysql