IP路由選擇

2021-08-22 09:26:41 字數 3789 閱讀 4190

從概念上說,ip路由選擇是簡單的,特別對於主機來說。如果目的主機與源主機直接相連(如點對點鏈路)或都在乙個共享網路上(乙太網或令牌環網),那麼ip資料報就直接送到目的主機上。否則,主機把資料報發往一預設的路由器上,由路由器來**該資料報。大多數的主機都是採用這種簡單機制。

更一般的情況,即ip層既可以配置成路由器的功能,也可以配置成主機的功能。當今的大多數多使用者系統,包括幾乎所有的unix系統,都可以配置成乙個路由器。我們可以為它指定主機和路由器都可以使用的簡單路由演算法。本質上的區別在於主機從不把資料報從乙個介面**到另乙個介面,而路由器則要**資料報。內含路由器功能的主機應該從不**資料報,除非它被設定成那樣。

在一般的體制中,ip可以從tcp、udp、icmp和igmp接收資料報(即在本地生成的資料報)並進行傳送,或者從乙個網路介面接收資料報(待**的資料報)並進行傳送。ip層在記憶體中有乙個路由表。當收到乙份資料報並進行傳送時,它都要對該錶搜尋一次。當資料報來自某個網路介面時,ip首先檢查目的ip位址是否為本機的ip位址之一或者ip廣播位址。如果確實是這樣,資料報就被送到由ip首部協議欄位所指定的協議模組進行處理。如果資料報的

目的不是這些位址,那麼(1)如果ip層被設定為路由器的功能,那麼就對資料報進行**(也就是說,像下面對待發出的資料報一樣處理);否則(2)資料報被丟棄。路由表中的每一項都包含下面這些資訊:

•目的ip位址。它既可以是乙個完整的主機位址,也可以是乙個網路位址,由該表目中的標誌欄位來指定(如下所述)。主機位址有乙個非0的主機號,以指定某一特定的主機,而網路位址中的主機號為0,以指定網路中的所有主機(如乙太網,令牌環網)。

•下一站(或下一跳)路由器(next-hoprouter)的ip位址,或者有直接連線的網路ip位址。下一站路由器是指乙個在直接相連網路上的路由器,通過它可以**資料報。下一站路由器不是最終的目的,但是它可以把傳送給它的資料報**到最終目的。

•標誌。其中乙個標誌指明目的ip位址是網路位址還是主機位址,另乙個標誌指明下一站路由器是否為真正的下一站路由器,還是乙個直接相連的介面

•為資料報的傳輸指定乙個網路介面。

ip路由選擇是逐跳地(hop-by-hop)進行的。從這個路由表資訊可以看出,ip並不知道到達任何目的的完整路徑(當然,除了那些與主機直接相連的目的)。所有的ip路由選擇只為資料報傳輸提供下一站路由器的ip位址。它假定下一站路由器比傳送資料報的主機更接近目的,而且下一站路由器與該主機是直接相連的。

ip路由選擇主要完成以下這些功能:

1)搜尋路由表,尋找能與目的ip位址完全匹配的表目(網路號和主機號都要匹配)。如果找到,則把報文傳送給該錶目指定的下一站路由器或直接連線的網路介面(取決於標誌欄位的值)。

2)搜尋路由表,尋找能與目的網路號相匹配的表目。如果找到,則把報文傳送給該錶目指定的下一站路由器或直接連線的網路介面(取決於標誌欄位的值)。目的網路上的所有主機都可以通過這個表目來處置。例如,乙個乙太網上的所有主機都是通過這種表目進行尋徑的。這種搜尋網路的匹配方法必須考慮可能的子網掩碼。關於這一點我們在下一節中進行討論。

3)搜尋路由表,尋找標為「預設(default)」的表目。如果找到,則把報文傳送給該錶目指定的下一站路由器。如果上面這些步驟都沒有成功,那麼該資料報就不能被傳送。如果不能傳送的資料報來自本機,那麼一般會向生成資料報的應用程式返回乙個「主機不可達」或「網路不可達」的錯誤。

完整主機位址匹配在網路號匹配之前執行。只有當它們都失敗後才選擇預設路由。預設路由,以及下一站路由器傳送的icmp間接報文(如果我們為資料報選擇了錯誤的預設路由),是ip路由選擇機制中功能強大的特性。我們在第9章對它們進行討論。

為乙個網路指定乙個路由器,而不必為每個主機指定乙個路由器,這是ip路由選擇機制的另乙個基本特性。這樣做可以極大地縮小路由表的規模,比如internet上的路由器有只有幾千個表目,而不會是超過100萬個表目。

舉例首先考慮乙個簡單的例子:我們的主機bsdi有乙個ip資料報要傳送給主機sun。雙方都在同乙個乙太網上(參見扉頁前圖)。資料報的傳輸過程如圖3-3所示。

當ip從某個上層收到這份資料報後,它搜尋路由表,發現目的ip位址(140.252.13.33)在乙個直接相連的網路上(乙太網140.252.13.0)。於是,在表中找到匹配網路位址(我們將看到,由於乙太網的子網掩碼的存在,實際的網路位址是140.252.13.32,但是這並不影響這裡所討論的路由選擇)。

資料報被送到乙太網驅動程式,然後作為乙個乙太網資料幀被送到sun主機上

ip資料報中的目的位址是sun的ip位址(140.252.13.33),而在鏈路層首部中的目的位址是48bit的sun主機的乙太網介面位址。這個48bit的乙太網位址是用arp協議獲得的

圖3-3 資料報從主機bsdi到sun的傳送過程

現在來看另乙個例子:主機b s d i有乙份i p資料報要傳到f t p . u u . n e t主機上,它的i p位址是1 9 2 . 4 8 . 9 6 . 9。經過的前三個路由器如圖3 - 4所示。首先,主機b s d i搜尋路由表,但是沒有找到與主機位址或網路位址相匹配的表目,因此只能用預設的表目,把資料報傳給下一站路由器,即主機s u n。當資料報從b s d i被傳到s u n主機上以後,目的i p位址是最終的信宿機位址(1 9 2 . 4 8 . 9 6 . 9),但是鏈路層位址卻是s u n主機的乙太網介面位址。這與圖3 - 3不同,在那裡資料報中的目的i p位址和目的鏈路層位址都指的是相同的主機(s u n)。

圖3-4 從b s d i 到f t p . u u . n e t (192.48.96.9)的初始路徑

當s u n收到資料報後,它發現資料報的目的i p位址並不是本機的任一位址,而s u n已被設定成具有路由器的功能,因此它把資料報進行**。經過搜尋路由表,選用了預設表目。根據s u n的預設表目,它把資料報**到下一站路由器n e t b,該路由器的位址是1 4 0 . 2 5 2 . 1 . 1 8 3。資料報是經過點對點s l i p鏈路被傳送的,採用了圖2 - 2所示的最小封裝格式。這裡,我們沒有給出像乙太網鏈路層資料幀那樣的首部,因為在s l i p鏈路中沒有那樣的首部。

當n e t b收到資料報後,它執行與s u n主機相同的步驟:資料報的目的位址不是本機位址,而n e t b也被設定成具有路由器的功能,於是它也對該資料報進行**。採用的也是預設路由表目,把資料報送到下一站路由器g a t e w a y(1 4 0 . 2 5 2 . 1 . 4)。位於乙太網1 4 0 . 2 5 2 . 1上的主機n e t b用a r p獲得對應於1 4 0 . 2 5 2 . 1 . 4的48 bit乙太網位址。這個乙太網位址就是鏈路層資料幀頭上的目的位址。

路由器g a t e w a y也執行與前面兩個路由器相同的步驟。它的預設路由表目所指定的下一站路由器i p位址是1 4 0 . 2 5 2 . 1 0 4 . 2(我們將在圖8 - 4中證實,使用tr a c e r o u t e 程式時,它就是g a t e w a y使用的下一站路由器)。

對於這個例子需要指出一些關鍵點: 1) 該例子中的所有主機和路由器都使用了預設路由。事實上,大多數主機和一些路由器可以用預設路由來處理任何目的,除非它在本地區域網上。

2) 資料報中的目的i p位址始終不發生任何變化(在8 . 5節中,我們將看到,只有使用源路由選項時,目的i p位址才有可能被修改,但這種情況很少出現)。所有的路由選擇決策都是基於這個目的i p位址。

3) 每個鏈路層可能具有不同的資料幀首部,而且鏈路層的目的位址(如果有的話)始終指的是下一站的鏈路層位址。在例子中,兩個乙太網封裝了含有下一站乙太網位址的鏈路層首部,但是s l i p鏈路沒有這樣做。乙太網位址一般通過a r p獲得。

IP路由選擇

我們先上圖,然後再根據圖來說明ip路由的過程。從sbdi到192.48.96.9的過程 1 主機bsdi有乙份i p資料報要傳到192.48.96.9,經過的前三個路由器 sun netb gateway 再一次進入到internet。2 當資料報從bsdi被傳到sun主機上以後,當sun收到資料報...

IP路由選擇

當乙個ip資料報準備好了的時候,ip資料報 或者說是路由器 是如何將資料報送到目的地的呢?它是怎麼選擇乙個合適的路徑來 送貨 的呢?最特殊的情況是目的主機和主機直連,那麼主機根本不用尋找路由,直接把資料傳遞過去就可以了。至於是怎麼直接傳遞的,這就要靠arp協議了,後面會講到。稍微一般一點的情況是,主...

IP路由選擇過程

host1與不同網路host2的icmp通訊過程 host1 1 icmp遞交給網際網路協議ip,ip協議建立乙個分組,至少,源ip位址172.16.10.2 目標ip位址192.168.1.2和值為01的協議欄位將被封裝到此分組中。2 ip協議判斷目標ip位址的位置,判斷此目的ip位於本地網路還是...