TCP/IP詳解學習筆記(5)-IP選路,動態選路,和一些細節

                      TCP/IP詳解學習筆記(5)-IP選路,動態選路,和一些細節

1.靜態IP選路

1.1.一個簡單的路由表

選路是IP層最重要的一個功能之一。前面的部分已經簡單的講過路由器是通過何種規則來根據IP數據包的IP地址來選擇路由。這裏就不重複了。首先來看看一個簡單的系統路由表。


整的地址,既有網絡號又有主機號,那麼再匹配的時候就既要匹配網絡號,又要匹配主機號;反之,Destination就代表一個網絡,在匹配的時候只要匹配一下網絡號就可以了。

這樣,IP選路的方式就可以更加具體化了。如下

1.         首先用IP地址來匹配那些帶H標誌的DestinationIP地址。

2.         如果1失敗就匹配那些網絡地址。

3.         如果2失敗就發送到Default網關

順便提一下那個GenMask(還記得子網掩碼麼),它指定了目的地址的子網號,例如第一條的子網就是11

1.2.其他有關路由表的知識

一般,我們在配置好一個網絡接口的時候,一個路由就被直接創建好了。當然我們也可以手動添加路由。用route add命令就可以了。

而當一個IP包在某一個路由器的時候發現沒有路由可走,那麼該路由器就會給源主機發送主機不可達或者網絡不可達ICMP包來報錯。

注意,一般的操作系統默認是沒有路由功能的,這需要自己配置。這些歷史原因就不細說了,

1.3.ICMPIP重定向報文和路由發現報文

IP包在某一個地方轉向的時候,都回給發送IP報的源主機一個ICMP重定向報文,而源主機就可以利用這個信息來更新自己的路由表,這樣,隨着網絡通信的逐漸增多,路由表也就越來越完備,數據轉發的速度也會越來越快。我們需要注意的是:

1.         重定向報文只能由路由器發出。

2.         重定向報文爲主機所用,而不是爲路由器所用。

在主機引導的時候,一般會發送在網內廣播一個路由請求的ICMP報文,而多個路由器則會迴應一個路由通告報文。而且,路由其本身不定期的在網絡內發佈路由通告報文,這樣,根據這些報文,每一個主機都會有機會建立自己的路由表而實現網絡通信。路由器在一份通告報文中可以通告多個地址,並且給出每一個地址的優先等級,這個優先等級是該IP作爲默認路由的等級,至於怎麼算的就不深究了。

路由器一般會在450-600秒的時間間隔內發佈一次通告,而一個給定的通告報文的壽命是30分鐘。而主機在引導的時候會每三秒發送一次請求報文,一旦接受到一個有效的通告報文,就停止發送請求報文。

TCP/IP詳解編寫的時候,只有Solaris2.x支持這兩種報文,大多數系統還不支持這兩種報文。(後面還會講到一些有用的路由報文)

動態選路協議

前面的選路方法叫做靜態選路,簡要地說就是在配置接口的時候,以默認的方式生成路由表項。並通過route來增加表項,或者通過ICMP報文來更新表項(通常在默認方式出錯的情況下)。 而如果上訴三種方法都不能滿足,那麼我們就使用動態選路。

動態選路協議是用於動態選路的重要組成部分,但是他們只是使用在路由器之間,相鄰路由器之間互相通信。系統(路有選擇程序)選擇比較合適的路有放到核心路由表中,然後系統就可以根據這個核心路有表找到最合適的網路。也就是說,動態選路是在系統核心網絡外部進行的,它只是用一些選路的策略影響路由表,而不會影響到最後通過路由表選擇路由的那一部分。選路協議有一大類常用的叫做內部網關協議(IGP),而在IGP中,RIP就是其中最重要的協議。一種新的IGP協議叫做開放最短路經優先(OSPF)協議,其意在取代RIP。另一種最早用在網路骨幹網上的IGP協議--HELLO,現在已經不用了。

如今,任何支持動態選路的路由器都必須同時支持OSPFRIP,還可以選擇性的支持其他的IGP協議。

2.1.Unix選路程序

Unix系統上面通常都有路由守護程序--routed。還有一個叫做gategate所支持的協議要比routed多,routed只是支持RIPv1版本。而gate則支持RIPv1v2BGPv1 等等。

2.1.RIP:選路信息協議

它的定義可以在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。他們都是通過某種策略來影響路由表,所以就不說了。


發佈了50 篇原創文章 · 獲贊 79 · 訪問量 24萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章