選路是ip層最重要的乙個功能之一。前面的部分已經簡單的講過路由器是通過何種規則來根據ip資料報的ip位址來選擇路由。這裡就不重複了。首先來看看乙個簡單的系統路由表。
對於乙個給定的路由器,可以列印出五種不同的flag。
1.u表明該路由可用。
2.g表明該路由是到乙個閘道器。如果沒有這個標誌,說明和destination是直連的,而相應的gateway應該直接給出destination的位址。
3.h表明該路由是到乙個主機,如果沒有該標誌,說明destination是乙個網路,換句話說destination就應該寫成乙個網路號和子網號的組合,而不包括主機號(主機號碼處為0),例如 192.168.11.0
4.d表明該路由是為重定向報文建立的
5.m該路由已經被重定向報文修改
u沒啥可說的,g說明這是乙個閘道器,如果你要發資料給destination,ip頭應該寫destination的ip位址,而資料鏈路層的mac位址就應該是gateway的mac位址了;反之,如果沒有g標誌,那麼資料鏈路層和ip層的位址應該是對應的。h說明了destination的性質,如果是h的,則說明該位址是乙個完整的位址,既有網路號又有主機號,那麼再匹配的時候就既要匹配網路號,又要匹配主機號;反之,destination就代表乙個網路,在匹配的時候只要匹配一下網路號就可以了。
這樣,ip選路的方式就可以更加具體化了。如下
1.首先用ip位址來匹配那些帶h標誌的destinationip位址。
2.如果1失敗就匹配那些網路位址。
3.如果2失敗就傳送到default閘道器
順便提一下那個genmask(還記得子網掩碼麼),它指定了目的位址的子網號,例如第一條的子網就是11。
一般,我們在配置好乙個網路介面的時候,乙個路由就被直接建立好了。當然我們也可以手動新增路由。用route add命令就可以了。
而當乙個ip包在某乙個路由器的時候發現沒有路由可走,那麼該路由器就會給源主機傳送「主機不可達」或者「網路不可達」的icmp包來報錯。
注意,一般的作業系統預設是沒有路由功能的,這需要自己配置。這些歷史原因就不細說了。
當ip包在某乙個地方轉向的時候,都回給傳送ip報的源主機乙個icmp重定向報文,而源主機就可以利用這個資訊來更新自己的路由表,這樣,隨著網路通訊的逐漸增多,路由表也就越來越完備,資料**的速度也會越來越快。我們需要注意的是:
重定向報文只能由路由器發出。
重定向報文為主機所用,而不是為路由器所用。
在主機引導的時候,一般會傳送在網內廣播乙個路由請求的icmp報文,而多個路由器則會回應乙個路由通告報文。而且,路由其本身不定期的在網路內發布路由通告報文,這樣,根據這些報文,每乙個主機都會有機會建立自己的路由表而實現網路通訊。路由器在乙份通告報文中可以通告多個位址,並且給出每乙個位址的優先等級,這個優先等級是該ip作為預設路由的等級,至於怎麼算的就不深究了。
路由器一般會在
450-600秒的時間間隔內發布一次通告
,而乙個給定的通告報文的壽命是30分鐘。而主機在引導的時候會每三秒傳送一次請求報文,一旦接受到乙個有效的通告報文,就停止傳送請求報文。
在tcp/ip詳解編寫的時候,只有solaris2.x支援這兩種報文,大多數系統還不支援這兩種報文。(後面還會講到一些有用的路由報文)
前面的選路方法叫做
靜態選路
,簡要地說就是在配置介面的時候,以預設的方式生成路由表項。並通過route來增加表項,或者通過icmp報文來更新表項(通常在預設方式出錯的情況下)。 而如果上訴三種方法都不能滿足,那麼我們就使用動態選路。
動態選路協議是用於動態選路的重要組成部分,但是他們只是使用在路由器之間,相鄰路由器之間互相通訊。系統(路有選擇程式)選擇比較合適的路由放到核心路由表中,然後系統就可以根據這個核心路有表找到最合適的網路。也就是說,動態選路是在系統核心網路外部進行的,它只是用一些選路的策略影響路由表,而不會影響到最後通過路由表選擇路由的那一部分。選路協議有一大類常用的叫做內部閘道器協議(igp),而在igp中,rip就是其中最重要的協議。一種新的igp協議叫做開放最短路經優先(ospf)協議,其意在取代rip。另一種最早用在網路骨幹網上的igp協議--hello,現在已經不用了。
如今,任何支援動態選路的路由器都必須同時支援ospf和rip,還可以選擇性的支援其他的igp協議。
unix系統上面通常都有路由守護程式--routed。還有乙個叫做gate。gate所支援的協議要比routed多,routed只是支援ripv1版本。而gate則支援ripv1、v2,bgpv1 等等。
它的定義可以在rfc1058內找到,這種協議使用
udp作為載體(也就是udp的上層協議)
。我們最關心的就是rip其中的乙個段,叫做度量的段,這是乙個以hop作為計數器(就是以走過多少路由為計數器)的段(ip協議裡面也有乙個ttl不是麼)。這個度量段將最終影響到路由表的建立。
一般說來routed要承擔如下的工作:
1.給每乙個已知的路由器傳送rip請求報文,要求其他路由器給出完整的路由表。這種報文的命令字段為1,位址欄位為0,度量地段為16(相當於無窮大)。
2.接受請求,如果接收到剛才的那個請求,就把自己的完整的路由表交給請求者。如果沒有,就處理ip請求表項,把表項中自己有的部分添上跳數,沒有的部分添上16。然後發給請求者。
3.接受回應。更新自己的路由表。使用hop數小的規則。
4.定期更新路由表,一般是30s(真頻繁)給相鄰的路有啟發一次自己的路由表。這種形式可以使廣播形式的。
這個協議看起來會工作的很好,但是,這裡面其實有很多隱藏的憂患,比如說rip沒有子網的概念,比如說環路的危險。而且hop數的上限也限制了網路的大小。
因此,出現了很多ripv1的替代品,比如說ripv2,比如說ospf。他們都是通過某種策略來影響路由表,所以就不說了。
TCP IP學習筆記(5) IP選路
靜態ip選路 乙個簡單的路由表 選路是ip層最重要的乙個功能之一。前面的部分已經簡單的講過路由器是通過何種規則來根據ip資料報的ip位址來選擇路由。這裡就不重複了。首先來看看乙個簡單的系統路由表。destination gateway genmask flags metric ref use ifa...
《TCP IP詳解》筆記 IP選路
1 概述 2 選路原理 3 icmp重定向差錯 4 icmp發現報文 ip層工作步驟 1 搜尋匹配的主機位址 mac 2 搜尋匹配的網路位址 ip 3 搜尋預設表項,該預設的表項在路由表中被指定為乙個網路表項,網路號為0 ip層進行的主要是一種選路機制,搜尋路由表並決定向那個網路介面傳送分組。具體的...
TCP IP詳解學習筆記(6) IP選路
1.概述 路由演算法是用於獲取路由表中的路由專案。它是路由選擇協議的核心。2.路由演算法的分類 從路由演算法能否隨網路的通訊量或拓撲自適應的進行調整變化來分,可以分為兩類。動態路由選擇策略 3.自治系統 網際網路將整個網際網路劃分成許多較小的自治系統,一般簡稱為as。自治系統有以下特點 4.路由選擇...