選路是IP最重要的功能之一。圖1是IP層處理過程的簡單流程。需要進行選路的數(shù)據(jù)報
可以由本地主機產(chǎn)生,也可以由其他主機產(chǎn)生。在后一種情況下,主機必須配置成一個路由
器,否則通過網(wǎng)絡(luò)接口接收到的數(shù)據(jù)報,如果目的地址不是本機就要被丟棄。

圖1:IP層工作流程
圖1中的路由表經(jīng)常被IP訪問(在一個繁忙的主機上,一秒鐘內(nèi)可能要訪問幾百次),
但是它被路由守護程序等更新的頻度卻要低得多(可能大約30秒一次)。
選路的原理
IP搜索路由表的幾個步驟:
1) 搜索匹配的主機地址;
2) 搜索匹配的網(wǎng)絡(luò)地址;
3) 搜索默認表項(默認表項一般在路由表中被指定為一個網(wǎng)絡(luò)表項,其網(wǎng)絡(luò)號為0)。
匹配主機地址步驟始終發(fā)生在匹配網(wǎng)絡(luò)地址步驟之前。
IP層進行的選路實際上是一種選路機制,它搜索路由表并決定向哪個網(wǎng)絡(luò)接口發(fā)送分組。這區(qū)別于選路策略,它只是一組決定把哪些路由放入路由表的規(guī)則。IP執(zhí)行選路機制,而路由守護程序則一般提供選路策略。
ICMP主機與網(wǎng)絡(luò)不可達差錯
當路由器收到一份IP數(shù)據(jù)報但又不能轉(zhuǎn)發(fā)時,就要發(fā)送一份ICMP“主機不可達”差錯報
文(見第六章)。
ICMP重定向差錯
當IP數(shù)據(jù)報應(yīng)該被發(fā)送到另一個路由器時,收到數(shù)據(jù)報的路由器就要發(fā)送ICMP重定向差
錯報文給IP數(shù)據(jù)報的發(fā)送端。這在概念上是很簡單的,正如圖2所示的那樣。只有當主機可以選擇路由器發(fā)送分組的情況下,我們才可能看到ICMP重定向報文。

圖2:ICMP重定向例子
1) 我們假定主機發(fā)送一份IP數(shù)據(jù)報給R1。這種選路決策經(jīng)常發(fā)生,因為R 1是該主機的默認路由。
2) R1收到數(shù)據(jù)報并且檢查它的路由表,發(fā)現(xiàn)R2是發(fā)送該數(shù)據(jù)報的下一站。當它把數(shù)據(jù)報
發(fā)送給R2時,R1檢測到它正在發(fā)送的接口與數(shù)據(jù)報到達接口是相同的(即主機和兩個路由器
所在的LAN)。這樣就給路由器發(fā)送重定向報文給原始發(fā)送端提供了線索。
3) R1發(fā)送一份ICMP重定向報文給主機,告訴它以后把數(shù)據(jù)報發(fā)送給R2而不是R1。
重定向一般用來讓具有很少選路信息的主機逐漸建立更完善的路由表。主機啟動時路由
表中可以只有一個默認表項(在圖2所示的例子中,為R1或R2)。一旦默認路由發(fā)生差錯,
默認路由器將通知它進行重定向,并允許主機對路由表作相應(yīng)的改動。ICMP重定向允許
TCP/IP主機在進行選路時不需要具備智能特性,而把所有的智能特性放在路由器端。顯然,
在我們的例子中,R1和R2必須知道有關(guān)相連網(wǎng)絡(luò)的更多拓撲結(jié)構(gòu)的信息,但是連在LAN上的
所有主機在啟動時只需一個默認路由,通過接收重定向報文來逐步學(xué)習(xí)。
ICMP重定向報文格式
ICMP重定向報文的格式如圖3所示。

圖3:ICMP重定向報文格式
有四種不同類型的重定向報文,有不同的代碼值,如圖4所示。

圖4:ICMP重定向報文的不同代碼值
ICMP重定向報文的接收者必須查看三個IP地址:
( 1 )導(dǎo)致重定向的IP地址(即ICMP重定向報文的數(shù)據(jù),位于IP數(shù)據(jù)報的首部);
( 2 )發(fā)送重定向報文的路由器的IP地址(包含重定向信息的IP數(shù)據(jù)報中的源地址;
( 3 )應(yīng)該采用的路由器IP地址(在ICMP報文中的4 ~ 7字節(jié))。
關(guān)于ICMP重定向報文有很多規(guī)則。首先,重定向報文只能由路由器生成,而不能由主機
生成。另外,重定向報文是為主機而不是為路由器使用的。
ICMP路由器發(fā)現(xiàn)報文
初始化路由表的方法,可以在配置文件中指定靜態(tài)路由。這種方法經(jīng)常用來設(shè)置默認路由。另一種新的方法是利用ICMP路由器通告和請求報文。
一般認為,主機在引導(dǎo)以后要廣播或多播傳送一份路由器請求報文。一臺或更多臺路由
器響應(yīng)一份路由器通告報文。另外,路由器定期地廣播或多播傳送它們的路由器通告報文,允許每個正在監(jiān)聽的主機相應(yīng)地更新它們的路由表。
posted on 2008-06-18 23:08
水 閱讀(3660)
評論(3) 編輯 收藏 引用 所屬分類:
tcp/ip