TCPIP詳解 卷一 協議 第一章 概述 3 3IP路由選擇

2021-08-25 21:26:35 字數 3783 閱讀 6360

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

大多數的主機都是採用這種簡單機制。

在本節和第9章中,我們將討論更一般的情況,即ip層既可以配置成路由器的功能,也可以配置成主機的功能。當今的大多數多使用者系統,包括幾乎所有的unix系統,都可以配置成乙個路由器。我們可以為它指定主機和路由器都可以使用的簡單路由演算法。

本質上的區別在於主機從不把資料報從乙個介面**到另乙個介面,而路由器則要**資料報。內含路由器功能的主機應該從不**資料報,除非它被設定成那樣。在9.

4小節中,我們將進一步討論配置的有關問題。

在一般的體制中,ip可以從tcp、udp、icmp和igmp接收資料報(即在本地生成的資料報)並進行傳送,或者從乙個網路介面接收資料報(待**的資料報)並進行傳送。ip層在記憶體中有乙個路由表。當收到乙份資料報並進行傳送時,它都要對該錶搜尋一次。

當資料報來自某個網路介面時,ip首先檢查目的ip位址是否為本機的ip位址之一或者ip廣播位址。如果確實是這樣,資料報就被送到由ip首部協議欄位所指定的協議模組進行處理。如果資料報的目的不是這些位址,那麼(1)如果ip層被設定為路由器的功能,那麼就對資料報進行**

(也就是說,像下面對待發出的資料報一樣處理);否則(2)資料報被丟棄。

路由表中的每一項都包含下面這些資訊:

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

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

標誌。其中乙個標誌指明目的ip位址是網路位址還是主機位址,另乙個標誌指明下一站路由器是否為真正的下一站路由器,還是乙個直接相連的介面(我們將在9.2節中詳細介紹這些標誌)。

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

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

它假定下一站路由器比傳送資料報的主機更接近目的,而且下一站路由器與該主機是直接相連的。

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

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

[, ]搜尋路由表,尋找能與目的網路號相匹配的表目。如果找到,則把報文傳送給該錶目指定的下一站路由器或直接連線的網路介面(取決於標誌欄位的值)。目的網路上的所有主機都可以通過這個表目來處置。

例如,乙個乙太網上的所有主機都是通過這種表目進行尋徑的。

這種搜尋網路的匹配方法必須考慮可能的子網掩碼。關於這一點我們在下一節中進行討論。

[, ]搜尋路由表,尋找標為「預設(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,但是這

並不影響這裡所討論的路由選擇)。

目的網路=資料報被送到乙太網驅動程式,然後

140.252,13,0作為乙個乙太網資料幀被送到sun主機上

(見圖2-1)。ip資料報中的目的位址是

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

圖3-3資料報從主機bsdi到sun的傳送過程下一章對此進行描述。

現在來看另乙個例子:主機bsdi有乙份ip資料報要傳到主機上,它的ip位址是192.48.

96.9。經過的前三個路由器如圖3-4所示。

首先,主機bsdi搜尋路由表,但是沒有找到與主機位址或網路位址相匹配的表目,因此只能用預設的表目,把資料報傳給下一站路由器,即主機sun。當資料報從bsdi被傳到sun主機上以後,目的ip位址是最終的信宿機位址(192.48.

96.9),但是鏈路層位址卻是sun主機的乙太網介面位址。這與圖3-3不同,在那裡資料報中的目的ip位址和目的鏈路層位址都指的是相同的主機(sun)。

圖3-4從bsdi到的初始路徑

當sun收到資料報後,它發現資料報的目的ip位址並不是本機的任一位址,而sun已被設定成具有路由器的功能,因此它把資料報進行**。經過搜尋路由表,選用了預設表目。根

據sun的預設表目,它把資料報**到下一站路由器netb,該路由器的位址是140.252.1.183。

資料報是經過點對點slip鏈路被傳送的,採用了圖2-2所示的最小封裝格式。這裡,我們沒有給出像乙太網鏈路層資料幀那樣的首部,因為在slip鏈路中沒有那樣的首部。

當netb收到資料報後,它執行與sun主機相同的步驟:資料報的目的位址不是本機位址,而netb也被設定成具有路由器的功能,於是它也對該資料報進行**。採用的也是預設路由表目,把資料報送到下一站路由器gateway(140.

252.1.4)。

位於乙太網140.252.1上的主機netb用arp獲得對應於140.

252.1.4的48bit乙太網位址。

這個乙太網位址就是鏈路層資料幀頭上的目的位址。

路由器gateway也執行與前面兩個路由器相同的步驟。它的預設路由表目所指定的下一站路由器ip位址是140.252.

104.2(我們將在圖8-4中證實,使用traceroute程式時,它就是gateway使用的下一站路由器)。

對於這個例子需要指出一些關鍵點:

[, ]該例子中的所有主機和路由器都使用了預設路由。事實上,大多數主機和一些路由器可以用預設路由來處理任何目的,除非它在本地區域網上。

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

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

在第9章,我們在描述了icmp之後將再次討論ip路由選擇問題。我們將看到一些路由表的例子,以及如何用它們來進行路由決策的。

TCPIP詳解 卷一 協議 第一章 概述 1 17小結

1.17小結 本章快速地瀏覽了tcp ip協議族,介紹了在後面的章節中將要詳細討論的許多術語和協議。tcp ip協議族分為四層 鏈路層 網路層 運輸層和應用層,每一層各有不同的責任。在tcp ip中,網路層和運輸層之間的區別是最為關鍵的 網路層 ip 提供點到點的服務,而運輸層 tcp和udp 提供...

TCPIP詳解 卷一 協議 第一章 概述 1 10標準化過程

究竟是誰控制著tcp ip協議族,又是誰在定義新的標準以及其他類似的事情?事實上,有四個小組在負責internet技術。internet協會 isoc,internetsociety 是乙個推動 支援和促進internet不斷增長和發展的專業組織,它把internet作為全球研究通訊的基礎設施。in...

TCPIP詳解 卷一 協議 第一章 概述 2 9路徑MTU

當在同乙個網路上的兩台主機互相進行通訊時,該網路的mtu是非常重要的。但是如果兩台主機之間的通訊要通過多個網路,那麼每個網路的鏈路層就可能有不同的mtu。重要的不是兩台主機所在網路的mtu的值,重要的是兩台通訊主機路徑中的最小mtu。它被稱作路徑mtu。兩台主機之間的路徑mtu不一定是個常數。它取決...