《現(xiàn)代網(wǎng)絡技術》課件第8章_第1頁
《現(xiàn)代網(wǎng)絡技術》課件第8章_第2頁
《現(xiàn)代網(wǎng)絡技術》課件第8章_第3頁
《現(xiàn)代網(wǎng)絡技術》課件第8章_第4頁
《現(xiàn)代網(wǎng)絡技術》課件第8章_第5頁
已閱讀5頁,還剩212頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

8.1互聯(lián)網(wǎng)與TCP/IP8.2IP網(wǎng)絡互連協(xié)議8.3IP路由選擇協(xié)議8.4Internet組管理協(xié)議IGMP8.5傳輸控制協(xié)議習題

第8章網(wǎng)絡互連技術8.1互聯(lián)網(wǎng)與TCP/IP8.1.1網(wǎng)絡互連方式為了隱藏低層網(wǎng)絡的異構性,可以在兩個層次上實現(xiàn)異構網(wǎng)絡互連:一種是應用級互連,即通過應用程序?qū)崿F(xiàn)互連;另一種是網(wǎng)絡級互連,即通過操作系統(tǒng)進行互連。早期的異構網(wǎng)絡互連是靠應用程序?qū)崿F(xiàn)的。用協(xié)議轉(zhuǎn)換的觀點來說,在這種互聯(lián)網(wǎng)中,除了應用層協(xié)議外,由于其它各層協(xié)議可能不同,因此應用程序必須了解不同網(wǎng)絡的內(nèi)部細節(jié),并直接通過網(wǎng)絡與應用程序通信。換句話說,應用程序是建立在物理網(wǎng)絡上,直接對物理網(wǎng)絡進行操作。網(wǎng)絡互連的缺點是:

(1)在網(wǎng)絡系統(tǒng)中增加新的功能或新的硬件時,必須要為網(wǎng)絡中的每臺機器編寫新的應用程序(當互連網(wǎng)絡達到一定規(guī)模時,要為所有機器編寫應用程序幾乎是不可能的)。

(2)每個應用程序都要處理機器與網(wǎng)絡連接的細節(jié),導致代碼重復。

(3)由于采用點到點的存儲轉(zhuǎn)發(fā)通信方式,當網(wǎng)絡中的某個中間結點的應用程序出錯時,發(fā)送方和接收方既無法知道也無法控制。隨著網(wǎng)絡互連技術的發(fā)展,應用級互連技術已很少使用。網(wǎng)絡級互連提供一種機制,實時地把用戶數(shù)據(jù)分組從源端發(fā)送到目的端。在網(wǎng)絡級互連中,用戶(應用程序)直接感受到的是互聯(lián)網(wǎng)所提供的分組交換服務,而不是網(wǎng)絡連接。也就是說,網(wǎng)絡級互連通過分組交換機制將底層物理網(wǎng)絡硬件細節(jié)隱藏起來。與應用級互連相比,網(wǎng)絡級互連必須在系統(tǒng)中增加某些中間層次(主要是網(wǎng)絡層),使應用程序不直接處理物理網(wǎng)絡連接,這樣物理網(wǎng)絡硬件特性及其變化就不會影響到應用程序,并且不同的應用程序還可以共享網(wǎng)絡級互連所提供的分組交換服務,而不再產(chǎn)生重復代碼。網(wǎng)絡級互連的優(yōu)點有:

(1)這種互連技術直接映射到底層網(wǎng)絡硬件,因此十分高效。

(2)網(wǎng)絡級互連把數(shù)據(jù)包傳遞功能從應用程序中分離出來,允許網(wǎng)絡中的每臺機器只需要處理與數(shù)據(jù)包傳遞有關的操作即可。

(3)網(wǎng)絡級互連使得整個互連網(wǎng)絡更加靈活。

(4)網(wǎng)絡互連模式允許網(wǎng)絡管理人員通過修改或增加某些網(wǎng)絡軟件就能在互聯(lián)網(wǎng)中加入新的網(wǎng)絡技術,而對應用程序而言并不需要做任何改變。當然,在實現(xiàn)互連的具體過程中,要解決許多細節(jié)問題,如:不同的尋址方案、不同的最大分組長度、不同的網(wǎng)絡接入機制、不同的超時控制、不同的差錯控制方法、不同的狀態(tài)報告方法、不同的路由選擇技術、不同的用戶接入控制、不同的網(wǎng)絡服務、不同的管理和控制方式等。

TCP/IP的原理和技術是解決網(wǎng)絡級互連問題的具體辦法。通過TCP/IP實現(xiàn)了對各種不同的物理網(wǎng)絡的一種高度抽象,它將通信問題從網(wǎng)絡細節(jié)中解放出來,為用戶提供通用網(wǎng)絡服務,使底層網(wǎng)絡技術對用戶或應用程序透明。8.1.2TCP/IP的分層體系結構事實上,TCP/IP的體系結構就是為通信網(wǎng)絡的互連問題而設計的,并且已經(jīng)發(fā)展成為一種事實上的標準,稱之為TCP/IP參考模型。如圖8-1所示,TCP/IP參考模型包括網(wǎng)絡接口層、網(wǎng)絡互連層、傳輸控制層和應用層。

1)網(wǎng)絡接口層它是TCP/IP體系的最低層,負責接收從IP層送來的IP數(shù)據(jù)報,并將IP數(shù)據(jù)報通過底層物理網(wǎng)絡發(fā)送出去,或者從底層物理網(wǎng)絡上接收物理幀,抽出IP數(shù)據(jù)報,交給IP層。網(wǎng)絡接口有兩種類型。第一種是設備驅(qū)動程序,如局域網(wǎng)的網(wǎng)絡接口;第二種是含自身數(shù)據(jù)鏈路協(xié)議的復雜子系統(tǒng),如X.25中的網(wǎng)絡接口。圖8-1TCP/IP參考模型

2)網(wǎng)絡互連層網(wǎng)絡互連層也稱IP層,它的任務是負責相鄰結點之間的數(shù)據(jù)傳送。其主要功能包括三個方面:

(1)處理來自傳輸層的數(shù)據(jù)發(fā)送請求。將數(shù)據(jù)裝入IP數(shù)據(jù)報,設置報頭,選擇去往目的結點的路由,然后將數(shù)據(jù)報發(fā)往適當?shù)木W(wǎng)絡接口。

(2)處理輸入數(shù)據(jù)報。首先檢查數(shù)據(jù)報的合法性,然后進行路由選擇,假如該數(shù)據(jù)報已到達目的結點,則去掉報頭,將IP報文的數(shù)據(jù)部分交給相應的傳輸層協(xié)議。假如該數(shù)據(jù)報尚未到達目的結點,則轉(zhuǎn)發(fā)該數(shù)據(jù)報。

(3)處理ICMP報文。即處理網(wǎng)絡的路由選擇、流量控制和擁塞控制等問題。本層在功能上類似于OSI參考模型中的網(wǎng)絡層。

3)傳輸控制層本層的作用與OSI參考模型中傳輸層的作用是一樣的。即在源結點和目的結點的兩個進程實體之間提供可靠的端到端的數(shù)據(jù)通信。為保證數(shù)據(jù)傳輸?shù)目煽啃裕緦訁f(xié)議規(guī)定接收端必須發(fā)回確認,并且當數(shù)據(jù)有錯或丟失時,發(fā)送方必須重傳。傳輸控制層還要解決不同應用進程的標識問題,因為主機的多個進程可能同時訪問互聯(lián)網(wǎng),為區(qū)別多個應用進程,傳輸層在每一個分組中增加識別信源和信宿的標記。此外,傳輸層的每一個分組均附帶校驗和,以便接收結點檢查接收到分組的正確性。

TCP/IP模型提供兩個傳輸層協(xié)議:傳輸控制協(xié)議TCP和用戶數(shù)據(jù)報協(xié)議UDP。

TCP協(xié)議是一個可靠的面向連接的傳輸層協(xié)議,它將某結點的數(shù)據(jù)以字節(jié)流形式無差錯地傳送到互聯(lián)網(wǎng)的任何一臺機器上。發(fā)送方的TCP將用戶遞交的字節(jié)流劃分成獨立的報文進行發(fā)送,而接收方的TCP將接收的報文重新裝配上交給接收用戶。TCP同時處理有關流量控制的問題,以防止快速的發(fā)送方“淹沒”慢速的接收方。

UDP協(xié)議是一個不可靠的、無連接的傳輸層協(xié)議,UDP協(xié)議將可靠性問題交給應用程序解決。UDP協(xié)議的報文傳輸采用請求/應答方式,一次傳遞往往只有一來一回兩次報文交換,因此這種方式下報文傳輸效率很高。UDP協(xié)議應用于那些對可靠性要求不高,但對網(wǎng)絡的延遲要求較小的場合,如話音和視頻數(shù)據(jù)的傳送。

4)應用層應用層是TCP/IP模型的最高層,它包括所有的高層協(xié)議,如:遠程登錄協(xié)議Telnet、文件傳輸協(xié)議FTP(FileTransferProtocol)、簡單郵件傳輸協(xié)議SMTP(SimpleMailTransferProtocol)等。與Internet應用相關的應用層協(xié)議包括:用于將網(wǎng)絡中的主機名映射成網(wǎng)絡地址的域名服務DNS(DomainNameService)、用于傳輸新聞的網(wǎng)絡新聞傳輸協(xié)議NNTP(NetworkNewsTransferProtocol)、用于從WWW上讀取頁面信息的超文本傳輸協(xié)議HTTP(HyperTextTransferProtocol)等。

TCP/IP是目前最成功、使用最多的網(wǎng)絡互連技術和協(xié)議。雖然使用TCP/IP技術和協(xié)議的網(wǎng)絡互連方法不是惟一的,但TCP/IP最突出。圖8-2給出了TCP/IP各層使用的主要協(xié)議。圖8-2TCP/IP各層使用的協(xié)議8.1.3TCP/IP參考模型的特點

TCP/IP參考模型具有以下特點:

1.兩個重要邊界●地址邊界。它將IP邏輯地址與底層網(wǎng)絡的硬件地址分開?!癫僮飨到y(tǒng)邊界。它將網(wǎng)絡應用與協(xié)議軟件分開。在TCP/IP分層模型中,IP層與網(wǎng)絡接口層之間存在一個地址上的邊界,它將底層網(wǎng)絡的物理地址與IP層的IP地址分開。IP層和其上的各層均使用IP地址。網(wǎng)絡接口層則使用各種物理網(wǎng)絡的物理地址(即底層網(wǎng)絡的硬件地址)。從協(xié)議分層接口功能來說,IP地址放在IP數(shù)據(jù)報的首部,而硬件地址則放在MAC幀的首部。

TCP/IP提供在兩種地址之間進行映射的功能。劃分地址邊界的目的也是為了屏蔽底層物理網(wǎng)絡的地址細節(jié),以便在互聯(lián)網(wǎng)中使用統(tǒng)一的編址方案,即所謂的IP地址,它簡單清晰,易于實現(xiàn)和理解。圖8-3畫出了TCP/IP兩個重要邊界的位置。

TCP/IP功能的不同實現(xiàn)方法,可能會導致協(xié)議軟件在操作系統(tǒng)內(nèi)的位置有所不同。影響操作系統(tǒng)邊界劃分的最重要因素是協(xié)議的效率問題,在操作系統(tǒng)內(nèi)部實現(xiàn)的協(xié)議軟件,其數(shù)據(jù)傳輸?shù)男首罡?。圖8-3TCP/IP的兩個重要邊界

2.IP層的重要性

(1)?IP層作為通信子網(wǎng)的最高層,提供無連接的數(shù)據(jù)報傳輸機制。

(2)?IP是點到點的傳輸。進行通信的主機或路由器位于同一物理網(wǎng)絡,對等實體(主機―路由器、路由器―路由器、主機―主機)之間有直接的物理連接。

(3)?TCP/IP是為包容各種物理網(wǎng)絡技術而設計的,這種包容性主要體現(xiàn)在IP層中。由于各種底層物理網(wǎng)絡技術(如各種局域網(wǎng)和廣域網(wǎng))在幀格式、地址格式等方面差別很大,因此通過IP層將異構問題統(tǒng)一起來,屏蔽底層細節(jié),構成一個統(tǒng)一的虛擬網(wǎng)。

IP向上層(TCP層)提供統(tǒng)一的IP報文,使得各種幀或報文格式的差異性對高層協(xié)議不復存在。這種統(tǒng)一的意義非同一般,這是它實現(xiàn)網(wǎng)絡互連的目標。可以這樣說,IP層是TCP/IP實現(xiàn)異構網(wǎng)互連最關鍵和最核心的一層。

3.TCP/IP的可靠性在TCP/IP網(wǎng)絡中,IP采用無連接的數(shù)據(jù)報傳輸機制,它對數(shù)據(jù)“盡最大努力傳遞”,即只管將報文盡力傳送到目的主機,無論傳輸正確與否,不做驗證,不發(fā)確認,也不保證報文的順序。

TCP/IP的可靠性體現(xiàn)在傳輸控制層,傳輸層協(xié)議中的TCP協(xié)議提供面向連接的可靠的端到端服務。這種端到端服務有兩個優(yōu)點:

(1)?TCP/IP跟ISO/OSI相比,顯得簡潔清晰。面向連接協(xié)議的復雜性比無連接協(xié)議要高出許多。而TCP/IP只在TCP層提供面向連接的服務,比若干層同時向用戶提供連接服務的協(xié)議族要簡單得多。

(2)傳輸效率高。由于IP協(xié)議是“盡最大努力傳遞”方式,只有TCP層為保證傳輸可靠性做必要的工作,而不像ISO/OSI幾乎每一層都要保證可靠傳輸。實踐證明,TCP/IP的效率比ISO/OSI要高,尤其是當?shù)讓游锢砭W(wǎng)絡很可靠時,TCP/IP的效率更加顯著。綜上所述,TCP/IP將不同的底層物理網(wǎng)絡、拓撲結構隱藏起來,向用戶和應用程序提供通用的、統(tǒng)一的網(wǎng)絡服務。這樣,從用戶的角度看,整個TCP/IP互聯(lián)網(wǎng)就是一個統(tǒng)一的整體,它獨立于具體的各種物理網(wǎng)絡技術,如圖8-4所示。在某種意義上,可以把這個單一的網(wǎng)絡看做一個虛擬網(wǎng),在邏輯上它是獨立的、統(tǒng)一的,在物理上它是由不同的網(wǎng)絡互連而成的??梢姡琓CP/IP網(wǎng)絡完全撇開了底層物理網(wǎng)絡的特性,是一個高度抽象的概念,正是這一抽象的概念,為TCP/IP網(wǎng)絡賦予了巨大的靈活性和通用性。圖8-4TCP/IP的體系特點(a)?TCP/IP內(nèi)部結構;(b)?TCP/IP互連網(wǎng)用戶視圖8.2IP網(wǎng)絡互連協(xié)議

Internet的核心協(xié)議是IP和TCP,而IP協(xié)議又是其中的重中之重。與IP配套使用的還有三個協(xié)議:地址解析協(xié)議ARP(AddressResolutionProtocol)。逆地址解析協(xié)議RARP(ReverseAddressResolutionProtocol)。

Internet控制報文協(xié)議ICMP(InternetControlMessageProtocol)。圖8-2說明在網(wǎng)絡互連層這三個協(xié)議與IP協(xié)議的關系,因為IP要使用ARP和RARP這兩個協(xié)議,因此把它們畫在下面。而ICMP要使用IP協(xié)議,因此把ICMP畫在IP上面。8.2.1IP地址及表示方法

IP地址就是IP協(xié)議為標識主機所使用的一種尋址方法,它是32位(4字節(jié))的無符號二進制數(shù)?;ヂ?lián)網(wǎng)上的每個主機或路由器都被指定一個IP地址,它只是一種邏輯編號,并不是主機或路由器的MAC地址。對連接于多個網(wǎng)絡的路由器,它就有多個不同的IP地址。在Internet上,每個主機或路由器分配到的IP地址在全球范圍是惟一的(必須向Internet網(wǎng)絡中心NIC申請)。當然,如果局域網(wǎng)不與Internet相連,則可自定義其IP地址。

1.IP地址的格式所有的IP地址包括兩部分:網(wǎng)絡號和主機號。通常IP地址的32位二進制數(shù)用4個十進制數(shù)來表示(每個字節(jié)用一個數(shù)),中間用小數(shù)點隔開,例如IP地址11000000101010000000111001100100,則記為00。這種尋址方法有點類似于把郵政編碼分為幾部分。由于不同網(wǎng)絡其規(guī)模差異很大,有的網(wǎng)絡擁有很多主機,而有的網(wǎng)絡上的主機很少,為便于對IP地址的管理,將IP地址分為5類,即A類到E類(如圖8-5所示)。最常見的是A、B、C三類地址。圖8-5IP地址格式

A類地址用于主機數(shù)量非常多(最大可達16?777?216個)的大型網(wǎng),但它的網(wǎng)絡數(shù)量非常少,只有126個(其中及為保留地址)。B類地址用于主機數(shù)量較多(最多達65?536個)的中型網(wǎng),它的網(wǎng)絡數(shù)量也比較多,有16?384個。C類地址用于主機數(shù)量少于255臺的小型網(wǎng),但它的網(wǎng)絡數(shù)量最多(可達2?097?152)。D類地址用于IP組播,通過組播可以將IP數(shù)據(jù)報一次發(fā)給多個主機。E類地址被保留將來使用。表8-1給出了IP地址的使用范圍,圖8-6為IP地址的比例數(shù)量。圖8-6IP地址的分布上面舉例的IP地址00就是一個C類地址,其中192.168.14是網(wǎng)絡標識號,100是主機標識號。為了在Internet上保證IP地址的惟一性,IP地址內(nèi)的網(wǎng)絡號由InternetNIC統(tǒng)一分配,以避免沖突,而主機號則由各個自治系統(tǒng)ISP的網(wǎng)絡管理員負責分配,用來指定網(wǎng)絡中的網(wǎng)段及網(wǎng)段上的主機。

2.特殊IP地址在IP地址中還有一些特殊地址,這些地址有特殊的意義,表8-1中已扣除了這些特殊地址,在表8-2中列出了這些地址及用法和意義。

(1)?“0”的IP地址用于使用動態(tài)主機配置DHCP服務器的網(wǎng)絡上。當工作站啟動時,使用全“0”地址與DHCP服務器進行通信,通過它獲得自己的IP地址。

(2)網(wǎng)絡號為全“0”的IP地址被解釋為本地網(wǎng)絡,若主機想在本網(wǎng)內(nèi)通信,而又不知道網(wǎng)絡號時,可以使用網(wǎng)絡號為“0”的IP地址(但主機必須知道是哪一類網(wǎng)絡,以確定網(wǎng)絡號位數(shù)及0的個數(shù))。

(3)主機號是全“0”的IP地址代表標識一個網(wǎng)絡號,用它來表示一個網(wǎng)絡本身,比如表示一個C類的網(wǎng)絡號192.168.14。

(4)主機號全為“1”的IP地址稱為廣播地址。網(wǎng)上的某個主機可以使用廣播地址向網(wǎng)絡中的所有主機發(fā)送消息。通過指定目的網(wǎng)絡號這種廣播地址稱為直接廣播地址。如果主機只需在本地網(wǎng)內(nèi)部進行廣播,但又不知道本網(wǎng)的網(wǎng)絡號時,可將32比特全“1”的IP地址用于本網(wǎng)的廣播地址,該地址稱為有限廣播地址。

(5)網(wǎng)絡號為“127”是一個保留地址,用于網(wǎng)絡軟件測試以及本機進程間通信,稱為環(huán)回地址(loopbackaddress)。使用環(huán)回地址發(fā)送IP數(shù)據(jù)報時,IP軟件立即將報文返回,不進行任何實際的網(wǎng)絡傳輸,利用這一特性來為網(wǎng)絡軟件查錯。與127一起使用的主機號是任意的,都是代表環(huán)回地址,通常使用主機號為1(即)作本機測試。

3.IP地址的特點

(1)?IP地址是一種非等級的地址結構。也就是說,通過IP地址不能反映任何有關主機位置的地理信息,這和電話號的結構不一樣。

(2)當一個結點(如路由器)同時連接到兩個網(wǎng)絡上時,該結點就必須同時具有兩個相應的IP地址,并且網(wǎng)絡標識號必須是不同的。

(3)按照Internet的觀點,用中繼或網(wǎng)橋連接起來的若干個局域網(wǎng)仍為一個網(wǎng)絡,因此,這些局域網(wǎng)都具有同樣的網(wǎng)絡號。

(4)在IP地址中,所有分配的網(wǎng)絡彼此都是平等的。

(5)通過IP地址形式來指明一個網(wǎng)絡的地址。這時,只要將該IP地址的主機號二進制位全部置為0即可。例如,,和這三個IP地址分別代表A、B和C類地址所指定的單個網(wǎng)絡地址。

4.IP地址子網(wǎng)劃分在使用IP地址時會發(fā)現(xiàn)有很大浪費,比如某個單位申請到了一個C類網(wǎng)絡地址,但該單位只有40臺主機,這樣這個地址中有200多個主機號就會白白浪費掉,因為其他單位的主機無法使用這些號。此外,為便于管理,通常將本單位的主機劃分為彼此相連的若干網(wǎng)段(子網(wǎng)),而這些網(wǎng)段被作為統(tǒng)一的整體來管理。為了適合子網(wǎng)管理和避免IP地址浪費,在IP地址中,將主機標識號部分前若干個比特作為“子網(wǎng)號”,后面剩下的仍為主機號。這樣做可以將本單位的各個子網(wǎng)分配相應的子網(wǎng)號,各子網(wǎng)再通過路由互連。需要強調(diào)的是,子網(wǎng)的劃分純屬本單位內(nèi)部的事,在本單位以外看不見這樣的劃分,從外部看,這個單位仍只有一個網(wǎng)絡號。只有當外面的分組進入到本單位網(wǎng)絡內(nèi),本單位的路由器再根據(jù)子網(wǎng)號進行選路,最后才找到主機。子網(wǎng)劃分需要用“子網(wǎng)掩碼”來進行,掩碼是一個前面由若干連續(xù)的“1”和后面剩下的連續(xù)的“0”組成的32比特二進制串,“1”對應網(wǎng)絡和子網(wǎng)部分,“0”對應主機部分。通過將掩碼與IP地址作邏輯與操作,得到其IP地址的子網(wǎng)地址,將掩碼的反碼與IP地址作邏輯與操作,得到其IP地址的主機地址。由此可見,與A、B、C類地址對應的標準掩碼分別為、和。例如,一個C類網(wǎng)絡地址,利用掩碼92將該網(wǎng)絡劃分為4個子網(wǎng):、4、28和92,每個子網(wǎng)可容納62(26-2)臺主機,如圖8-7所示。經(jīng)這樣劃分后,如果有一個IP地址是29,通過掩碼92得知,它的子網(wǎng)地址為28,子網(wǎng)的主機地址為。這樣,在IP協(xié)議中,主機或路由器的每個網(wǎng)絡接口都要為之分配一個IP地址,對應的每個地址都有相應的掩碼。在同一個網(wǎng)絡上的網(wǎng)絡接口,其IP地址的掩碼應該是一樣的,以保證通過掩碼計算的子網(wǎng)地址是相同的。圖8-7子網(wǎng)掩碼的意義

5.IP地址與MAC地址的轉(zhuǎn)換前面已經(jīng)提到,IP地址只是主機在網(wǎng)絡層中的地址,它是不能直接用來進行通信的。要將網(wǎng)絡層中傳送的數(shù)據(jù)報交給目的主機,還要傳到鏈路層轉(zhuǎn)變成MAC幀后才能發(fā)送到網(wǎng)絡。而MAC幀使用的是源主機和目的主機的硬件地址。因此,必須在IP地址和主機的硬件地址之間進行轉(zhuǎn)換。此外,用戶不愿意使用難以記憶的主機號,而是愿意使用易于記憶的主機名字。因此也需要在主機名字和IP地址之間進行轉(zhuǎn)換。所以,在TCP/IP體系中有兩種轉(zhuǎn)換的機制。在主機名和IP地址之間通過域名系統(tǒng)DNS(DomainNameSystem)進行轉(zhuǎn)換。所謂域名系統(tǒng)就是在網(wǎng)絡中存在幾個DNS服務器,上面分層次放有許多主機名字到IP地址轉(zhuǎn)換的映射表。源主機中的名字解析軟件自動找到DNS服務器來完成這種轉(zhuǎn)換。域名系統(tǒng)DNS屬于應用層軟件,在本書后面還要詳細討論。圖8-8中名字為HOST-a的主機要與名字為HOST-b的主機通信,通過DNS從目的主機名字HOST-b得出其IP地址為。從IP地址到物理地址的轉(zhuǎn)換是由地址解析協(xié)議ARP完成的。圖8-8表示從IP地址通過ARP得出了目的主機48比特的物理地址。圖8-8主機名、主機物理地址與IP地址的轉(zhuǎn)換由于IP地址是32比特,而網(wǎng)絡的物理地址是48比特,因此它們之間不是一種簡單的轉(zhuǎn)換關系。此外,在一個網(wǎng)絡上可能經(jīng)常會有新的計算機加入進來,或撤走一些計算機。更換計算機的網(wǎng)卡也會使其物理地址改變??梢娫谟嬎銠C中應存放一個從IP地址到物理地址的轉(zhuǎn)換表,并且能夠經(jīng)常動態(tài)更新。地址解析協(xié)議ARP很好地解決了這些問題。每一個主機都有一個ARP高速緩存,里面放有IP地址到物理地址的映射表,這些都是該主機目前知道的一些地址。當主機A欲向本局域網(wǎng)上的主機B發(fā)送一個IP數(shù)據(jù)報時,就先在其ARP高速緩存中查看有無主機B的IP地址。如有,就可查出其對應的物理地址,然后將此物理地址寫入MAC幀,然后通過網(wǎng)絡發(fā)往此物理地址。但也有可能查不到主機B的IP地址,這可能是主機B才入網(wǎng),也可能是主機A剛剛加電,其高速緩存還是空的。在這種情況下,主機A就自動運行ARP,按以下步驟找出主機B的物理地址。

(1)?ARP進程在本局域網(wǎng)上廣播發(fā)送一個ARP請求分組,上面有主機B的IP地址。

(2)在本局域網(wǎng)所有主機上運行的ARP進程都收到此ARP請求分組。

(3)主機B在ARP請求分組中見到自己的IP地址,就向主機A發(fā)送一個ARP響應分組,上面寫入自己的物理地址。

(4)主機A收到主機B的ARP響應分組后,就在其ARP高速緩存中寫入主機B的IP地址到物理地址的映射。在很多情況下,當主機A向主機B發(fā)送數(shù)據(jù)報時,很可能此后不久主機B還要向主機A發(fā)送數(shù)據(jù)報,因而主機B也可能要向主機A發(fā)送ARP請求分組。為了減少網(wǎng)絡上的通信量,主機A在發(fā)送其ARP請求分組時,就將自己的IP地址到物理地址的映射寫入ARP請求分組。當主機B收到主機A的ARP請求分組時,主機B就將主機A的這一地址映射寫入主機B自己的ARP高速緩存中。這對主機B以后向主機A發(fā)送數(shù)據(jù)報就更方便了。在進行地址轉(zhuǎn)換時,有時還要用到逆向地址解析協(xié)議RARP。RARP使只知道自己物理地址的主機能夠知道其IP地址。這種主機往往是無盤工作站。這種無盤工作站一般只要運行其ROM中的文件傳送代碼,就可用下載方法從局域網(wǎng)上其他主機得到所需的操作系統(tǒng)和TCP/IP通信軟件,但這些軟件中并沒有IP地址。無盤工作站要運行ROM中的RARP協(xié)議來獲得其IP地址。

RARP的工作過程大致如下:為了使RARP能工作,在局域網(wǎng)上至少有一個主機要充當RARP服務器,無盤工作站先向局域網(wǎng)發(fā)出RARP請求分組(在格式上與ARP請求分組相似),并在此分組中給出自己的物理地址。服務器有一個事先做好的從無盤工作站的物理地址到IP地址的映射表,當收到RARP請求分組后,RARP服務器就從這映射表查出該無盤工作站的IP地址。然后寫入RARP響應分組,發(fā)回給無盤工作站。無盤工作站用此方法獲得自己的IP地址。8.2.2IP數(shù)據(jù)報的格式

IP數(shù)據(jù)報有兩層含義:第一,指IP層提供的無連接服務以及無連接數(shù)據(jù)報傳輸機制;第二,指IP數(shù)據(jù)報格式。兩者是密切相關的,無連接數(shù)據(jù)報傳輸機制需要通過IP數(shù)據(jù)報格式來體現(xiàn),而IP數(shù)據(jù)報格式只有在無連接的數(shù)據(jù)報傳輸機制中才真正具有意義。IP報文由頭部和數(shù)據(jù)區(qū)兩部分組成,頭部則由一個長度為20字節(jié)的固定項和一個長度任意的可選項組成,如圖8-9所示。圖8-9IP數(shù)據(jù)報的頭部格式

(1)版本(Version)字段:占4比特,它記錄了報文屬于哪個版本的IP,不同版本的IP,其報文格式是不完全相同的。目前IP是第4版(IPv4),也是本章主要討論的IP。IP的下一個重要版本為第6版(IPv6),在后面將作簡單介紹。所有的IP軟件在處理數(shù)據(jù)報之前都必須首先檢查版本號,以確保版本正確。IP軟件拒絕處理協(xié)議版本不同的數(shù)據(jù)報,以避免錯誤解釋其中的內(nèi)容。

(2)頭部長度IHL(IPHeaderLength)字段:占4比特,表示IP報頭的長度(以32比特為單位)。IP報頭由20字節(jié)的固定項和長度不定的可選項組成。因此,當IP數(shù)據(jù)報頭沒有可選項時,頭部長度為最小值5。該字段最大值是15,這意味著IP數(shù)據(jù)報頭的最大長度是60字節(jié),由此可知可選項最長不超過40字節(jié)。

(3)總長(TotalLength)字段:占16比特,指明整個IP數(shù)據(jù)報的長度,包括所有數(shù)據(jù)及頭部。IP數(shù)據(jù)報的最大長度為65536字節(jié),這個長度足夠應付目前的大多數(shù)應用,但對于未來的高速網(wǎng)絡,也許這個長度還不夠,因為在高速網(wǎng)絡中,一個物理幀的長度有可能超過65535字節(jié)。

(4)服務類型ToS(TypeofService)字段:占8比特,它允許應用程序指定自己想要的服務,即應用程序告訴網(wǎng)絡該IP數(shù)據(jù)報是高可靠性數(shù)據(jù)還是低延遲數(shù)據(jù)等。例如,對于數(shù)字話音通信,需要低延遲;而對于文件傳輸,則要求高可靠性。服務類型中包含:1個3比特的優(yōu)先順序字段(Precendence)、3個1比特的標志位D、T和R,還有2比特未用?!駜?yōu)先順序字段:是標志IP數(shù)據(jù)報的優(yōu)先級的,取值從0到7依次升高。●D、T、R標志位:表示本數(shù)據(jù)報所希望達到的傳輸效果。其中,D(Delay)表示低延遲;T(Throughput)表示高吞吐量;R(Reliability)表示高可靠性。要注意的是,服務類型字段只是用戶的要求,對網(wǎng)絡并不具有強制性,路由器在進行路由選擇時把它們作為參考。如果路由器知道去往目的結點有若干條路徑,則可以選擇一條最能滿足用戶要求的路徑。假設路由器知道有兩條路徑可以到達目的地,一條是低速但價格低廉的租用線路,另一條是高速但價格昂貴的衛(wèi)星線路,則對于D標志置1的遠程登錄用戶,可選用租用線路;而對于T標志置1的文件傳輸用戶,則選用衛(wèi)星線路。目前,服務類型ToS字段沒有實際應用。雖然有的路由協(xié)議指定使用ToS字段進行路由選擇,但由于用戶端對ToS的支持非常有限,導致網(wǎng)絡設備生產(chǎn)商很少實現(xiàn)ToS功能。由于IP數(shù)據(jù)報的實際傳輸最終要通過底層的物理網(wǎng)絡,而不同的物理網(wǎng)絡對幀的大小有規(guī)定,叫做最大傳輸單元MTU(MaximunTransferUnit),物理網(wǎng)絡的MTU由其硬件決定,因此通常情況下MTU值是保持不變的。與MTU不同,IP數(shù)據(jù)報大小由軟件決定,IPv4規(guī)定了IP數(shù)據(jù)報的最大長度為65?535個字節(jié)。為了能在各種物理網(wǎng)絡上傳輸IP數(shù)據(jù)報,IP提供了將IP數(shù)據(jù)報分解成若干個分段進行傳輸?shù)墓δ堋T贗P數(shù)據(jù)報頭部中有3個字段與分段有關,分別是標識字段、標志位字段和分段偏移量字段。

(5)標識(Identification)字段:占16比特,用來控制分段重裝,每個數(shù)據(jù)報不管被拆成多少分段,都具有相同的標識值,以確定該分段屬于哪個數(shù)據(jù)報。當分段到達目的主機時,根據(jù)標識值、分段偏移和源地址進行重裝。

(6)?DF標志位:表示該數(shù)據(jù)報不能分段,因為目的主機或路由器不能重組分段。

(7)?MF標志位:“1”表示數(shù)據(jù)報的分段沒有結束,后面還有。“0”表示是最后一個分段。接收端可以通過MF位來判斷數(shù)據(jù)報的所有分段是否已全部到達。

(8)分段偏移量(FragmentOffset)字段:占13比特,用于說明分段在數(shù)據(jù)報中的位置。該字段是按64比特(8字節(jié))為一個單位來計算的,所以分段在數(shù)據(jù)報中的實際位置,如果按字節(jié)數(shù)來計算的話,應該是偏移量再乘以8。用標識、標志及分段偏移量可以惟一識別出每個分段,從而使得接收端能夠正確重組源IP數(shù)據(jù)報。

(9)生存期TTL(TimeToLive)字段:占8比特,用來限制IP數(shù)據(jù)報在網(wǎng)絡中所經(jīng)過的跳步數(shù)。通過TTL字段,IP軟件就可以自動丟棄那些已在網(wǎng)絡中呆了很長時間的報文,從而防止IP數(shù)據(jù)報在網(wǎng)上不停地循環(huán),浪費網(wǎng)絡帶寬。TTL一般設置為64,最大設置為255。其每經(jīng)過一個路由器或一段延遲后便減1。一旦TTL減至0時,路由器就會將該報文丟棄,同時通過ICMP報文向產(chǎn)生該IP數(shù)據(jù)報的源端報告超時信息。例如,由于網(wǎng)絡存在路徑環(huán)路,造成IP數(shù)據(jù)報在網(wǎng)內(nèi)不停循環(huán)而被丟棄。網(wǎng)絡診斷命令trace就是使用了TTL字段來診斷網(wǎng)絡是否存在循環(huán)。

(10)協(xié)議(Protocol)字段:占8比特。IP軟件還必須知道IP數(shù)據(jù)報的數(shù)據(jù)區(qū)是由哪個高層協(xié)議創(chuàng)建的,以便IP接收模塊能正確地將接收到的IP數(shù)據(jù)報交給適當?shù)膮f(xié)議模塊進行處理(如TCP、UDP、ICMP等),該項功能由協(xié)議字段完成。協(xié)議類型代碼是由Internet網(wǎng)絡信息中心(NIC)管理的,在整個Internet范圍內(nèi)保持一致。例如,TCP的協(xié)議代碼為6,UDP的協(xié)議代碼為17。協(xié)議字段提供了對TCP/IP協(xié)議族多路復用的支持。

(11)報頭校驗和(HeaderChecksum)字段:占16比特。每個IP數(shù)據(jù)報有一個報頭校驗和,它保護IP數(shù)據(jù)報頭部內(nèi)容免遭破壞。當主機創(chuàng)建IP數(shù)據(jù)報時,會產(chǎn)生一個覆蓋整個頭部的校驗和。為了驗證報文在傳輸過程中的正確性,路由器或主機每接收一個IP數(shù)據(jù)報,必須對其整個頭部(包括校驗和字段)重新計算校驗和,計算結果應該為零。如果IP數(shù)據(jù)報的頭部的任何一位在傳輸過程中被破壞,則計算出的校驗和不為零,路由器或主機將丟棄該報文。路由器在轉(zhuǎn)發(fā)該數(shù)據(jù)到下一個結點時,必須重新計算校驗和,因為IP數(shù)據(jù)報頭中的生存期(TTL)字段已經(jīng)發(fā)生變化。

IP校驗和只校驗IP報頭,而IP數(shù)據(jù)區(qū)的有效性驗證將由傳輸層協(xié)議完成。這樣做雖然看似很危險,但卻使得IP數(shù)據(jù)報的處理非常有效,因為路由器無需關心報文的完整性。實踐證明,IP數(shù)據(jù)的完整性由傳輸層進行驗證是一種很好的選擇,使得網(wǎng)絡設備可以高效地轉(zhuǎn)發(fā)報文,最后由目的端主機系統(tǒng)來完成數(shù)據(jù)的有效性驗證。

(12)源IP地址和目的IP地址:指明發(fā)送方和接收方。每個地址為32位,包括網(wǎng)絡號和主機號。

(13)可選項字段:可選項是變長的,主要用于控制和測試兩大目的。作為IP協(xié)議的組成部分,在所有IP協(xié)議的實現(xiàn)中,選項處理是不可缺的。

IP數(shù)據(jù)報中的每個可選項由選項代碼、長度和選項數(shù)據(jù)三部分組成。目前已定義了5個選項,分別為安全性、嚴格源路由選擇、松散源路由選擇、記錄路由以及時間戳,但不是所有的路由器都支持全部5個可選項?!癜踩?Security)選項:說明報文的安全程度。理論上,軍用路由器可以用這個字段來指示不要經(jīng)過某些軍方認為是不友好的國家。實際上,所有路由器都忽略該字段?!駠栏裨绰酚蛇x擇(StrictSourceRouting)選項:要求報文必須嚴格按給定的路由傳送。當路由器的路由表出現(xiàn)故障,系統(tǒng)管理員發(fā)送緊急報文時,該字段很有用?!袼缮⒃绰酚蛇x擇(LooseSourceRouting)選項:要求報文在傳送時必須按次序經(jīng)過給定的路由器,但報文還可以穿過其他路由器。也就是說,該選項可以指定一些特殊的路由器作為報文的必經(jīng)之地。當出于政治或經(jīng)濟考慮時,想要經(jīng)過或繞過某些地區(qū)或國家時,該選項最有用?!裼涗浡酚?RecordRoute)選項:用于記錄IP數(shù)據(jù)報從源端主機到目的端主機所經(jīng)過的所有路由器的IP地址,以使系統(tǒng)管理員可以跟蹤路由選擇過程,并進行查錯?!駮r間戳(TimeStamp)選項:用于記錄IP數(shù)據(jù)報經(jīng)過每一個路由器時的時間。該選項可以用來分析網(wǎng)絡吞吐量、負載和擁塞情況,當然它也可用來為路由選擇查錯。8.2.3Internet控制報文協(xié)議ICMP

IP數(shù)據(jù)報是一種不可靠傳送,即不能保證不丟失。但為了減少分組的丟失,允許主機或路由器使用Internet控制報文協(xié)議ICMP(InternetControlMessageProtocol)報告差錯情況,比如線路故障、數(shù)據(jù)報超過生存時間、路由器發(fā)生擁塞等。它能由出錯點發(fā)送站發(fā)出錯誤報文或控制報文,發(fā)送站收到這種報文后,由ICMP軟件處理(或報告錯誤原因或重發(fā)錯誤數(shù)據(jù)報等)。ICMP實際上是IP協(xié)議中的一個模塊,當IP收到ICMP報文后,交給ICMP模塊來處理,因此ICMP被認為是IP協(xié)議中不可缺少的組成部分。值得注意的是,ICMP不是高層協(xié)議,它仍是IP層中的協(xié)議。ICMP報文被作為IP層數(shù)據(jù)報的數(shù)據(jù)來封裝,加上數(shù)據(jù)報的首部,組成IP數(shù)據(jù)報發(fā)送出去。ICMP報文格式以及封裝方法見圖8-10所示。圖8-10ICMP報文格式及封裝

ICMP報文的前32比特(4個字節(jié))的格式是固定的,共有3個字段。但后面的部分是可變的,其長度取決于ICMP的類型。

(1)類型字段:占8比特。該字段值與ICMP報文類型的關系如表8-3。

(2)代碼字段:占8比特。它提供ICMP報文類型的進一步信息,比如代碼值為“0”表示網(wǎng)絡不可到達,代碼值為“1”表示主機不可到達等。

(3)檢驗和字段:占16比特。它檢驗整個ICMP報文。由于數(shù)據(jù)報首部的檢驗和并不檢驗數(shù)據(jù)報的內(nèi)容,因此不能保證經(jīng)過傳輸?shù)腎CMP報文不產(chǎn)生差錯,要靠ICMP本身的校驗和字段檢驗。

ICMP報文分為兩種類型:ICMP差錯報文和ICMP詢問報文。在ICMP差錯報文中,改變路由報文用得最多(見圖8-11的例子)。圖8-11ICMP改變路由的舉例從圖8-11可看出,主機A向主機B發(fā)送IP數(shù)據(jù)報應經(jīng)過路由器R1,而向主機C發(fā)送數(shù)據(jù)報則應經(jīng)過路由器R2。現(xiàn)在假定主機A啟動后,其路由表中只有一個默認路由器R1(當路由表中查不到應將分組送往何路由器時,就將該分組送往默認路由器)。當主機A向主機C發(fā)送數(shù)據(jù)報時,數(shù)據(jù)報就被送到路由器R1。從路由器R1的路由表可查出:發(fā)往主機C的數(shù)據(jù)報應經(jīng)過路由器R2。于是數(shù)據(jù)報從路由器R1再轉(zhuǎn)發(fā)到路由器R2,最后送到主機C。顯然,這個路由不好,應該改變。于是,路由器R1向主機A發(fā)送“ICMP改變路由報文”,指出此數(shù)據(jù)報應經(jīng)過的下一個路由器R2的IP地址。主機A根據(jù)收到的信息更新其路由表。以后主機A再向主機C發(fā)送數(shù)據(jù)報時,根據(jù)路由表就知道應將數(shù)據(jù)報送到路由器R2,而不再送到默認路由器R1了。當某個速率較高的源主機向另一個速率較低的目的主機(或路由器)發(fā)送一串數(shù)據(jù)報時,很有可能使速率較低的目的主機產(chǎn)生擁塞,因而不得不丟棄一些數(shù)據(jù)報。通過高層協(xié)議,源主機得知丟失了一些數(shù)據(jù)報,就不斷地重發(fā)這些數(shù)據(jù)報。這就使得本來就已經(jīng)擁塞的目的主機更加擁塞。在這種情況下,目的主機就要向源主機發(fā)送“ICMP源站抑制報文”,使源站暫停發(fā)送數(shù)據(jù)報,過一段時間再逐漸恢復正常。常用的ICMP詢問報文有:

(1)?ICMPEcho請求報文:這是由主機或路由器向一個特定的目的主機發(fā)出的詢問。收到此報文的主機必須給源主機發(fā)送ICMPEcho回答報文。這種詢問報文用來測試目的站是否可達以及了解其有關狀態(tài)。在應用層有一個PING的實用程序就是用來測試兩個主機之間的連通性。PING中使用了ICMPEcho請求與Echo回答報文。

(2)?ICMP時間戳請求報文:這是要求某個主機或路由器回答當前的日期和時間。在ICMP時間戳回答報文中有一個32比特的字段,其中寫入整數(shù)代表從1900年1月1日起到當前時刻一共有多少秒。時間戳請求與回答可用來進行時鐘同步和測量時間。

(3)?ICMP地址掩碼請求報文:可使主機向子網(wǎng)掩碼服務器得到某個接口的地址掩碼。8.2.4IP報文的分段與重組一個IP報文要交給數(shù)據(jù)鏈路層封裝之后才能發(fā)送,在理想情況下,每一個報文正好放入一個物理幀內(nèi)發(fā)送,這種情況下網(wǎng)絡傳輸效率最高。但實際情況不是這樣,不同的物理網(wǎng)所支持的最大幀長各不相同。例如,以太網(wǎng)的幀最多可以容納1500字節(jié)數(shù)據(jù),F(xiàn)DDI幀可以容納4470字節(jié)數(shù)據(jù)。規(guī)定物理網(wǎng)絡一幀所能容納的最大數(shù)據(jù)量稱為最大傳輸單元(MTU,MaximumTransmissionUnit)。為了能將IP報封裝在不同的物理幀中,每個報文應該小于或等于一個網(wǎng)絡的MTU,否則就無法封裝。但是,互聯(lián)網(wǎng)中包含了各種各樣的異構網(wǎng)絡,特別是一個路由器可能連接著具有不同MTU值的多個網(wǎng)絡,能從一個網(wǎng)上接收數(shù)據(jù)報并不意味著一定能在另一個網(wǎng)上轉(zhuǎn)發(fā)此報文。圖8-12說明了這種情況,圖中主機H1連接網(wǎng)絡1,其MTU值為1500,因此它能傳送最多達1500字節(jié)的數(shù)據(jù)報;主機H2連接網(wǎng)絡2,其MTU值為1000,因此它能傳送最多達1000字節(jié)的數(shù)據(jù)報。這兩個網(wǎng)通過路由器R連接。如果H1要將一個1500字節(jié)的數(shù)據(jù)報發(fā)送給H2,路由器R收到報文后卻無法在網(wǎng)絡2上發(fā)送。圖8-12路由器連接兩個具有不同MTU值的網(wǎng)絡

IP數(shù)據(jù)報使用分段方法來解決這一問題。當一個數(shù)據(jù)報的尺寸大于要轉(zhuǎn)發(fā)的網(wǎng)絡MTU值時,路由器會將數(shù)據(jù)報分割成若干較小部分,稱為IP分段(IPFragment),然后再將每段獨立進行轉(zhuǎn)發(fā)。每一個分段與其他的數(shù)據(jù)報有相同的格式,只是在頭部的標志字段中有一位標識了一個數(shù)據(jù)報是分段還是完整的數(shù)據(jù)報(參見IP報文格式)。段的頭部中還包含有其他信息(如段的偏移字段等),以便用來重組這些段,還原成原始的數(shù)據(jù)報。路由器在對數(shù)據(jù)報進行分段時,根據(jù)相應網(wǎng)絡MTU和數(shù)據(jù)報頭部尺寸來計算每段所能攜帶的最大數(shù)據(jù)量和分段個數(shù),然后生成這些段。路由器先為每一段生成一個原數(shù)據(jù)報頭部的副本作為分段的頭部,然后單獨修改其中的一些字段(比如設置標志字段中的相應位以指示這些數(shù)據(jù)報是一個分段)。最后,路由器從原數(shù)據(jù)報中復制相應的數(shù)據(jù)到每個段中,并開始轉(zhuǎn)發(fā)。圖8-13說明了這一過程。圖8-13一個IP數(shù)據(jù)報被分為3段重組是分段的逆過程,即在所有分段基礎上重新還原成原數(shù)據(jù)報的一個副本的過程。IP協(xié)議規(guī)定:只有最終目的主機才能對分段進行重組。因為每個段頭部基本是原數(shù)據(jù)報頭部的副本,因此都有與原數(shù)據(jù)報相同的目的地址,那么目的主機能否進行重組取決于所以的段是否都成功到達。目的主機收到一個IP報文時,可以根據(jù)其分段偏移和MF標志判斷其是否為一個分段。如果MF為“0”,且分段偏移也為“0”,則可以斷定這是一個完整的報文。否則,如果分段偏移不為“0”,或者MF標志為“1”,則表明它是一個分段。重組時根據(jù)分段偏移來確定該段在原始報文中的位置。將所有的分段重組成完整的原始報文后交給上層協(xié)議。在數(shù)據(jù)報分段以后的傳輸過程中,還有兩個問題要解決:一是段的丟失;二是段的進一步分解。由于IP不能確保傳遞質(zhì)量,如果底層網(wǎng)絡丟失了包,則封裝在其中的數(shù)據(jù)報或段也隨之丟失。這樣,一個數(shù)據(jù)報的一部分段到達目的主機后,很可能仍有一些段被延遲或丟失。這時目的主機還不能重組這些段,必須把它們保留在內(nèi)存。當然,這些段不能無限期地被保留下去,為節(jié)省內(nèi)存資源,IP規(guī)定了保留段的最大時間。當數(shù)據(jù)報的第一個段到達時,開始計時。如果數(shù)據(jù)報的所有段在規(guī)定的時間內(nèi)全部到達,則取消計時。否則,計時過后,所有段仍未到齊,目的主機將丟棄這些已到的段。引入IP重組計時后產(chǎn)生的結果是:要么所有段全部到達,要么什么也沒得到(整個數(shù)據(jù)報被丟棄)。而且,發(fā)送方主機重傳數(shù)據(jù)報后,有可能選擇了不同的路由,即每次傳輸不一定經(jīng)過相同的路由器,因此不能保證重發(fā)的數(shù)據(jù)報會像上次一樣被分段。執(zhí)行數(shù)據(jù)報分段后,路由器將每一段轉(zhuǎn)發(fā)到它的下一個路由器。如果某一分段轉(zhuǎn)發(fā)后遇到一個MTU值更小的網(wǎng)絡,該分段本身將再被執(zhí)行分段。也就是說,IP網(wǎng)絡上的另一個路由器可能將段進一步分割成更小的一些段。如果由于網(wǎng)絡設計的問題,使其中MTU按從大到小的次序連接,則路徑上的每個路由器都要對段再進行分段,造成網(wǎng)絡傳輸效率很低。與此同時,IP對源段和子段并不加以區(qū)分,一律一視同仁,則目的方并不知道收到的是一個第一次分段形成的段,還是一個經(jīng)歷了多個路由器多次分段后形成的段。這樣做的好處在于:目的方并不需要先重組子段后才能執(zhí)行重組過程,節(jié)省了CPU時間,也減少了每一段的頭部中所需的信息量。8.2.5IP數(shù)據(jù)報的轉(zhuǎn)發(fā)機制在Internet中,完成IP數(shù)據(jù)報的正確轉(zhuǎn)發(fā)是IP協(xié)議的一項重要功能,實現(xiàn)這一功能的關鍵設備是IP路由器。IP路由器主要有兩大功能:一是將IP數(shù)據(jù)報正確轉(zhuǎn)發(fā)到下一個路由器;二是根據(jù)路由算法與其他路由器不斷交換路由信息,更新路由表。

IP路由器的作用和第6章中介紹的結點交換機很相似,但它們之間也有如下區(qū)別?!衤酚善魇怯脕磉B接不同的網(wǎng)絡,而結點交換機只是在一個特定的網(wǎng)絡中工作。●路由器是專門用來轉(zhuǎn)發(fā)分組的,而結點交換機還可以連接多個主機?!衤酚善魇褂媒y(tǒng)一的IP協(xié)議,而結點交換機使用所在廣域網(wǎng)的特定協(xié)議。●在查找路由表時,路由器根據(jù)目的站所在的網(wǎng)絡號找出下一站(即下一個路由器),而結點交換機則根據(jù)目的站所接入的交換機號找出下一站(即下一個結點交換機)。圖8-14(a)是一個路由表的簡單例子。它有4個A類網(wǎng)絡通過3個路由器連接在一起。每一個網(wǎng)絡上都可能有成千上萬個主機。可以想像,若按這些主機的完整IP地址來制作路由表,則這樣的路由表顯然過于復雜。但若按主機所在的網(wǎng)絡號來制作路由表,那么每一個路由器中的路由表就只包含4個要查找的網(wǎng)絡。以路由器R2的路由表為例。由于R2同時連接在網(wǎng)絡2和網(wǎng)絡3上,因此只要目的站在這兩個網(wǎng)絡上,都可由路由器R2直接交付(當然可能要利用地址轉(zhuǎn)換協(xié)議ARP才能找到這些主機相應的物理地址)。若目的站在網(wǎng)絡1中,則下一站路由器應為R1,其IP地址為。由于路由器R2和R1同時連接在網(wǎng)絡2上,因此從路由器R2轉(zhuǎn)發(fā)分組到路由器R1是很容易的。同理,若目的站在網(wǎng)絡4中,則路由器R2應將分組轉(zhuǎn)發(fā)給IP地址為的路由器R3。既然在選擇路由過程中路由表只根據(jù)目的站的網(wǎng)絡號,那么就可以將整個的網(wǎng)絡拓撲簡化為圖8-14(b)所示的那樣。在簡化圖中,網(wǎng)絡變成了一條鏈路,但每一個路由器旁邊都注明其IP地址。使用這樣的簡化圖,可以不用關心網(wǎng)絡內(nèi)部的拓撲以及內(nèi)部包含有多少主機,因為這些對于研究路由選擇問題并沒有什么關系。這樣的簡化圖強調(diào)了在互聯(lián)網(wǎng)中轉(zhuǎn)發(fā)分組的過程是從一個路由器轉(zhuǎn)發(fā)到下一個路由器。圖8-14IP路由器的路由表舉例(a)?R2的路由表;(b)將網(wǎng)絡簡化為鏈路這樣,以目的站的網(wǎng)絡號來確定下一站路由器的位置,其結果是:

(1)所有到同一個網(wǎng)絡的數(shù)據(jù)報都走同一個路由。

(2)只有最后一個路由器才與目的主機進行通信,因此只有最后一個路由器才知道目的主機是否在工作??梢娦枰才乓环N方法,使最后一個路由器能將有關最后的交付情況報告給源站主機。

(3)由于每個路由器都獨立地進行路由選擇,因此從主機A發(fā)往主機B的數(shù)據(jù)報完全可能與主機B發(fā)回給主機A的數(shù)據(jù)報選擇不同的路由。當需要進行雙向通信時,就必須使好多個路由器協(xié)同工作。雖然Internet所有的路由選擇都是基于目的主機所在的網(wǎng)絡,但是大多數(shù)的IP路由選擇軟件都允許將指明對某一個目的主機的路由作為一個特例。這種路由叫做指明主機路由。采用指明主機路由可使網(wǎng)絡管理人員能更方便地控制網(wǎng)絡和測試網(wǎng)絡,同時也可在需要考慮某種安全問題時采用這種指明主機路由。在對網(wǎng)絡的連接或路由表進行排錯時,指明到某一個主機的特殊路由就十分有用。與第7章介紹的結點交換機路由表的情況相似,路由器也可采用默認路由以減少路由表所占用的空間和搜索路由表所用的時間。根據(jù)以上所講的,在Internet中一個路由器通過查找路由表確定轉(zhuǎn)發(fā)的過程為如圖8-15所示。圖8-15路由器的工作過程框圖這里再次強調(diào)指出,在IP數(shù)據(jù)報中始終不出現(xiàn)下一站路由器的IP地址。在IP數(shù)據(jù)報的首部寫上的地址是源站和目的站的IP地址。既然IP數(shù)據(jù)報中沒有下一站路由器的IP地址,那么待轉(zhuǎn)發(fā)的數(shù)據(jù)報怎樣才能夠找到下一站路由器呢?關于這點可用圖8-16來說明。圖8-16IP數(shù)據(jù)報的轉(zhuǎn)發(fā)機制在IP軟件中的路由選擇算法用路由表得出下一站路由器的IP地址后,不是將此IP地址填入IP數(shù)據(jù)報,而是送交下層的網(wǎng)絡接口軟件。網(wǎng)絡接口軟件負責將下一站路由器的IP地址轉(zhuǎn)換成物理地址,并將此物理地址放在鏈路層的MAC幀的首部,然后用這個物理地址找到下一站路由器。由此可見,當發(fā)送一連串的數(shù)據(jù)報時,上述的這種查找路由表、計算物理地址、寫入MAC幀的首部等過程將不斷地重復進行,這樣便造成了一定的開銷。那么,能不能在路由表中不使用IP地址而直接使用物理地址呢?在IP層及以上使用抽象的IP地址,本來就是為了隱蔽各種底層網(wǎng)絡的復雜性而便于分析和研究問題,所付出的代價就是在選擇路由時多了一些上述的開銷。但反過來,如果在路由表中直接使用物理地址,那就會帶來更多的麻煩。8.3IP路由選擇協(xié)議

IP采用的路由選擇協(xié)議屬于自適應(即動態(tài))分布式路由選擇協(xié)議。當IP網(wǎng)絡規(guī)模非常大時,如果讓所有的路由器都知道所有網(wǎng)絡的路徑,則這種路由表將非常龐大,而且處理開銷也大。因此,為了便于進行路由選擇,IP將整個網(wǎng)絡劃分為許多較小的單位,每個單位就是一個自治系統(tǒng)AS(AutonomousSystem),比如按行政單位(公司、大學、政府部門等)劃分。一個自治系統(tǒng)也是一個互聯(lián)網(wǎng)絡,其特點是:它有權自主地決定在本系統(tǒng)內(nèi)應采用何種路由選擇協(xié)議。因此,IP就把路由選擇協(xié)議分為兩種,即:●內(nèi)部網(wǎng)關協(xié)議IGP(InteriorGatewayProtocol)。即在一個自治系統(tǒng)內(nèi)部使用的路由選擇協(xié)議,它與互聯(lián)網(wǎng)中的其他自治系統(tǒng)選用什么路由協(xié)議無關。目前這類路由選擇協(xié)議使用得最多,如RIP、HELLO和OSPF協(xié)議?!裢獠烤W(wǎng)關協(xié)議EGP(ExternalGatewayProtocol)。即源站和目的站處在不同的自治系統(tǒng)中(各自使用不同的IGP),當數(shù)據(jù)報轉(zhuǎn)發(fā)到一個自治系統(tǒng)的邊界時,就需要使用一種協(xié)議將路由選擇信息傳遞到另一個自治系統(tǒng)中,這樣的協(xié)議就是外部網(wǎng)關協(xié)議EGP。在外部網(wǎng)關協(xié)議中目前使用最多的是BGP。圖8-17為兩個自治系統(tǒng)互連在一起的示意圖,實線雙向箭頭表示內(nèi)部網(wǎng)關協(xié)議,而虛線雙向箭頭表示外部網(wǎng)關協(xié)議。這里要說明兩點:

(1)早期文獻中不使用“路由器”一詞,而是使用“網(wǎng)關”這一名詞,實際上就是現(xiàn)在大家慣用的名詞“路由器”。

(2)?IGP和EGP是協(xié)議類別的名稱。但最早的一個外部網(wǎng)關協(xié)議名恰好也是EGP,后來設計了一種更好的外部網(wǎng)關協(xié)議,叫做邊界網(wǎng)關協(xié)議BGP(BorderGatewayProtocol),目前已取代了舊的EGP。圖8-17自治系統(tǒng)和IGP、EGP協(xié)議對于大型的自治系統(tǒng),還可將其再次進行劃分。例如,可以構筑一個鏈路速率較高的主干網(wǎng)和許多速率較低的區(qū)域網(wǎng)。每個區(qū)域網(wǎng)通過路由器連接到主干網(wǎng)。在一個區(qū)域內(nèi)找不到目的站時,就通過路由器經(jīng)過主干網(wǎng)到達另一個區(qū)域網(wǎng),或者通過外部路由器到別的自治系統(tǒng)中去查找。8.3.1內(nèi)部網(wǎng)關協(xié)議IGP

1.路由信息協(xié)議RIP路由信息協(xié)議RIP(RoutingInformationProtocol)是內(nèi)部網(wǎng)關協(xié)議IGP中使用最廣泛的。RIP是一個基于距離向量的分布式路由選擇協(xié)議,它的最大優(yōu)點就是簡單。RIP協(xié)議定義“距離”為到目的網(wǎng)絡所經(jīng)過的路由器數(shù),也稱為“跳數(shù)”。每經(jīng)過一個路由器,跳數(shù)就加1。RIP認為一個最佳路由就是它通過的路由器數(shù)最少。RIP規(guī)定一條通路最多只能包含15個路由器。因此當“距離”的值超過15時,就相當于目的站不可達。可見RIP只適用于小型互聯(lián)網(wǎng)。

RIP不能在兩個網(wǎng)絡之間同時使用多條路由,它只選擇其中一條具有最少路由器的路由(即使還存在另一條高速但路由器較多的路由)。RIP的工作流程如下:互聯(lián)網(wǎng)中的每個路由器每隔30秒向相鄰路由器廣播自己的路由表。所謂相鄰路由器是指同一個網(wǎng)絡上與之相連的兩個路由器。例如在圖8-14中,路由器R1和R2是相鄰路由器,但R1和R3不是相鄰路由器。路由表中記錄的最主要信息,一是到達某網(wǎng)絡的距離,二是應經(jīng)過的下一站。路由表更新的原則就是使到各目的網(wǎng)絡的距離最短。RIP協(xié)議讓互聯(lián)網(wǎng)中的所有路由器與其相鄰路由器不斷交換距離信息,并不斷更新其路由表。最后形成的路由表必然是最佳路由。更新路由表的依據(jù)是:若路由器X到目的網(wǎng)絡Y的距離為N,則與X相鄰的路由器K就知道,若將下一站路由器選為X,則路由器K到網(wǎng)絡Y的距離為N+1。因此,路由器K在收到相鄰路由器X的信息后,就按下面的步驟進行處理。

(1)若原路由表中沒有到網(wǎng)絡Y的表項,則增加一個到網(wǎng)絡Y的表項。

(2)若原路由表中已有到網(wǎng)絡Y的表項(到目的網(wǎng)絡Y經(jīng)過路由器Z距離為M),則只要M>N+l,都進行更新,否則不變。更新后的下一站路由器應為X。經(jīng)過一段時間后,更新過程就收斂到所有的路由器都建立起自己的路由表。若3分鐘后還沒有收到相鄰路由器的更新路由表,則將此相鄰路由器記為不可達的路由器(即將距離置為16)。

RIP報文信息通過傳輸層的用戶數(shù)據(jù)報UDP進行傳送。圖8-18是RIP的報文格式。從RIP報文的格式可看出,它包括32比特的首部以及若干個路由。每個路由給出從該路由器到某一目的網(wǎng)絡地址的距離(每個路由占20個字節(jié))。一個RIP報文最多可包括25個路由,因而RIP報文的最大長度是4+20×25=504字節(jié)。如超過,必須再用一個RIP報文來傳送。命令字段為1是請求,為2是應答。版本字段一般為1,新版本是2。地址類別字段為2,表示采用IP地址。在RIP請求報文中,地址類別置為0,距離置為16。圖8-18RIP報文格式為了更好地理解RIP協(xié)議的工作原理,仍以圖8-14這個很簡單的互聯(lián)網(wǎng)為例來討論各個路由器的路由表是怎樣建立的(見圖8-19)。圖8-19中,路由表增加了“距離”一列,表示這是從該路由器到目的網(wǎng)絡上路由器的距離。在“下一站路由器”表項中的符號“―”表示直接交付。這是因為路由器和同一網(wǎng)絡上的主機可直接通信,而不需要再經(jīng)過別的路由器進行轉(zhuǎn)發(fā)。同理,到目的網(wǎng)絡的距離也都是零,因為需要經(jīng)過的路由器數(shù)為零。圖8-19使用RIP協(xié)議時路由表的建立過程在一開始,所有路由器中的路由表只有路由器所接入的網(wǎng)絡(共有兩個網(wǎng)絡)的情況。圖中空心箭頭表示路由表的更新。細箭頭表示更新路由表要用到相鄰路由器傳送過來的信息。接著,各路由器都向其相鄰路由器廣播RIP報文,這實際上就是廣播路由表中的信息。假定路由器R2先收到了路由器R1和R3的路由信息,然后就更新自己的路由表。更新后的路由表再發(fā)送給路由器R1和R3。路由器R1和R3分別再進行更新。這個例子非常簡單,所以3個路由器中的路由表很快就全部更新完畢。實際的更新過程可能很復雜。因為RIP報文的交互具有隨機性??赡苁锹酚善鱎1先收到了路由器R2的信息,隨即更新后又發(fā)送給路由器R2。但不管RIP報文交互的順序如何,最終總能收斂到最后的路由表。值得注意的是,RIP報文本身并不提供下一站路由器的IP地址。從上面的討論可以看出,RIP協(xié)議采用的是分布式處理模型。每一個路由器根據(jù)其相鄰路由器發(fā)送來的路由信息,逐步建立并不斷地更新自己的路由表?,F(xiàn)在新版本的RIPv2協(xié)議本身并沒有多少改變,但性能上有改進。在IP地址后面的兩個32比特字段要分別填入該網(wǎng)絡的掩碼和下一站的IP地址。此外,它還支持多播。

RIP存在的一個問題是:當網(wǎng)絡出現(xiàn)故障時,要經(jīng)過比較長的時間才能將此信息傳送到所有的路由器。用圖8-19來說明這一問題。設3個路由器都已經(jīng)建立了各自的路由表,現(xiàn)在路由器R1和網(wǎng)1的連接線路突然斷開。路由器R1發(fā)現(xiàn)后,將其到網(wǎng)1的距離改為16,并將此信息發(fā)給路由器R2。由于路由器R3發(fā)給路由器R2的信息是“到網(wǎng)1經(jīng)過R2距離為2”,于是路由器R2將此項目更新為“到網(wǎng)1經(jīng)過R3距離為3”,并發(fā)給R3。R3再發(fā)給R2信息為“到網(wǎng)1經(jīng)過R2距離為4”。這樣一直到距離增大到16時,路由器R2和R3才知道網(wǎng)1是不可達的。RIP協(xié)議的這一特點叫做:好消息傳播得快,壞消息傳播得慢。這種因網(wǎng)絡故障而使傳播往往需要較長時間(例如數(shù)分鐘)的現(xiàn)象,是RIP的一個主要缺點。但如果一個路由器發(fā)現(xiàn)了更短的路由,那么這種更新信息就傳播得很快。為了使壞消息傳播得更快些,可以采取多種措施。例如,讓路由器記錄收到某特定路由信息的接口,而不讓同一路由信息再通過此接口向反方向傳送。

2.HELLO協(xié)議

HELLO協(xié)議也是IGP中的一種,但它是基于路由的網(wǎng)絡時延,而不是基于路由的距離。因此,它適合于對網(wǎng)絡響應時間敏感的應用。雖然目前HELLO協(xié)議比較陳舊,但它在IP的發(fā)展中仍占有重要地位。

HELLO協(xié)議提供兩種功能。一種功能是使各路由器的時鐘得到同步;另一種功能是每個路由器都能計算出到目的主機的最小時延路由。因此,HELLO報文既包括路由信息,還帶有時間戳信息。

HELLO協(xié)議原理并不復雜。參加交換HELLO報文的每一個路由器都有一個相鄰路由器時鐘的最佳估算值表。一個路由器在發(fā)送報文時,要加上一個時間戳,寫入當前的時鐘值。當從相鄰路由器發(fā)來的分組到達時,路由器計算報文在鏈路上的時延,即從相鄰路由器時鐘的估算值減去報文中時間戳上的時鐘值。所有的路由器都要周期性地向相鄰路由器發(fā)出輪詢,以重新建立時鐘的估算值。

HELLO報文允許路由器計算新的路由。路由的算法與RIP很相似,只是要將RIP中的距離換成為時延。每一個路由器周期性地向所有相鄰路由器發(fā)送對所有路由器的時延的估算值。設路由器B收到路由器A發(fā)來的路由表,B發(fā)現(xiàn):從B到D的當前時延>(從B到A的時延)+(從A到D的時延)這時路由器B就要更新路由表,使報文經(jīng)過A再到D。與其他路由算法相似,HELLO協(xié)議也不可能使路由表更新得很快,否則會出現(xiàn)路由的不穩(wěn)定,即路由像開關一樣在兩條路由之間來回改變。例如,發(fā)現(xiàn)有另一條路由的通信量較小,因而時延也較小,于是立即改變路由,由原來時延較大的路由改變到這條時延較小的路由。但新的路由因通信量突然增大而導致時延又增大,于是又轉(zhuǎn)回到原來的路由。不穩(wěn)定的振蕩就是這樣產(chǎn)生的。要避免這種不穩(wěn)定狀態(tài)的發(fā)生,應當在不同路由的時延較大時才允許切換。

HELLO協(xié)議有一定的局限性,使用此協(xié)議的范圍不能超過256個路由器。此外,每個路由器所使用的路由表需要由人工來配置。

3.開放最短通路優(yōu)先協(xié)議前面已經(jīng)講過,RIP協(xié)議最大的優(yōu)點就是簡單。然而隨著Internet的規(guī)模的不斷擴大,RIP協(xié)議的缺點就更加嚴重了。首先是RIP限制了網(wǎng)絡的規(guī)模,它能使用的最大距離為15;其次,路由器之間交換的完整路由信息開銷太大;最后,壞消息傳播得慢會使許多更新過程的收斂時間過長。開放最短通路優(yōu)先協(xié)議(OSPF,OpenShortestPathFirst)就是為克服RIP的這些缺點開發(fā)出來的,但OSPF比較復雜?!伴_放”表明是公開的,任何人都可以實現(xiàn)它而不需要付費?!白疃掏穬?yōu)先”是因為使用了Dijkstra提出的最短通路算法。OSPF目前還不是ISO或IEEE的標準,但它卻從OSI的IS-IS路由選擇協(xié)議(IS是中間系統(tǒng)的縮寫,代表路由器)吸收了許多好的思想。在內(nèi)部網(wǎng)關協(xié)議IGP中,OSPF協(xié)議比較新,也是很受歡迎的一種選路協(xié)議,最新版本的OSPFv2是在1997年7月公布的。要注意:OSPF只是一個協(xié)議的名字,它并不代表其他的路由選擇協(xié)議不是“最短通路優(yōu)先”。實際上,所有的路由選擇協(xié)議都是要尋找一條最短的通路。

OSPF是一種分布式的鏈路狀態(tài)協(xié)議(LinkStatusProtocol),而不是像RIP那樣基于距離向量的協(xié)議。它最主要的特點是:

(1)所有的路由器都維持一個鏈路狀態(tài)數(shù)據(jù)庫(Link-StateDatabase),這個數(shù)據(jù)庫實際上就是整個互聯(lián)網(wǎng)的拓撲結構圖。所謂一個路由器的“鏈路狀態(tài)”就是指該路由器與哪些網(wǎng)絡或路由器相鄰,以及將數(shù)據(jù)發(fā)往這些網(wǎng)絡或路由器所需的費用。這里的費用是一個量值(取值范圍在1~65?535之間),可以表示費用、距離、時延、帶寬等。這些都由網(wǎng)絡管理人員來決定。在使用RIP協(xié)議的路由器中,各個路由器只知道到達所有目的網(wǎng)絡的下一站路由器,但不知道全網(wǎng)的拓撲結構。

(2)由于網(wǎng)絡中的鏈路狀態(tài)可能經(jīng)常發(fā)生變化,因此OSPF讓每一個鏈路狀態(tài)都帶上一個32比特的序號,序號越大狀態(tài)就越新。OSPF規(guī)定,鏈路狀態(tài)序號增長的速率不得超過5s/次。這樣,全部序號空間在600年內(nèi)不會產(chǎn)生重復號。

(3)每一個路由器利用鏈路狀態(tài)數(shù)據(jù)庫中的數(shù)據(jù),采用特定的算法(如Dijkstra的最短通路路由算法)計算出自己的路由表??梢奜SPF使用的是一種分布式數(shù)據(jù)庫模型。

(4)只要網(wǎng)絡拓撲發(fā)生任何變化,鏈路狀態(tài)數(shù)據(jù)庫就能很快地進行更新,使各個路由器能夠重新計算出新的路由表。OSPF的更新過程收斂快是其重要優(yōu)點。

(5)?OSPF依靠各路由器之間的頻繁交換信息來建立鏈路狀態(tài)數(shù)據(jù)庫,并維持數(shù)據(jù)庫在全網(wǎng)范圍內(nèi)的一致性(這稱為鏈路狀態(tài)數(shù)據(jù)庫的同步)。

(6)?OSPF不用UDP數(shù)據(jù)報,而是直接用IP數(shù)據(jù)報傳送(其IP數(shù)據(jù)報頭部的協(xié)議字段值為89),并且這種數(shù)據(jù)報很短。這樣做可以減少路由信息的通信量。短數(shù)據(jù)報的另一好處是可以不必分段傳送。分段傳送的數(shù)據(jù)報只要丟失其中一個,就無法組裝成原來的數(shù)據(jù)報,而整個數(shù)據(jù)報就必須重發(fā)。OSPF報文的頭部為24字節(jié),它包含報文類型、報文長度、供鑒別用的數(shù)據(jù)以及校驗碼等,見圖8-20。圖8-20OSPF報文用IP數(shù)據(jù)報傳輸

OSPF共有以下五種報文類型:●類型1:Hello報文,用來發(fā)現(xiàn)和維持鄰站的可達性?!耦愋?:DatabaseDescription報文,向鄰站給出自己的鏈路狀態(tài)數(shù)據(jù)庫中的所有鏈路狀態(tài)項目的摘要信息?!耦愋?:LinkStateRequest報文,向?qū)Ψ秸埱蟀l(fā)送某些鏈路狀態(tài)項目的詳細信息?!耦愋?:LinkStateUpdate報文,用洪泛法向全網(wǎng)更新的鏈路狀態(tài)?!耦愋?:LinkStateAcknowledgment報文,對鏈路更新報文的確認。

OSPF規(guī)定,每兩個相鄰路由器每隔10秒鐘要交換一次Hello報文(不要和HELLO協(xié)議混淆,它們之間沒有關系),這樣就能確知哪些相鄰站是可達的。只有可達的相鄰站的鏈路狀態(tài)信息才存入鏈路狀態(tài)數(shù)據(jù)庫,并由此計算出路由表來。在正常情況下,網(wǎng)絡中傳送的絕大多數(shù)OSPF報文都是Hello報文。若有40秒鐘沒有收到某個相鄰路由器發(fā)來的Hello報文,則可認為該相鄰路由器是不可達的,應立即修改鏈路狀態(tài)數(shù)據(jù)庫,并重新計算路由表。其它的四種報文都是用來進行鏈路狀態(tài)數(shù)據(jù)庫的同步。當一個路由器剛開始工作時,只能通過Hello報文得知它有哪些相鄰的路由器在工作,以及將數(shù)據(jù)發(fā)往相鄰路由器所需的“費用”。如果所有的路由器都把自己的本地鏈路狀態(tài)信息對全網(wǎng)進行廣播,那么各路由器只要將這些鏈路狀態(tài)信息綜合起來就可得出鏈路狀態(tài)數(shù)據(jù)庫。但這樣做開銷太大,因此OSPF采用另外的辦法。

OSPF讓每一個路由器用DatabaseDescription報文和相鄰路由器交換本數(shù)據(jù)庫中已有的鏈路狀態(tài)摘要信息。摘要信息主要指出有哪些路由器的鏈路狀態(tài)信息及其序號已經(jīng)寫入了數(shù)據(jù)庫。經(jīng)過與相鄰路由器交換DatabaseDescription報文后,路由器就使用LinkStateRequest報文,向?qū)Ψ秸埱蟀l(fā)送自己所缺少的某些鏈路狀態(tài)項目的詳細信息。通過一系列的這種報文交換,全網(wǎng)的鏈路數(shù)據(jù)庫就建立了。在網(wǎng)絡運行的過程中,只要一個路由器的鏈路狀態(tài)發(fā)生變化,該路由器就要使用LinkStateUpdate報文,用洪泛法向全網(wǎng)更新鏈路狀態(tài)。為了確保鏈路狀態(tài)數(shù)據(jù)庫與全網(wǎng)的狀態(tài)保持一致,OSPF還規(guī)定每隔一段時間,如30分鐘,要刷新一次數(shù)據(jù)庫中的鏈路狀態(tài)。由于一個路由器的鏈路狀態(tài)只涉及到與相鄰路由器的連通狀態(tài),與整個互聯(lián)網(wǎng)的規(guī)模無關。因此當互聯(lián)網(wǎng)規(guī)模很大時,OSPF協(xié)議要比距離向量協(xié)議RIP好得多。由于OSPF沒有“壞消息傳播得慢”的問題,據(jù)統(tǒng)計,其響應網(wǎng)絡變化的時間小于100?ms。

OSPF協(xié)議的主要特點有:

(1)OSPF協(xié)議使用服務類型進行選路。它使用“費用”來表示一個鏈路,這樣就可根據(jù)不同的服務類型(如低時延或高吞吐量)來選擇路由。當傳送一個數(shù)據(jù)報時,運行OSPF的路由器根據(jù)目的站地址和IP數(shù)據(jù)報頭部的服務類型字段來選擇路由。也就是說,對于同一個目的站,對應于每一種IP服務類型,可以有多個路由表的項目。

(2)OSPF有負荷平衡的功能。如在同一費用下到某個目的站有多條路由,則OSPF協(xié)議能使負荷

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論