TCP.IP網(wǎng)絡(luò)編程_第1頁
TCP.IP網(wǎng)絡(luò)編程_第2頁
TCP.IP網(wǎng)絡(luò)編程_第3頁
TCP.IP網(wǎng)絡(luò)編程_第4頁
TCP.IP網(wǎng)絡(luò)編程_第5頁
已閱讀5頁,還剩30頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第18章IP數(shù)據(jù)報和數(shù)據(jù)報轉(zhuǎn)發(fā)18.1概述前面我們介紹了互聯(lián)網(wǎng)的體系結(jié)構(gòu),因特網(wǎng)尋址以及用來將IP地址翻譯成硬件地址的地址解析軟件。本章我們將討論互聯(lián)網(wǎng)中基本的通訊服務(wù),包括互聯(lián)網(wǎng)中包的格式以及路由器如何處理和轉(zhuǎn)發(fā)這些包。第19章接著討論路由器如何利用底層硬件來傳送包。無連接服務(wù)網(wǎng)絡(luò)互聯(lián)的目的是為了提供這樣一種包通訊系統(tǒng):一臺計算機(jī)上運(yùn)行的程序能夠向另一臺計算機(jī)上運(yùn)行的程序發(fā)送數(shù)據(jù)。在一個設(shè)計良好的互聯(lián)網(wǎng)中,底層物理網(wǎng)絡(luò)對應(yīng)用程序來說是透明的這些應(yīng)用程序能夠收發(fā)數(shù)據(jù)而又無須了解很多細(xì)節(jié),比如本機(jī)所連的局域網(wǎng)目的機(jī)所連的遠(yuǎn)程網(wǎng)絡(luò)以及兩者之間的互聯(lián)等等。協(xié)議的設(shè)計者必須決定互聯(lián)網(wǎng)協(xié)議要提供哪些通訊

2、服務(wù),以及如何高效地實現(xiàn)這些服務(wù)另外,設(shè)計者還須決定是否為程序提供面向連接(connection-oriented)的服務(wù),或是無連接(connectionless)的服務(wù),或是兩者都提供。TCP/IP的設(shè)計者既提供了無連接服務(wù),也提供了面向連接的服務(wù):他們選擇了無連接的基本傳送服務(wù)(deliveryservice),并在這些無連接的底層服務(wù)之上增加了可靠的面向連接的服務(wù)。這一設(shè)計非常成功,以至于經(jīng)常被其他的協(xié)議所模仿。18.3虛擬包無連接的互聯(lián)網(wǎng)服務(wù)其實是包交換的一種擴(kuò)展這種服務(wù)允許發(fā)送方通過互聯(lián)網(wǎng)傳輸單獨(dú)的包。每一個包獨(dú)立地在網(wǎng)上傳送,它本身包含了用以標(biāo)識接收方的信息。一個包是如何在互聯(lián)網(wǎng)

3、上傳輸?shù)哪兀看鸢妇驮谟诼酚善鲗鼜囊粋€網(wǎng)轉(zhuǎn)發(fā)到另一個網(wǎng)。源主機(jī)創(chuàng)建了一個包,將目的地址放入包的頭部,然后將包送往相鄰的路由器。當(dāng)一個路由器收到一個包,就會使用包的目的地址來選擇下一個路由器并向之轉(zhuǎn)發(fā)。最終,包會到達(dá)這樣一個路由器,此路由器能夠直接將包傳給它的最終目的地。一個互聯(lián)網(wǎng)上的包的格式是怎樣的呢?不幸的是,傳統(tǒng)的硬件幀格式不適合作為互聯(lián)網(wǎng)上的包格式。這是因為路由器能夠連接異構(gòu)網(wǎng)絡(luò),而不同類型網(wǎng)絡(luò)的幀格式不同,因此路由器不能直接將包從一個網(wǎng)絡(luò)傳送到另一個網(wǎng)絡(luò)。另外,路由器也不能簡單地重新格式化幀的頭部,因為兩個網(wǎng)絡(luò)可能使用不兼容的地址格式(例如,一個輸入幀中的地址可能對另一個網(wǎng)絡(luò)而言是毫無

4、意義的)。為了克服異構(gòu)性,互聯(lián)網(wǎng)協(xié)議軟件定義了一種獨(dú)立于底層硬件的互聯(lián)網(wǎng)包格式。結(jié)果就產(chǎn)生了一種能無損地在底層硬件中傳輸?shù)耐ㄓ玫?universal)、虛擬的(virtual)包(第19章將詳細(xì)說明一個互聯(lián)網(wǎng)包怎樣在物理網(wǎng)中傳輸)。就像虛擬(virtual)詞所示,協(xié)議軟件負(fù)責(zé)產(chǎn)生和處理互聯(lián)網(wǎng)包一底層硬件并不認(rèn)識這種包的格式。又如通用(universal)詞所示,互聯(lián)網(wǎng)上的每一臺主機(jī)或路由器都有認(rèn)識這種包的協(xié)議軟件。概述如下:由于路由器可能連接異構(gòu)的網(wǎng)絡(luò),它就不能直接將網(wǎng)上送來幀的傳給另一個網(wǎng)。為了克服異構(gòu)性,一個互聯(lián)網(wǎng)必須定義一種與硬件無關(guān)的包格式。18.4IP數(shù)據(jù)報TCP/IP協(xié)議使用IP

5、數(shù)據(jù)報(IPdatagram)這個名字來命名一個互聯(lián)網(wǎng)包。令人驚奇的是,IP數(shù)據(jù)報竟然與硬件幀有同樣的基本格式:IP數(shù)據(jù)報也是以一個頭部開始,后跟數(shù)據(jù)區(qū)。圖18-1例舉了這種數(shù)據(jù)報格式。頭部數(shù)據(jù)區(qū)圖l&lIP數(shù)據(jù)報的基本格式:一個頭部后跟著數(shù)搖區(qū),頭部舎有控制該包發(fā)往何地及如何發(fā)送的信息一個數(shù)據(jù)報攜帶的數(shù)據(jù)量不固定,發(fā)送方根據(jù)特定的用途選擇合適的數(shù)據(jù)量。例如,一個應(yīng)用若需要傳送擊鍵信息,則可以將每次擊鍵放在單獨(dú)的數(shù)據(jù)報中,而當(dāng)一個應(yīng)用要傳送大文件時,則會發(fā)送大數(shù)據(jù)報。關(guān)鍵在于:數(shù)據(jù)報的尺寸取決于發(fā)送數(shù)據(jù)的應(yīng)用。大小可變的數(shù)據(jù)報使得IP可以適應(yīng)各種應(yīng)用。在當(dāng)前IP版本(版本4)中,一個數(shù)據(jù)報的數(shù)

6、據(jù)量可以小到一個字節(jié),而數(shù)據(jù)報本身可以大到64K字節(jié)(包括頭部)。在大部分?jǐn)?shù)據(jù)報中,頭部比數(shù)據(jù)區(qū)要小得多。為了理解這一點(diǎn),有必要了解一下傳輸數(shù)據(jù)的開銷。就像物理網(wǎng)絡(luò)幀中的幀頭,數(shù)據(jù)報的頭部意味著開銷傳輸頭部所花費(fèi)的時間中,并沒有傳輸用戶自己的數(shù)據(jù)。由于數(shù)據(jù)報頭部的尺寸是固定的,發(fā)送大數(shù)據(jù)報導(dǎo)致單位時間內(nèi)傳送了更多的用戶數(shù)據(jù)(即更高的吞吐率)。與幀頭類似,數(shù)據(jù)報頭部包含的信息是為了在互聯(lián)網(wǎng)中尋徑用。例如,頭部包含發(fā)出該數(shù)據(jù)報的計算機(jī)地址和目的計算機(jī)的地址。當(dāng)然,數(shù)據(jù)報頭部的地址形式與幀頭的地址形式是不同的數(shù)據(jù)報包含的是IP地址,而幀包含的是硬件地址。概述如下:一個通過TCP/IP互聯(lián)網(wǎng)的包叫IP

7、數(shù)據(jù)報。每個數(shù)據(jù)報由一個頭部和緊跟其后的數(shù)據(jù)區(qū)組成,數(shù)據(jù)報頭部中源地址和目的地址都是IP地址。IP數(shù)據(jù)報的轉(zhuǎn)發(fā)一個數(shù)據(jù)報沿著從源地址到目的地的一條路徑穿過互聯(lián)網(wǎng),中間會經(jīng)過很多路由器。路徑上的每個路由器收到這個數(shù)據(jù)報時,先從頭部取出目的地址,根據(jù)這個地址決定數(shù)據(jù)報該發(fā)往的下一站。然后路由器將此數(shù)據(jù)報轉(zhuǎn)發(fā)給下一站,該下一站可能就是最終目的地,也可能是另一個路由器。為了使對下一站的選擇高效而且便于理解,每個IP路由器在一張路由表(routingtable)中保存有很多路由信息。當(dāng)一個路由器啟動時,需對路由表進(jìn)行初始化,而當(dāng)網(wǎng)絡(luò)的拓?fù)浒l(fā)生變化或某些硬件發(fā)生故障時,必須更新路由表。概念上說,路由表中每

8、一項都指定了一個目的地和為到達(dá)這個目的地所要經(jīng)過的下一站。圖18-2a)中,三個路由器將四個網(wǎng)絡(luò)連接成為一個的互聯(lián)網(wǎng),b)是一個路由器中的路由表。網(wǎng)輅I;:O;鼬矽;一二邇聲a)目的地下一站net1R(uet2直接傳送ner3直接傳送b)圖18-2a).,路由器將四個網(wǎng)絡(luò)連接成個互聯(lián)網(wǎng)的例子b)路由器也的槪念路由表,其中每一項列出一個目的網(wǎng)絡(luò)和到達(dá)目的網(wǎng)絡(luò)路徑中的、一站如圖所示,路由器R2直接連接網(wǎng)絡(luò)2和網(wǎng)絡(luò)3,因此,R2能將數(shù)據(jù)報直接發(fā)往連在這兩個網(wǎng)絡(luò)上的任何目的地。當(dāng)一個數(shù)據(jù)報的目的地在網(wǎng)絡(luò)4中時,R2就需將數(shù)據(jù)報發(fā)往路由器R3。路由表中列出的每個目的地是一個網(wǎng)絡(luò),而不是一個單獨(dú)的主機(jī)。這

9、個差別非常重要,因為一個互聯(lián)網(wǎng)中的主機(jī)數(shù)可能是網(wǎng)絡(luò)數(shù)的1000倍以上。因而,使用網(wǎng)絡(luò)作為目的地可以使路由表的尺寸變得較小。概述如下:由于路由表中的每個目的地對應(yīng)于一個網(wǎng)絡(luò),路由表中的項數(shù)正比于互聯(lián)網(wǎng)中的網(wǎng)絡(luò)個數(shù)。IP地址與路由表項事實上,一個IP路由表比18-2圖中的例子稍復(fù)雜一些。首先,每一項的目的地(Destination)域只包含目的地網(wǎng)絡(luò)的網(wǎng)絡(luò)前綴。第二,每項中有一個附加域包含了一個地址屏蔽碼(addressmask),這個屏蔽碼決定了目的地中的哪些位對應(yīng)著網(wǎng)絡(luò)前綴。第三,當(dāng)下一站(NextHop)域指的是一個路由器時,將使用一個IP地址。圖18-2的路由表在實際當(dāng)中是以圖18-3的形

10、式出現(xiàn)。(大部分互聯(lián)網(wǎng)連接了不止四個網(wǎng)絡(luò),一個典型的路由表還應(yīng)包含一個缺省路由,即一個對應(yīng)于所有未在表中列出的目的地的項。)128.1.0.9ie2.4.ta.9H的地30.0.0.040.0.0.0128.1.0.0192.4J0.D屏蔽碼255.000255.0.0.02&5.255.0.0255.255.255J下一站40.0.0.7deliverdirectdeliverdirect128J.D.9圖1S-3叮艸牛個緒和二平賈由器糾用時一午互聯(lián)阿,鉗牛路中器接II分配一個IP也址K)是中間那亍第世器的路由表,蔓中每“壩列出一牛E的世.一個層敝碼科對達(dá)E的地.的卜一站表中頭兩個網(wǎng)絡(luò)都有一

11、個A類前綴,第三個網(wǎng)絡(luò)有一個B類前綴,第四個網(wǎng)絡(luò)有一個C類前綴。每個路由器被指定了兩個IP地址,一個地址對應(yīng)一個接口。例如,連接網(wǎng)絡(luò)30.0.0.0和40.0.0.0的路由器被指定了地址30.0.0.7和40.0.0.7。盡管路由器的兩個接口有同樣的主機(jī)后綴,其實IP并不要求這種一致一一網(wǎng)絡(luò)管理員可以自由地為每個接口指定不同的值。屏蔽碼域和數(shù)據(jù)報轉(zhuǎn)發(fā)使用路由表為數(shù)據(jù)報選擇下一站的過程叫路由(routing)或轉(zhuǎn)發(fā)(forwarding)。查表時屏蔽碼域用來從一個IP地址中取出網(wǎng)絡(luò)部分。為了理解屏蔽碼是怎樣使用的,想象一個路由正要轉(zhuǎn)發(fā)一個數(shù)據(jù)報。假設(shè)數(shù)據(jù)報包含了目的地址D,路由軟件必須在路由表中

12、找到指明D的下一站的那一項。為了做到這一點(diǎn),軟件檢測路由器中的每一項,利用屏蔽碼域提取地址D的前綴,并把結(jié)果與目的地域加以比較。如果相同,數(shù)據(jù)報將按該項中所指的下一站進(jìn)行轉(zhuǎn)發(fā)。屏蔽碼的引入使得提取前綴的工作非常高效軟件將屏蔽碼與數(shù)據(jù)報目的地址D進(jìn)行布爾與(and)運(yùn)算。因而,檢測表中第i項的計算過程可以表述如下:if(Maski&D)=Destinationi)forwardtoNextHopi;舉一個例子,考慮一個目的地址為192.4.10.3的數(shù)據(jù)報,假設(shè)該數(shù)據(jù)報到達(dá)了一個包含圖18-3所示路由表的路由器上,并假設(shè)軟件順序搜索表中每一項,則對于第一項,因為255.0.0.0&192.4.1

13、0.3不等于30.0.0.0,故匹配失敗。同樣,第二、三項都不符和,路由軟件最終選擇了地址為128.1.0.9的下一站,因為255.255.255.0&192.4.10.3=192.4.10.0目的地和下一站地址數(shù)據(jù)報頭部的目的地址與其被轉(zhuǎn)發(fā)的下一站地址之間到底有什么關(guān)系呢?數(shù)據(jù)報中的目的地IP地址(DESTINATIONIPADDRESS)域包含了最終目的地址。當(dāng)路由器收到一個數(shù)據(jù)報,會取出目的地址D,用它來計算數(shù)據(jù)報將發(fā)往的下一路由器的地址No盡管這個數(shù)據(jù)報被直接發(fā)往地址N,但頭部中仍保持著目的地址Do也就是說:一個數(shù)據(jù)報頭部中的目的地址總是指最終目的地。當(dāng)一個路由器將這個數(shù)據(jù)報轉(zhuǎn)發(fā)給另一

14、個路由器時,下一站的地址并不在數(shù)據(jù)報頭部里出現(xiàn)。所有的路由器都是使用IP地址進(jìn)行計算的。在計算出下一站的地址N之后,IP軟件使用第17章所述的地址聯(lián)編技術(shù)將地址N翻譯成等價的硬件地址以便傳輸。在下一章中,我們將討論數(shù)據(jù)報是怎樣穿過一個物理網(wǎng)絡(luò)的。盡力傳遞除了定義互聯(lián)網(wǎng)數(shù)據(jù)報格式,IP還定義了通信的語義,并使用“盡力而為”(best-effort)這個詞來描述所提供的服務(wù)。從本質(zhì)上講,這個標(biāo)準(zhǔn)指出了盡管IP層會努力地嘗試傳遞每個數(shù)據(jù)報,但并不保證處理以下問題:數(shù)據(jù)報重復(fù)。延遲傳送或亂序傳送。數(shù)據(jù)的損壞。數(shù)據(jù)報的丟失。以上問題都需要上層協(xié)議軟件加以處理。IP層會出現(xiàn)這些問題也許看起來很奇怪,然而,

15、這里有一個重要的原因:每一層的協(xié)議軟件各自只負(fù)責(zé)通信的某些方面,IP層就不負(fù)責(zé)處理以上問題。因而,當(dāng)?shù)讓游锢砭W(wǎng)絡(luò)會出現(xiàn)以上的這些問題時,使用IP的任何軟件都必須自己解決。概述如下:由于IP是為了操作各種類型的網(wǎng)絡(luò)硬件而設(shè)計,而這些硬件可能工作得并不太好,因此IP數(shù)據(jù)報也會發(fā)生丟失、重復(fù)、延遲、亂序或損壞等問題,這些問題都需靠高層協(xié)議軟件來解決。IP數(shù)據(jù)報頭部格式圖18-4給出了一個IP數(shù)據(jù)報頭部包含的各個域,包括源IP地址(SOURCEIPADDRESS)、目的地IP地址(DESTINATIONIPADDRESS)和類型(TYPE)域,源IP地址域含有發(fā)送方的IP地址,目的地址域含有接收方的I

16、P地址,類型域指明數(shù)據(jù)的類型。04016192431版本頭部扶度服務(wù)類型總長標(biāo)識杯志,段偏移生療時同類型頭部校驗和;源IP地址目的地IP地址IP可選項(可省略)充填數(shù)據(jù)開.始I-圖1&4IP數(shù)據(jù)報頭部中的各個域。其中,源地址和疔的地地址均是IP地址數(shù)據(jù)報頭部里的每個域都有固定的大小。數(shù)據(jù)報以4位的協(xié)議版本號(當(dāng)前版本號4)和4位的頭部長度開始,頭部長度指出以32位字長為單位的頭部長度。服務(wù)類型(SERVICETYPE)域包含的值指明發(fā)送方是否希望以一條低延遲的路徑或是以一條高吞吐率的路徑來傳送該數(shù)據(jù)報,當(dāng)一個路由器知道多條通往目的地的路徑時,就可以靠這個域?qū)β窂郊右赃x擇。總長(TOTALLEN

17、GTH)域為16位的整數(shù),說明以字節(jié)計的數(shù)據(jù)報總長度,包括頭部長度和數(shù)據(jù)長度。第19章將解釋標(biāo)識(IDENTIFICATION)域、標(biāo)志(FLAGS)域和和段偏移(FRAGMENTOFFSET)域。生存時間(TIMETOLIVE)域用來阻止數(shù)據(jù)報在一條包含環(huán)路的路徑上永遠(yuǎn)地傳送。當(dāng)軟件發(fā)生故障或管理人員錯誤地配置路由器時,就會產(chǎn)生這樣的路徑。發(fā)送方負(fù)責(zé)初始化生存時間域,這是一個從1到255之間的整數(shù)。每個路由器處理數(shù)據(jù)報時,會將頭部里的生存時間減1,如果達(dá)到0,數(shù)據(jù)報將被丟棄,一個出錯消息被發(fā)回給源主機(jī)。頭部校驗和(HEADERCHECKSUM)域確保頭部在傳送過程中不被改變。發(fā)送方對除了校驗

18、和域的頭部數(shù)據(jù)每16位對1求補(bǔ),所有結(jié)果累加,并將和的補(bǔ)放入頭部校驗和域中。接收方進(jìn)行同樣計算,但包括了校驗和域。如果校驗和正確,則結(jié)果應(yīng)該為0(數(shù)學(xué)上,1的求補(bǔ)是一個逆加,因此將一個值加到它自身的補(bǔ)上將得到零)。為了保證數(shù)據(jù)報不過大,IP定義了一套可選項(options)。當(dāng)一個IP數(shù)據(jù)報沒攜帶可選項時,頭部長度(H.LEN)域的值為5,頭部以目的地址(DESTINATIONADDRESS)域作為結(jié)束。因為頭部長度總是32位的倍數(shù),如果可選項達(dá)不到32位的整數(shù)倍,全0的充填(PADDING)域會被加入以保證頭部長度為32位的倍數(shù)。18.11小結(jié)互聯(lián)網(wǎng)協(xié)議定義了在TCP/IP互聯(lián)網(wǎng)上傳送的基本

19、單位一IP數(shù)據(jù)報。每個數(shù)據(jù)報類似于一個硬件幀,因為都是由頭部跟其后的數(shù)據(jù)區(qū)組成。就象硬件幀一樣,頭部包含了傳送數(shù)據(jù)報至特定目的地的信息。與硬件幀不同的是,數(shù)據(jù)報頭部包含的是IP地址。路由器中IP的軟件使用一個路由表來決定數(shù)據(jù)報發(fā)送的下一站。路由表中的每一項對應(yīng)于一個目的地網(wǎng)絡(luò),這就使得路由表的尺寸與互聯(lián)網(wǎng)中的網(wǎng)絡(luò)數(shù)目成正比。當(dāng)挑選一條路徑時,IP軟件將把目的地址的網(wǎng)絡(luò)前綴與表中的每一項進(jìn)行比較。盡管IP軟件選擇了數(shù)據(jù)報發(fā)往的下一站,但下一站的地址并不出現(xiàn)在數(shù)據(jù)報頭部中。相反,頭部中總是放著最終目的地的地址。練習(xí)18.1用虛擬包代替幀的主要優(yōu)點(diǎn)是什么?18.2寫一個計算機(jī)程序,輸入一個象圖18-

20、3b)的IP路由表以及一系列的目的地址。對每一個目的地址,該程序順序搜索路由表,找到正確的下一站作為輸出。修改前一個練習(xí)的程序,使用散列代替順序搜索。比較兩個程序的速度,看看散列到底快多少。18.4寫一個計算機(jī)程序,從一個IP數(shù)據(jù)報中取出源地址和目的地地址,以點(diǎn)分十進(jìn)制表示法輸出。寫一個計算機(jī)程序,計算頭部校驗和。使用這個程序檢測從網(wǎng)上捕獲的數(shù)據(jù)報,看看校驗和失敗的頻度如何。寫一個計算機(jī)程序,從IP數(shù)據(jù)報頭部中提取所有的域。以十六進(jìn)制的形式或點(diǎn)分十進(jìn)制的形式打印它們的值。如果一個數(shù)據(jù)報包含一個8位的可選項和一個8位的數(shù)據(jù)值,則頭部的頭部長度域的值和總長度域的值分別是多少?18.8假設(shè)兩個路由器

21、被錯誤地配置,以至對某些目的地D產(chǎn)生了路由環(huán)。解釋一下為什么目的地為D的數(shù)據(jù)報不會永遠(yuǎn)地在環(huán)中傳送。第19章IP封裝、分段與重組19.1概述第18章描述了IP數(shù)據(jù)報的格式,并討論了在通往目的地路徑上的每一站中,是怎樣利用路由表中的信息來選擇下一站的。本章通過詳盡描述數(shù)據(jù)報的傳輸來結(jié)束對IP的討論,包括主機(jī)或路由器怎樣穿過物理網(wǎng)發(fā)送一個數(shù)據(jù)報以及路由器怎樣處理大數(shù)據(jù)報的問題。19.2數(shù)據(jù)報傳輸與幀當(dāng)主機(jī)或路由器處理一個數(shù)據(jù)報時,IP軟件首先選擇數(shù)據(jù)報發(fā)往的下一站N,然后通過物理網(wǎng)絡(luò)將數(shù)據(jù)報傳送給N。不幸的是,網(wǎng)絡(luò)硬件并不了解數(shù)據(jù)報格式或因特網(wǎng)尋址。相反,每種硬件技術(shù)定義了自己的幀格式和物理尋址方

22、案,硬件只接收和傳送那些符合特定幀格式以及使用特定的物理尋址方案的包。另外,由于一個互聯(lián)網(wǎng)可能包含異構(gòu)網(wǎng)絡(luò)技術(shù),穿過當(dāng)前網(wǎng)絡(luò)的幀格式與前一個網(wǎng)絡(luò)的幀格式可能是不同的。19.3封裝在物理網(wǎng)絡(luò)不了解數(shù)據(jù)報格式的情況下,數(shù)據(jù)報怎樣才能在該網(wǎng)絡(luò)中傳輸呢?答案就在于一種技術(shù):封裝(encapsulation)。當(dāng)一個IP數(shù)據(jù)報被封裝進(jìn)一個幀中時,整個數(shù)據(jù)報被放進(jìn)幀的數(shù)據(jù)區(qū)。網(wǎng)絡(luò)硬件象對待普通幀一樣對待包含一個數(shù)據(jù)報的幀。事實上,硬件不會檢測或改變幀的數(shù)據(jù)區(qū)內(nèi)容。圖19-1舉例說明了這一概念。2頭部IP數(shù)據(jù)區(qū)幀頭部幀數(shù)據(jù)區(qū)圖141封裝在一個硬件幀中的一個數(shù)劭報,整個數(shù)搦報位于幀的數(shù)據(jù)區(qū)實際上,有些蚊格式中

23、還包含一個象幀頭一樣的幀尾接收方怎樣知道輸入幀的數(shù)據(jù)區(qū)中含有一個IP數(shù)據(jù)報還是其他數(shù)據(jù)呢?發(fā)送方和接收方必須就幀類型域中的值達(dá)成一致。當(dāng)發(fā)送方將一個數(shù)據(jù)報放入幀中,就須在幀類型域內(nèi)放入代表IP數(shù)據(jù)報的特定值。當(dāng)這樣一個幀到達(dá)接收方,接收方就能根據(jù)它的類型域值知道幀中含有一個IP數(shù)據(jù)報。攜帶了一個IP數(shù)據(jù)報的幀同樣要有一個目的地址。因此,封裝除了將數(shù)據(jù)報放入幀的數(shù)據(jù)區(qū),還要求發(fā)送方提供數(shù)據(jù)報去往的下一站的計算機(jī)物理地址。為了得到這個物理地址,發(fā)送方機(jī)器上的軟件將執(zhí)行第17章所述的地址聯(lián)編過程,以將下一站的IP地址翻譯成等價的物理地址,這個物理地址也就是幀頭部中的目的地址。概述如下:為了在物理網(wǎng)絡(luò)

24、中傳輸,數(shù)據(jù)報被封裝在幀中。幀中的目的地址是數(shù)據(jù)報去往的下一站的地址;這個地址是通過將下一站的IP地址翻譯成等價的物理地址而得到的。19.4在互聯(lián)網(wǎng)上的傳輸在一次傳輸中封裝只發(fā)生一次。發(fā)送方在選好下一站之后,將數(shù)據(jù)報封裝到一個幀當(dāng)中,并通過物理網(wǎng)絡(luò)傳給下一站。當(dāng)幀到達(dá)下一站時,接收軟件從幀中取出數(shù)據(jù)報,然后丟棄這一幀。如果數(shù)據(jù)報必須通過另一個網(wǎng)絡(luò)轉(zhuǎn)發(fā)時,就會產(chǎn)生一個新的幀。圖19-2說明了一個數(shù)據(jù)報從源主機(jī)出發(fā),在通過三個網(wǎng)絡(luò)和兩個路由器到達(dá)目的主機(jī)的過程中,是怎樣被封裝和解封的。由于每個網(wǎng)絡(luò)可能使用一種不同于其他網(wǎng)絡(luò)的硬件技術(shù),因此幀的格式也相應(yīng)地不同。捋由冨2rw主機(jī)圖19-2牛匹數(shù)據(jù)報在

25、直聯(lián)網(wǎng)中傳輸?shù)拿恳徊竭^程半中的不同形式。當(dāng)數(shù)據(jù)報要通過一個物理網(wǎng)絡(luò)時,會被封裝進(jìn)返個側(cè)絡(luò)所對砲旳幀當(dāng)中耐機(jī)閥彰;J二耳.丄_/路由器1頤頭m幀頭i效據(jù)據(jù)鈾蟄2iff111Ih-r數(shù)據(jù)握如圖所示,主機(jī)和路由器只在內(nèi)存中保留了整個數(shù)據(jù)報而沒有多余的幀頭信息。當(dāng)數(shù)據(jù)報通過一個物理網(wǎng)絡(luò)時,才會被封裝進(jìn)一個合適的幀中。幀頭的大小依賴于相應(yīng)的網(wǎng)絡(luò)技術(shù)。例如,如果網(wǎng)絡(luò)1是一個以太網(wǎng),幀1有一個以太網(wǎng)頭部。類似地,如果網(wǎng)絡(luò)2是一個FDDI環(huán),則幀2有一個FDDI頭部。有一點(diǎn)很重要,即在通過互聯(lián)網(wǎng)的整個過程中,幀頭并沒有累積起來。只有在數(shù)據(jù)報要通過一個網(wǎng)絡(luò)時,才被封裝。當(dāng)幀到達(dá)下一站時,數(shù)據(jù)報將被從輸入幀中取出

26、來,然后才被路由和重新封裝到一個輸出幀中。因而,當(dāng)數(shù)據(jù)報到達(dá)它的最終目的地時,攜帶數(shù)據(jù)報的幀被丟棄,使得數(shù)據(jù)報的大小與其最初被發(fā)送時是一樣的。關(guān)鍵在于:當(dāng)封裝在一個網(wǎng)絡(luò)幀的數(shù)據(jù)報到達(dá)時,接收方會將其從幀的數(shù)據(jù)區(qū)中取出來,同時丟棄幀頭。19.5MTU、數(shù)據(jù)報長度和封裝每一種硬件技術(shù)都規(guī)定了一幀所能攜帶的最大數(shù)據(jù)量。這一限制稱為最大傳輸單元(maximumtransmissionunit,MTU)。對于MTU這一限制,不存在例外網(wǎng)絡(luò)硬件在設(shè)計上不能接受或傳輸數(shù)據(jù)量大于MTU的幀。因而一個數(shù)據(jù)報必須小于或等于一個網(wǎng)絡(luò)的MTU,否則無法進(jìn)行封裝。在一個互聯(lián)網(wǎng)中,包含各種異構(gòu)的網(wǎng)絡(luò),MTU限制可能會導(dǎo)致

27、一些問題。特別是由于一個路由器可能連著不同MTU值的多個網(wǎng)絡(luò),能從一個網(wǎng)上接收數(shù)據(jù)報并不意味著一定能在另一個網(wǎng)上發(fā)送此數(shù)據(jù)報。例如,圖19-3中,一個路由器連接了兩個網(wǎng)絡(luò),這兩個網(wǎng)絡(luò)的MTU值分別為1500和1000。岡絡(luò)1型g=l刊0RO圖197連接著兩個具有不同MTU值的網(wǎng)絡(luò)的一個路由器。通過網(wǎng)絡(luò)1的一幀可以包含1500字節(jié)的數(shù)據(jù),同時網(wǎng)絡(luò)2中的一幀最多只能含育1000字節(jié)的數(shù)搦在圖中,主機(jī)H2連著MTU值為1000的網(wǎng)絡(luò)2。因此,H2能傳送的數(shù)據(jù)報的尺寸小FT2(NmJ=lOOO)于等于1000字節(jié)。然而,主機(jī)H1連著MTU值為1500的網(wǎng)絡(luò)1,因此能傳送最多到1500字節(jié)的數(shù)據(jù)報。如果

28、H1將一個1500字節(jié)的數(shù)據(jù)報發(fā)給H2,路由器R收到數(shù)據(jù)報后卻不能在網(wǎng)絡(luò)2上發(fā)送它。一個IP數(shù)據(jù)報使用一種叫分段(fragmentation)的技術(shù)來解決這一問題。當(dāng)一個數(shù)據(jù)報的尺寸大于將發(fā)往的網(wǎng)絡(luò)的MTU值時,路由器會將數(shù)據(jù)報分成若干較小的部分,叫段(fragment),然后再將每段獨(dú)立的進(jìn)行發(fā)送。令人吃驚的是,每一小段與其他的數(shù)據(jù)報有同樣的格式,只是頭部的標(biāo)志(FLAGS)域中有一位標(biāo)識了一個數(shù)據(jù)報是一個段還是一個完整的數(shù)據(jù)報(數(shù)據(jù)報頭格式參見18.4節(jié))。段的頭部中的其他域中包含有其他一些信息,以便用來重組這些段,重新生成原始數(shù)據(jù)報。另外,頭部的段偏移(FRAGMENTOFFSET)域指

29、出該段在原始數(shù)據(jù)報中的位置。在對一個數(shù)據(jù)報分段時,路由器使用相應(yīng)網(wǎng)絡(luò)的MTU和數(shù)據(jù)報頭部尺寸來計算每段所能攜帶的最大數(shù)據(jù)量以及所需段的個數(shù),然后生成這些段。路由器先為每一段生成一個原數(shù)據(jù)報頭部的副本作為段的頭部,然后單獨(dú)修改其中的一些域例如路由器會設(shè)置標(biāo)志(FLAGS)域中的相應(yīng)位以指示這些數(shù)據(jù)報含的是一個段。最后,路由器從原數(shù)據(jù)報中復(fù)制相應(yīng)的數(shù)據(jù)到每個段中,并開始傳送。圖19-4表明了這一過程。IF頭部1IP頭部2數(shù)抵IP頭部3圖1亠4一個IP數(shù)擁報被分成段。每段攜帶著頑始數(shù)擁報的一部分?jǐn)?shù)據(jù).并有類似,原始數(shù)據(jù)報的【P頭部IP頭部原抬數(shù)據(jù)報文區(qū)概述如下:數(shù)據(jù)報尺寸不能大于它所經(jīng)網(wǎng)絡(luò)的MTU。

30、當(dāng)一個路由器收到一個數(shù)據(jù)報,且這個數(shù)據(jù)報比將要去往的網(wǎng)絡(luò)MTU大時,路由器會將數(shù)據(jù)報分成若干較小的部分叫段(fragment)o每一段都使用IP數(shù)據(jù)報格式,但只攜帶了原數(shù)據(jù)報的一部分?jǐn)?shù)據(jù)。19.6重組在所有的段的基礎(chǔ)上重新產(chǎn)生原數(shù)據(jù)報的過程叫重組(reassembly)。由于每個段都以原數(shù)據(jù)報頭部的一個副本作為開始,因此都有與原數(shù)據(jù)報同樣的目的地址。另外,含有最后一塊數(shù)據(jù)的段在頭部設(shè)置有一個特別的位,因此,執(zhí)行重組的接收方能報告是否所有的段都成功地到達(dá)。有趣的是,互聯(lián)網(wǎng)協(xié)議規(guī)定只有最終目的主機(jī)才會對段進(jìn)行重組。例如,考慮圖19-5中的例子。1119-5-個數(shù)擔(dān)報分段的互聯(lián)劇例子c-旦一個數(shù)據(jù)報

31、被分段,這叫段轉(zhuǎn)發(fā)到最終冃的地后,才會被重紐圖中,如果主機(jī)H1發(fā)送一個1500字節(jié)的數(shù)據(jù)報,路由器R1將會把數(shù)據(jù)報分為兩段,轉(zhuǎn)發(fā)給路由器R2;R2并不進(jìn)行段的重組,只是直接轉(zhuǎn)發(fā)這些段。最終目的主機(jī)H2搜集了這些段之后,將重組它們,以生成原數(shù)據(jù)報。只在最終目的地重組段有兩大好處。首先,減少了路由器中狀態(tài)信息的數(shù)量。當(dāng)轉(zhuǎn)發(fā)一個數(shù)據(jù)報時,路由器不需要知道它是不是一個段。其次,允許路徑動態(tài)地變化。如果一個中間路由器要重組段,則所有的段都須到達(dá)這個路由器才行。而且通過將重組推后到目的地,IP就可以自由地將數(shù)據(jù)報的不同段沿不同的路徑傳輸。標(biāo)識一個數(shù)據(jù)報前面說過IP并不保證送達(dá),因而單獨(dú)的段可能會丟失或不按

32、次序到達(dá)。另外,如果一個源主機(jī)將多個數(shù)據(jù)報發(fā)給同一個目的地,這些數(shù)據(jù)報的多個段就可能以任意的次序到達(dá)。IP軟件怎樣重組這些亂序的段呢?發(fā)送方將一個惟一的標(biāo)識放進(jìn)每個輸出數(shù)據(jù)報的標(biāo)識(IDENTIFICATION)域中。當(dāng)一個路由器對一個數(shù)據(jù)報分段時,就會將這一標(biāo)識數(shù)復(fù)制到每一段中,接收方就可利用收到的段的標(biāo)識數(shù)和IP源地址來確定該段屬于那個數(shù)據(jù)報。另外,段偏移(FRAGMENTOFFSET)域可以告訴接收方各段的次序。段丟失記得IP并不保證送達(dá)一如果底層網(wǎng)絡(luò)遺失了包,則封裝其中的數(shù)據(jù)報或段也就遺失了。而只有一個數(shù)據(jù)報的所有的段都收到了,才能重組該數(shù)據(jù)報。因此有一個相應(yīng)問題出現(xiàn):一個數(shù)據(jù)報的一部

33、分段到達(dá)的同時,很可能仍有一些段被延遲或丟失。盡管這時數(shù)據(jù)報還不能被重組,接收方仍須保留所有已收到的段,以防未到的段可能只是被延遲。當(dāng)然,接收方不能將這些段保留任意長的時間,因為它們會占用大量的內(nèi)存資源。為了避免耗盡內(nèi)存,IP規(guī)定了保留段的最大時間。當(dāng)數(shù)據(jù)報的某一段第一個到達(dá)時,接收方開始一個計時器。如果數(shù)據(jù)報的所有段在規(guī)定時間內(nèi)在到達(dá),接收方取消計時,重組數(shù)據(jù)報。否則,到了時間,而所有段還未到齊,接收方會丟棄已到達(dá)的段。引入IP重組計數(shù)器結(jié)果是全有/全無(all-or-nothing):要么所有的段都到達(dá)了并且IP重組數(shù)據(jù)報,要么IP丟棄了整個數(shù)據(jù)報。另外,沒有任何機(jī)制使接收方去告知發(fā)送方已

34、收到哪些段。由于發(fā)送方本身并不知道有關(guān)分段的事情,這一設(shè)計就顯得有用。更進(jìn)一步地,如果發(fā)送方重發(fā)該數(shù)據(jù)報,路由可能不同,因為每次傳輸并不總是通過同樣的路由器。因此,無法保證重發(fā)的數(shù)據(jù)報會象上次一樣地被分段。段的進(jìn)一步分解分段之后,路由器將每一段轉(zhuǎn)發(fā)給它的目的地。如果某段遇到一個MTU值更小的網(wǎng)絡(luò)時會發(fā)生什么事情呢?分段方案本身規(guī)劃得很仔細(xì),使得段本身能夠再被分段。路徑上的另一個路由器會將段分成更小的一些段。如果一個互聯(lián)網(wǎng)設(shè)計得很糟糕,其中的網(wǎng)絡(luò)按MTU從大到小依次連接,則路徑上的每個路由器就必須對段再進(jìn)行分段。IP對源段與子段并不加以區(qū)分,接收方也并不知道收到的是一個第一次分段后形成的段還是一

35、個已經(jīng)被多個路由器多次分段后形成的段。同等對待所有段的優(yōu)點(diǎn)在于:接收方并不需要先重組子段后才能重組原數(shù)據(jù)報。這樣一來就節(jié)省了CPU時間,減少了每一段的頭部中所需的信息量。小結(jié)一個IP數(shù)據(jù)報在物理網(wǎng)絡(luò)中傳輸之前要先被封裝到該網(wǎng)絡(luò)的幀當(dāng)中。為了封裝一個數(shù)據(jù)報,發(fā)送方把整個數(shù)據(jù)報放在網(wǎng)絡(luò)幀的數(shù)據(jù)區(qū)中。發(fā)送方還必須解決下一站的物理地址問題,這一地址被放進(jìn)幀頭的目的地域中。封裝在一個網(wǎng)絡(luò)只發(fā)生一次路由器從輸入幀中取出數(shù)據(jù)報,然后再把數(shù)據(jù)報封裝進(jìn)一個輸出幀中。每一種網(wǎng)絡(luò)技術(shù)都規(guī)定了一個包所能攜帶的最大數(shù)據(jù)量,這一數(shù)據(jù)量的限制稱為網(wǎng)絡(luò)最大傳輸單元(MTU)。當(dāng)一個路由器收到一個數(shù)據(jù)報,且此數(shù)據(jù)報比要去的網(wǎng)絡(luò)

36、的MTU大時,路由器將它分成若干較小的數(shù)據(jù)報,這一過程叫分段(fragment)。每一段獨(dú)立地去往最終目的地,最終目的地負(fù)責(zé)將這些段重組成原數(shù)據(jù)報。練習(xí)為什么在一個互聯(lián)網(wǎng)中需要使用分段技術(shù),而在一個典型的廣域網(wǎng)中不需要?因為互聯(lián)網(wǎng)中存在不同MTU的介質(zhì),而典型廣域網(wǎng)MTU都相同。假設(shè)一個數(shù)據(jù)報在穿過一個互聯(lián)網(wǎng)的過程中經(jīng)過N個路由器,則數(shù)據(jù)報會被封裝幾次?N次盡管可以使用小數(shù)據(jù)報來避免分段的發(fā)生,但發(fā)送方幾乎不這么做,為什么?發(fā)送方根本不知道藥經(jīng)過的介質(zhì)的MTU,分段是由路由器來處理的一個數(shù)據(jù)報最多可分為多少段?解釋一下。一個IP報文最大64K,64*1024-IP頭部-MTU頭部IP規(guī)定任何數(shù)

37、據(jù)報都可能被延遲,意味著數(shù)據(jù)報到達(dá)的次序可能與它們發(fā)送的次序不同。如果一個數(shù)據(jù)報的某一段在前一數(shù)據(jù)報的所有段全部到達(dá)之前到達(dá),目的地如何知這些段屬于哪一個數(shù)據(jù)報?其頭部包含了IP數(shù)據(jù)包頭部信息19.6寫一個計算機(jī)程序,輸入一個IP數(shù)據(jù)報和一個MTU值,程序負(fù)責(zé)為這個數(shù)據(jù)報分段,使每一段適合于指定的MTU值。寫一個計算機(jī)程序?qū)崿F(xiàn)重組。程序接受一系列的段,然后重組它們以形成一個完整的數(shù)據(jù)報。并通過亂序的段來進(jìn)行測試。提示:查一下標(biāo)志(FLAG)域中更多段(MOREFRAGMENT)位的含義。19.8路徑MTU(pathMTU)定義為:從源到目的地一條路徑上的最小MTU。當(dāng)前的IP標(biāo)準(zhǔn)推薦主機(jī)在選擇

38、數(shù)據(jù)報尺寸時預(yù)先了解路徑MTUo閱讀有關(guān)如何了解路徑MTU的文章,在這一章中討論的哪項技術(shù)與了解路徑MTU的技術(shù)類似。在前一個練習(xí)中,了解路徑MTU的主要優(yōu)點(diǎn)是什么?在數(shù)據(jù)報從一個廣域網(wǎng)經(jīng)路由器進(jìn)入一個局域網(wǎng),或由局域網(wǎng)經(jīng)路由器進(jìn)入一個廣域網(wǎng)的時候,是否會有分段發(fā)生?為什么?第20章IP的未來20.1概述前幾章討論了當(dāng)前ip版本的各個方面:一個ip數(shù)據(jù)報是由一個頭部和其后的數(shù)據(jù)組成,頭部包含了如IP軟件用于傳遞數(shù)據(jù)報所用的目的地址等等信息,頭部中的每個域都是固定大小的,以便處理起來更為有效,第19章還描述了一個IP數(shù)據(jù)報怎樣被封裝到一個網(wǎng)絡(luò)幀中,然后在物理網(wǎng)絡(luò)中傳輸。本章集中討論互聯(lián)網(wǎng)協(xié)議的未

39、來。開頭我們會看到對當(dāng)前ip版本健壯性以及局限性的估計,之后,會看到一個完全嶄新的ip版本,這一嶄新的版本已由iETF(internetEngineeringTaskForceinternet工程任務(wù)編組)提議代替當(dāng)前版本。本章將介紹新版本的特點(diǎn),并闡明設(shè)計者怎樣克服了當(dāng)前版本中的一些局限。IP的成就當(dāng)前的IP版本是非常成功的。IP已使Internet處理下述問題成為可能:異構(gòu)網(wǎng)絡(luò)、硬件技術(shù)的不斷變化以及網(wǎng)絡(luò)規(guī)模的急劇增長。為了處理異構(gòu)性,IP定義了一個統(tǒng)一的包格式(IP數(shù)據(jù)報)和包的傳輸機(jī)制。IP數(shù)據(jù)報是因特網(wǎng)中進(jìn)行通信的基本單位,當(dāng)一個應(yīng)用要通過因特網(wǎng)給另外一個應(yīng)用傳送數(shù)據(jù)時,這些數(shù)據(jù)是以

40、一個IP數(shù)據(jù)報的形式通過網(wǎng)絡(luò)的。IP也定義了一套地址,這些地址允許應(yīng)用和高層協(xié)議在異構(gòu)網(wǎng)絡(luò)間進(jìn)行通信而無須知道底層網(wǎng)絡(luò)系統(tǒng)在硬件地址上的差異。規(guī)??蓴U(kuò)展性也已被證明,當(dāng)前的因特網(wǎng)在全世界已包含了以百萬計的用戶,這一事實本身就是最好的證據(jù)。當(dāng)前的IP版本已能適應(yīng)硬件技術(shù)的變化,盡管這一協(xié)議在局域網(wǎng)技術(shù)流行之前就已制定了,但原先的這些設(shè)計在幾代硬件技術(shù)中仍能很好地工作。現(xiàn)在使用IP的網(wǎng)絡(luò)比IP設(shè)計時所用的網(wǎng)絡(luò)已快了好幾個數(shù)量級,而且現(xiàn)今的網(wǎng)絡(luò)提供的幀尺寸也比IP設(shè)計時的網(wǎng)絡(luò)幀尺寸大得多。由于能受益于不斷增大的幀尺寸,IP在現(xiàn)今的網(wǎng)絡(luò)上仍能高效地工作。概述如下:當(dāng)前IP版本的成就令人難以置信,該協(xié)議

41、竟能夠適應(yīng)硬件技術(shù)的變化、異構(gòu)網(wǎng)絡(luò)和極大的規(guī)模。變革的動機(jī)如果IP真的工作得很好,為什么還要變革?主要的動機(jī)是在于有限的地址空間。當(dāng)初設(shè)計IP的時候,只有幾個計算機(jī)網(wǎng)絡(luò)。設(shè)計者決定使用32位的IP地址,因為這樣就能允許因特網(wǎng)包含超過一百萬個的網(wǎng)絡(luò)。然而,全球因特網(wǎng)竟以指數(shù)增長,不到一年規(guī)模就增大了一倍。以當(dāng)前的增長率,所有可能的網(wǎng)絡(luò)前綴很快就會被用光,而且還沒有考慮越來越快的增長率。因此,設(shè)計一個新版本IP的主要動機(jī)就是受到了地址空間的限制,持續(xù)增長的因特網(wǎng)需要更大的地址來適應(yīng)。IP變革的第二個動機(jī)來源于新的因特網(wǎng)應(yīng)用,例如,需要傳遞音頻和視頻的應(yīng)用要求數(shù)據(jù)能以等間隔傳遞。為了保持這樣的信息流

42、在通過因特網(wǎng)時不被打斷,IP必須避免經(jīng)常更換路徑。盡管當(dāng)前的IP數(shù)據(jù)報頭部已經(jīng)包含了用于請求某類服務(wù)的域,但協(xié)議并沒有定義一種能用于實時傳遞音頻和視頻的服務(wù)。正在開發(fā)中的新應(yīng)用要求更復(fù)雜的尋址和路由能力。例如,協(xié)作技術(shù)(collaborationtechnologies)能讓一群同事之間進(jìn)行通信就好像開電話會議一樣,這一技術(shù)已越來越令人感興趣了。為了合作得高效,互聯(lián)網(wǎng)需要一種機(jī)制,這種機(jī)制允許創(chuàng)建組和改變組,并且提供一種方法使每個包能傳一份副本到指定組中的每位成員。除了使組中每個成員均能收到包的一個副本,一些應(yīng)用還使用組來處理負(fù)載的分配。也就是說,某種服務(wù)存在多個同樣的副本。一個包發(fā)給一個組時

43、,將會被路由到離發(fā)送方最近的一個服務(wù)上去。因而,新版本的IP需要包含能進(jìn)行以上尋址和路由的機(jī)制。名稱與版本號當(dāng)研究人員開始新版IP的工作時,需要為這項工作起一個臨時的名稱。借用了一個流行的電視劇,說他們正從事于IP再造(IP-TheNextGeneration)工作,在很多早期的報告中簡稱IPng。不幸的是,其他人也制訂了很多競爭性的計劃,也叫IPng,這一名稱也就顯得非常含糊。當(dāng)這一個特定的協(xié)議被真正定義時,工作組需要將此協(xié)議與所有其他計劃區(qū)分開來,他們決定在最終標(biāo)準(zhǔn)化的協(xié)議頭上加入一個正式的版本號。事實上正是這個版本號令人感到奇怪,因為當(dāng)前的IP版本號是4,大部分人希望下一正式的IP版本號

44、是5。然而,版本號5早已被指定用于一個叫ST的實驗性協(xié)議。因此,IP的新版本就將6作為它的正式版本號,這一協(xié)議也就被稱作IPv6。(為了與當(dāng)前的IP協(xié)議加以區(qū)別,當(dāng)前的協(xié)議叫做IPv4。)IPv6特性IPv6保留了IPv4的很多非常成功的特征。如IPv4、IPv6都是無連接的一每一個數(shù)據(jù)報都含有目的地址,每一數(shù)據(jù)報獨(dú)立地被路由。就像IPv4樣IPv6的數(shù)據(jù)報頭部也含有用于標(biāo)識一個數(shù)據(jù)報被丟棄前已經(jīng)過的最大站數(shù)的域。另外,IPv6保留了IPv4可選項中的大部分通用機(jī)制。盡管保留了當(dāng)前版本的基本概念,IPv6仍然修改了所有的細(xì)節(jié)。例如,IPv6使用更大的地址和一個全新的數(shù)據(jù)報頭部格式。另外,IPv

45、6使用一系列的定長的頭部去處理可選信息,而不像當(dāng)前版本那樣只使用一種含有變長的可選項的頭部。IPv6中的新加特征主要可分為以下五類:地址尺寸(AddressSize)。每個IPv6地址含128位,代替了原來的32位,這一下地址空間大得足以適應(yīng)好幾十年的全球Internet的發(fā)展。頭部格式(HeaderFormat)。IPv6的數(shù)據(jù)報頭部與IPv4的完全不一樣,IPv4頭部的每一個域幾乎都變了,或被替代掉了。擴(kuò)展頭部(ExtensionHeader)。不像IPv4只使用一種頭部格式,IPv6將信息放于分離的頭部之中。一個IPv6的數(shù)據(jù)報這樣組成:IPv6的基本頭部,后跟零個或多個擴(kuò)展頭部,再后跟

46、數(shù)據(jù)。對音頻和視頻的支持(Supportforaudioandvideo)oIPv6含有這樣一種機(jī)制,發(fā)送方與接收方能夠通過底層網(wǎng)絡(luò)建立一條高質(zhì)量的路徑,并將數(shù)據(jù)報與這一路徑聯(lián)系起來。雖然這種機(jī)制用于需要較高性能保證的音頻和視頻應(yīng)用,它也可用于將數(shù)據(jù)報與低成本路徑聯(lián)結(jié)可擴(kuò)展的協(xié)議(ExtensibleProtocol)oIPv6并不像IPv4那樣規(guī)定了所有可能的協(xié)議特征。相反,設(shè)計者們提供了一種方案,使得發(fā)送方能為一個數(shù)據(jù)報增加另外的信息。擴(kuò)展方案使得IPv6比IPv4更靈活,意味著隨時能在設(shè)計中增加所需的新特征。IPv6數(shù)據(jù)報格式如圖20-1所示。一個IPv6數(shù)據(jù)報開始于一個基本頭部(bas

47、eheader),后跟零個或多個擴(kuò)展頭部(extensionheader),再后跟數(shù)據(jù)??蛇x基本頭部擴(kuò)展頭部14V擴(kuò)展頭部N數(shù)據(jù)區(qū)圖個IP詁數(shù)據(jù)報的通用形式擴(kuò)展頭部是可選的-個最小的數(shù)據(jù)報只含有基本頭部和數(shù)據(jù)區(qū)盡管圖中指明了數(shù)據(jù)報的通用格式,但圖中的各塊并不是按比例畫的。事實上,一些擴(kuò)展頭部要比基本頭部還大。而且,在很多數(shù)據(jù)報中,數(shù)據(jù)區(qū)的尺寸比頭部的尺寸要大得多。20.7IPv6基本頭部格式盡管IPv6的基本頭部是IPv4的兩倍大,但包含的信息卻比IPv4的少,圖20-2畫出了其格式。圖IPv6的基本頭部格式。頭部包含的域比IPv4.頭部的域有所減少如圖所示,頭部里的大部分空間用在標(biāo)識發(fā)送方和

48、接收方。就像IPv4一樣,源地址(SOURCEADDRESS)域標(biāo)識發(fā)送方,目的地址(DESTINATIONADDRESS)域標(biāo)識接收方。每個地址占用16個字節(jié),四倍于一個IPv4的地址。除了源和目的地址,基本頭部還包含了其他五個域。版本(VERS)域指明協(xié)議是第6版本。優(yōu)先級域指明路由的優(yōu)先級別。負(fù)荷長度(PAYLOADLENGTH)域?qū)?yīng)于IPv4中的數(shù)據(jù)報長度域,但與IPv4不同的是,負(fù)荷長度只指攜帶數(shù)據(jù)的尺寸(即負(fù)荷),頭部長度不包括在內(nèi)。站限制(HOPLIMIT)域?qū)?yīng)于IPv4中的生存時間(TIME-TO-LIVE)域,IPv6對站限制作了非常嚴(yán)格的解釋在數(shù)據(jù)報到達(dá)其目的地之前,站

49、限制已計數(shù)到了零,則數(shù)據(jù)報被丟棄。頭部的其他域需要仔細(xì)解釋一下。流標(biāo)記(FLOWLABEL)域是為了那些需要性能保證的新應(yīng)用而準(zhǔn)備。這一標(biāo)記能將數(shù)據(jù)報與一個特定的底層網(wǎng)絡(luò)路徑聯(lián)系起來。標(biāo)記分為兩部分:一部分用于規(guī)定一個通信量類別(trafficclass),另一部分用于定義一條特定的路徑。通信量類別指定了數(shù)據(jù)報傳輸所需的通用特性。例如,為了發(fā)送間歇的數(shù)據(jù)流(如擊鍵和鼠標(biāo)移動),我們可能指定一個低延遲的通信量類別。在互聯(lián)網(wǎng)上發(fā)送實時音頻時,發(fā)送方可能要求底層網(wǎng)絡(luò)硬件建立一條延遲小于100毫秒的路徑,當(dāng)這一條路徑建立之后,網(wǎng)絡(luò)系統(tǒng)返回一個路徑標(biāo)記,發(fā)送方將這一標(biāo)記放在每一個沿此路徑發(fā)送的數(shù)據(jù)報中。

50、路由器也使用流標(biāo)記域中的這一標(biāo)記來將數(shù)據(jù)報送入預(yù)先安排的路徑中去。下一頭部(NEXTHEADER)域用于指定基本頭部后面的信息類型,例如,如果數(shù)據(jù)報含有一個擴(kuò)展頭部,則下一頭部域指明擴(kuò)展頭部的類型,如果沒有其他擴(kuò)展頭部,下一頭部域指明數(shù)據(jù)報中的攜帶的數(shù)據(jù)類型。圖20-3說明了這一概念。20.8IPv6怎樣處理多重頭部由于IPv6標(biāo)準(zhǔn)為每種可能的頭部類型都規(guī)定了一個惟一的標(biāo)識值,因此,對下一頭部域的解釋不可能搞混。接收方用每個頭部的下一頭部域來確定頭部后面跟的是什么。如果域中的值對應(yīng)于數(shù)據(jù)類型,接收方將數(shù)據(jù)報傳給處理數(shù)據(jù)的軟件模塊;如果域中的值對應(yīng)于另一個頭部,IP軟件負(fù)責(zé)解釋其內(nèi)容。一旦IP軟

51、件處理完一個頭部,它將利用下一頭部域來確定后面要處理的是數(shù)據(jù)還是另一個頭部。IPv6軟件怎樣知道一個特定的頭部在哪兒結(jié)束以及下一項又從哪兒開始呢?某些類型的頭部是有固定尺寸的。例如,一個基本頭部長度為40字節(jié),而為了轉(zhuǎn)向基本頭部后面的那一項,IPv6軟件僅僅在基本頭部起始地址上加40就行了。某些擴(kuò)展頭部并沒有固定的尺寸,在這樣的情況下,頭部必須含有足夠的信息來讓IPv6知道頭部在哪兒結(jié)束。例如,圖20-4列出了一個IPv6可選項頭部(optionsheader)的一般形式,這種頭部攜帶的信息與IPv4數(shù)據(jù)報中的可選項類似。081631下二實部|頭部長度|一個或多個可遙項圖204IPv6可選項擴(kuò)

52、展頭部=不同的數(shù)據(jù)報會有不同的可選項頭部尺寸,因此,頭部長度域會指出可選項頭部的精確長度可選項擴(kuò)展頭部的圖例說明了IPv6處理變長頭部的一種方法。當(dāng)構(gòu)造一個數(shù)據(jù)報時,發(fā)送方將可選項頭部的長度放在頭部長度(HEADERLEN)域中。當(dāng)接收方碰到一個可選項擴(kuò)展頭部,就利用頭部長度域來確定下一項的位置,用下一頭部域確定下一項的類型。20.9分段、重組和路徑MTU盡管IPv6分段類似IPv4分段,細(xì)節(jié)卻不一樣。像IPv4一樣,原數(shù)據(jù)報的一個前綴復(fù)制到每個段中,負(fù)荷長度修改成段長度。不像IPv4的是,IPv6將不將包含分段信息的域放在基本頭部,而是放在一種單獨(dú)的擴(kuò)展頭部中,該頭部的存在就表示該數(shù)據(jù)報是一

53、個段。圖20-5說明了IPv6的分段。如圖所示,每一段都比原數(shù)據(jù)報小。就像IPv4一樣,段尺寸被選為數(shù)據(jù)報要去的底層網(wǎng)絡(luò)的最大傳輸單元(MTU)的尺寸。當(dāng)然,最后一段往往比其他的小,因為它包含的是原數(shù)據(jù)報按MTU尺寸分割后剩下的部分。不可分段部分可分段鄒分(包括頭部和數(shù)擱IPv6中的分段與IPv4中的分段有很大不同。在IPv4中,路由器負(fù)責(zé)執(zhí)行分段任務(wù)。但在IPv6中,發(fā)送數(shù)據(jù)報的主機(jī)負(fù)責(zé)分段,即期望主機(jī)選擇一個數(shù)據(jù)報尺寸使以后不需要再分段,路徑上的路由器收到大數(shù)據(jù)報時就不再對數(shù)據(jù)報進(jìn)行分段。不可分段部分段1的頭部段1b)頭部不可分段部分段3的頭部段3|d)圖2S5IPv6的分段脈數(shù)據(jù)的可分段

54、部分a)被放入各段的負(fù)荷區(qū)b)、c)和心每一段以不可分段部分和一個分段擴(kuò)展頭部的一個副本開始一臺主機(jī)怎樣挑選數(shù)據(jù)報的尺寸來避免分段呢?主機(jī)顯然必須了解去往目的地路徑上的每一網(wǎng)絡(luò)的MTU,以便挑選一個數(shù)據(jù)報尺寸去適應(yīng)最小的一個MTU。從源到目的地路徑上的最小的MTU叫路徑MTU(pathMTU),了解路徑MTU的過程叫發(fā)現(xiàn)路徑MTU(pathMTUdiscovery)。通常,發(fā)現(xiàn)路徑MTU是一個不斷重復(fù)的過程:一臺主機(jī)發(fā)送一系列不同尺寸的數(shù)據(jù)報,看看它們能否無錯到達(dá)目的地(第21章討論IPv4使用的出錯報告機(jī)制,IPv6包含一個類似的差錯報告機(jī)制)。一旦一個數(shù)據(jù)報足夠小,能穿過網(wǎng)絡(luò)而不被分段,則

55、主機(jī)就找到了一個等于路徑MTU的數(shù)據(jù)報尺寸。20.10多重頭部的目的為什么IPv6要使用獨(dú)立的擴(kuò)展頭部呢?有兩個原因:經(jīng)濟(jì)性和擴(kuò)展性。經(jīng)濟(jì)性很容易理解:將數(shù)據(jù)報的功能分為獨(dú)立的頭部是很經(jīng)濟(jì)的,因為可以節(jié)省空間。為了理解這一點(diǎn),我們要意識到盡管IPv6協(xié)議包含很多功能,設(shè)計者希望一個數(shù)據(jù)報只使用很小的一個子集。利用獨(dú)立的頭部,IPv6就能設(shè)計很多的特征,而無須要求每一個數(shù)據(jù)報頭部都為每一特征至少保留一個域。例如,盡管很多IPv4數(shù)據(jù)報沒被分段,但I(xiàn)Pv4的頭部中仍有用于保存分段信息的域。相反,除非數(shù)據(jù)報被分段,否則IPv6的頭部并沒有為分段浪費(fèi)多余的空間。由于大部分?jǐn)?shù)據(jù)報只需要很少的頭部,避免不

56、必要的頭部域能節(jié)省可觀的空間。另外,更小的數(shù)據(jù)報在傳遞過程中花的時間也少,因此,減小數(shù)據(jù)報尺寸也減少了帶寬的要求。為了理解擴(kuò)展性,考慮為協(xié)議增加一個新的特征。像IPv4那樣的使用定長頭部格式的協(xié)議就要完全改變必須重新設(shè)計頭部以安排支持新特征的域。然而在IPv6中,已存在的協(xié)議頭部可以保持不變,只是定義了一種新的下一頭部(NEXTHEADER)類型和一個新的頭部格式。將新的功能放入一個新的頭部的主要優(yōu)點(diǎn)在于:改變因特網(wǎng)中所有計算機(jī)之前可以對這一特征進(jìn)行實驗。例如,假設(shè)兩臺計算機(jī)的所有者希望測試一種新的數(shù)據(jù)報封裝技術(shù),則兩臺計算機(jī)必須在一種實驗性的封裝頭部的細(xì)節(jié)上達(dá)成一致。發(fā)送方將新的頭部加入一個

57、數(shù)據(jù)報,接收方解釋收到的數(shù)據(jù)報中的頭部。只要新頭部出現(xiàn)在用于路由的頭部之后,互聯(lián)網(wǎng)中的路由器就會在不理解這一實驗頭部的基礎(chǔ)上照傳無誤(如果實驗性的頭部被誤放在路由頭部之前,路由器會丟棄這一數(shù)據(jù)報)。一旦一個實驗中的特征被證明真正有用,它就能夠并入標(biāo)準(zhǔn)之中。20.11IPv6編址就像IPv4一樣,IPv6為計算機(jī)和物理網(wǎng)絡(luò)之間的每一連接指定了一個惟一的地址。因而,如果一臺計算機(jī)(例如,路由器)連接著三個物理網(wǎng)絡(luò),該計算機(jī)就被指定了三個地址。同IPv4一樣,IPv6將每一個這樣的地址分成一個前綴和一個后綴,前綴指明一個網(wǎng)絡(luò),后綴指明網(wǎng)上的某臺特定的計算機(jī)。盡管采用了同樣的方法用于指定計算機(jī)地址,I

58、Pv6編址與IPv4編址仍有很多不同。首先,所有的地址細(xì)節(jié)都不一樣。比如,地址沒有定義類,前綴和后綴之間的邊界可在地址范圍內(nèi)的任何地方,而且不能從地址本身單獨(dú)確定。因此,每個地址(例如路由表中的)都有一個相應(yīng)的前綴長度(prefixlength),以便軟件知道哪里是前綴的終點(diǎn)。其次,IPv6定義了一套與IPv4的特殊地址完全不同的特殊地址。特別是,IPv6并沒有引入直接廣播地址。IPv6地址可分為以下三種基本類型:單播(unicast)地址對應(yīng)于一臺單獨(dú)的計算機(jī),一個送往這種地址的數(shù)據(jù)報沿著一條最近的路徑被路由。組播(multicast)地址對應(yīng)于一組計算機(jī),這些計算機(jī)可能在不同的地點(diǎn);組中的

59、成員關(guān)系在任何時刻都能改變,當(dāng)一個數(shù)據(jù)報發(fā)往這種地址,IPv6向組中的每一成員傳遞數(shù)據(jù)報的一個副本。隨機(jī)播(anycast)地址對應(yīng)于一組計算機(jī),這些計算機(jī)擁有相同的地址前綴(在同一個點(diǎn))。一個送往這種地址的數(shù)據(jù)報,會以一條最短路徑被路由,且只送往其中的一臺計算機(jī)(如,離發(fā)送方最近的計算機(jī))。隨機(jī)編址原先被稱為簇(cluster)編址。這種編址的動機(jī)來自于一種對重復(fù)服務(wù)的要求。例如,有一種合作關(guān)系是指多臺計算機(jī)同時提供網(wǎng)上的同一種服務(wù),于是就為這些計算機(jī)指定一個隨機(jī)地址。當(dāng)一個用戶給這一隨機(jī)地址發(fā)來一個數(shù)據(jù)報IPv6就將數(shù)據(jù)報發(fā)往組(即簇)中的某一臺計算機(jī)。如果另一個地址的用戶也給隨機(jī)地址發(fā)來

60、一個數(shù)據(jù)報,IPv6可能選擇了組中的另一臺計算機(jī),將數(shù)據(jù)報傳給它。這樣,兩臺計算機(jī)就能同時處理外來的請求。20.12IPv6冒分十六進(jìn)制表示法盡管128位的地址滿足了因特網(wǎng)的發(fā)展,但寫這樣長的數(shù)字卻是非常麻煩的,例如,用點(diǎn)分十進(jìn)制表示法寫一個128位的數(shù)字:105.220.136.100.255.255.255.255.0.0.18.128.140.10.255.255為了減少寫一個地址所用的字符個數(shù),IPv6的設(shè)計者建議使用一種更緊湊的語法形式,叫冒分十六進(jìn)制表示法(colonhexadecimalnotation)(這一名字通常簡寫為colonhex)。其中,每16位為一組,寫成十六進(jìn)制數(shù)

溫馨提示

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

評論

0/150

提交評論