《Tcp/Ip協(xié)議族》筆記
網(wǎng)際協(xié)議版本4(IPv4)
IP分組由一個(gè)基本首部和一些選項(xiàng)構(gòu)成,這些選項(xiàng)有時(shí)用于促進(jìn)和控制分組的交付。
目標(biāo):
- 解釋IP協(xié)議背后的總體思想,并說明IP與Tcp/Ip協(xié)議族中其他協(xié)議之間的位置關(guān)系;
- 說明IPv4數(shù)據(jù)報(bào)的一般格式,并列出首部中各個(gè)字段;
- 討論數(shù)據(jù)報(bào)的分片和重裝,以及如何從數(shù)據(jù)報(bào)的分片中恢復(fù)原始的數(shù)據(jù)報(bào);
- 討論IPv4數(shù)據(jù)報(bào)中可能存在的一些選項(xiàng)以及它們的應(yīng)用;
- 說明發(fā)送方站點(diǎn)如何為IPv4數(shù)據(jù)報(bào)的首部計(jì)算校驗(yàn)和,以及接受方站點(diǎn)有時(shí)如何檢查這個(gè)檢驗(yàn)和;
- 討論IP在ATM上運(yùn)行,并與建立局域網(wǎng)或點(diǎn)對(duì)點(diǎn)廣域網(wǎng)之上的IP進(jìn)行比較;
- 描述一個(gè)簡(jiǎn)化版本的IP軟件包,并給出某些模塊的偽碼。
引言
網(wǎng)際協(xié)議(Internet Protocol,IP)是TCP/IP協(xié)議族在網(wǎng)絡(luò)層使用的傳輸機(jī)制。

IP是一種不可靠的無連接數(shù)據(jù)報(bào)協(xié)議——盡最大努力交付(best-effort delivery)的服務(wù)。盡最大努力是IP分組有可能損壞、丟失、失序或延遲到達(dá),并且可能會(huì)給網(wǎng)絡(luò)帶來擁塞。IP依靠更高層的協(xié)議來解決所有這些問題。
如果可靠性很重要,那么IP就必須與可靠的協(xié)議(如TCP)配合起來使用。
數(shù)據(jù)報(bào)
網(wǎng)絡(luò)(互聯(lián)網(wǎng))層的分組稱為數(shù)據(jù)報(bào)(datagram)。數(shù)據(jù)報(bào)是一個(gè)可變長度的分組,它由兩部分組成:首部和數(shù)據(jù)。
首部長度由 20字節(jié)基本首部+0-40字節(jié)可選部分構(gòu)成,包含有關(guān)路由選擇和交付的重要信息。
習(xí)慣上,在TCP/IP中都是以4字節(jié)為一段來表示首部。

版本(VER):
這個(gè)4位字段定義了IP協(xié)議的版本;
如果機(jī)器使用其他版本的IP,那么這個(gè)數(shù)據(jù)報(bào)就會(huì)被丟棄,而不是錯(cuò)誤地進(jìn)行解釋。首部長度(HLEN):
這個(gè)4位字段定義了數(shù)據(jù)報(bào)首部的總長度,以4字節(jié)(Byte)為單位計(jì)算;
可變首部長度,5(0101)x4=20Byte — 15(1111)x4=60Byte。服務(wù)類型(TOS):
type of service,它指明了應(yīng)當(dāng)如何處理數(shù)據(jù)報(bào);
它定義了一組區(qū)分服務(wù)(differentiated services)。

-
總長度:
這個(gè)16位字段定義了以字節(jié)為單位的數(shù)據(jù)報(bào)總長度(首部+數(shù)據(jù)),所以數(shù)據(jù)報(bào)長度限制在勒65535($2^16-1$)Byte;
雖然65535字節(jié)的長度看起來好像很長,但是,隨著底層技術(shù)使得更大的吞吐量(高帶寬)成為可能,IP數(shù)據(jù)報(bào)的長度在不久的將來可能會(huì)大大增加;
某些物理網(wǎng)絡(luò)不能把65535畢節(jié)的數(shù)據(jù)報(bào)封裝成它們的幀,要以需要對(duì)數(shù)據(jù)報(bào)進(jìn)行分片;
但有些情況下,因?yàn)閿?shù)據(jù)報(bào)長度很小,需要對(duì)封裝的幀附加一些填充才行。

標(biāo)識(shí):
此16位字段用于分片。標(biāo)志:
此3位字段用于分片。分片偏移:
此13位字段用于分片。生存時(shí)間(TTL):
此8位字段表示,數(shù)據(jù)報(bào)在互聯(lián)網(wǎng)中是有生存時(shí)間限制的;
此字段之所以必要,是因?yàn)橐蛱鼐W(wǎng)中路由表很可能會(huì)損壞。一個(gè)數(shù)據(jù)報(bào)可能在兩個(gè)或多個(gè)路由器之間逗留了很長時(shí)間,也沒能夠交付到目的主機(jī);
這個(gè)字段的另一個(gè)用途就是源主機(jī)想故意限制這個(gè)分組的行程。協(xié)議(Protocol):
此8位字段定義了使用此IP服務(wù)的高層協(xié)議;
有許多高層協(xié)議(如TCP,UDP,ICMP,IGMP等)的數(shù)據(jù)都能被封裝到IP數(shù)據(jù)報(bào)中;
這個(gè)字段指明了IP數(shù)據(jù)報(bào)必須交付給哪個(gè)最終目的協(xié)議。

| 值 | 協(xié)議 |
|---|---|
| 1 | ICMP |
| 2 | IGMP |
| 6 | TCP |
| 17 | UDP |
| 89 | OSPF |
首部檢驗(yàn)和:
源地址:
目的地址:
分片
數(shù)據(jù)報(bào)可以穿越不同的網(wǎng)絡(luò)。每個(gè)數(shù)據(jù)報(bào)都會(huì)從收到的數(shù)據(jù)幀中拆解出IP數(shù)據(jù)報(bào),并對(duì)它進(jìn)行處理,然后再封裝成另一個(gè)幀;
接收到的幀格式與長度取決于這個(gè)幀剛剛經(jīng)過的物理網(wǎng)絡(luò)所使用的協(xié)議,而發(fā)送出去的幀格式與長度則取決于這個(gè)幀將要經(jīng)過的物理網(wǎng)絡(luò)所使用的協(xié)議。
例如,某臺(tái)路由器將一個(gè)以太網(wǎng)連接到一個(gè)廣域網(wǎng)。
那么它收到的幀是以太網(wǎng)格式的,而發(fā)送的幀是廣域網(wǎng)格式的。
最大傳輸單元(MTU)
每個(gè)數(shù)據(jù)鏈路層協(xié)議都有自己的幀格式,在這個(gè)格式中有一個(gè)字段是"數(shù)據(jù)字段最大長度"。

對(duì)于不同的物理網(wǎng)絡(luò)協(xié)議,MTU的值是不同的。
例如,以太網(wǎng)局域網(wǎng)的MTU是1500字節(jié),F(xiàn)DDI局域網(wǎng)的MTU是4352字節(jié),而PPP是296字節(jié)。
為了使IP協(xié)議與物理網(wǎng)絡(luò)無關(guān),協(xié)議設(shè)計(jì)者們決定讓IP數(shù)據(jù)報(bào)的最大長度等于65535字節(jié)。如果我們使用的協(xié)議的MTU正好等于這個(gè)數(shù)值,那么傳輸效率會(huì)很高;
但是對(duì)于其他物理網(wǎng)絡(luò),就要分割數(shù)據(jù)報(bào),使它們能夠通過這些網(wǎng)絡(luò),這稱為分片(fragmentation)。
當(dāng)數(shù)據(jù)報(bào)被分片時(shí),每一個(gè)數(shù)據(jù)報(bào)都有自己的首部,其中大部分的字段是重復(fù)的,但有些是變化的;
如果已經(jīng)分片的數(shù)據(jù)報(bào)遇到具有更小MTU的網(wǎng)絡(luò),那么這些已經(jīng)分片的數(shù)據(jù)報(bào)還可以再進(jìn)行分片;
換言之,數(shù)據(jù)報(bào)在到達(dá)最后終點(diǎn)之前可以經(jīng)過多次分片。
數(shù)據(jù)報(bào)可以被源主機(jī)或途中任何路由器分片,但數(shù)據(jù)報(bào)的重裝只能在目的主機(jī)上進(jìn)行,因?yàn)槊恳粋€(gè)分片都變成了獨(dú)立的數(shù)據(jù)報(bào);
一方面,分片的數(shù)據(jù)報(bào)可以各走不同的路由,我們永遠(yuǎn)無法控制或保證分片的數(shù)據(jù)報(bào)應(yīng)當(dāng)走哪一條路徑;
另一方面,屬于同一個(gè)數(shù)據(jù)報(bào)的所有數(shù)據(jù)報(bào)片最終是會(huì)到達(dá)它們的目的主機(jī);
所以,從邏輯上講,應(yīng)當(dāng)在最后的終點(diǎn)進(jìn)行重裝。
另外還有一個(gè)更有力的反對(duì)在傳輸期間進(jìn)行重裝的理由,那就是這樣做會(huì)嚴(yán)重影響效率。
當(dāng)數(shù)據(jù)報(bào)被分片時(shí),首部中一些必要的部分必須被復(fù)制到所有的分片中,其余的各字段必須被復(fù)制;
對(duì)數(shù)據(jù)報(bào)進(jìn)行分片的主機(jī)或路由器必須改變?nèi)齻€(gè)字段的值:標(biāo)志,分片偏移,總長度;
不管是否進(jìn)行分片,校驗(yàn)和的值總是要重新計(jì)算的;
只有數(shù)據(jù)報(bào)中的數(shù)據(jù)是分片的。
與分片有關(guān)的字段
與一個(gè)數(shù)據(jù)報(bào)的分片與重裝有關(guān)的字段是:標(biāo)識(shí)、標(biāo)志和分片偏移。
標(biāo)識(shí):
此16位字段標(biāo)志了從源主機(jī)發(fā)出的一個(gè)數(shù)據(jù)報(bào);
在數(shù)據(jù)報(bào)分片時(shí),標(biāo)識(shí)字段的值要復(fù)制到所有的分區(qū)中。換言之,所有的分片中具有相同的標(biāo)識(shí)號(hào);
這些標(biāo)識(shí)號(hào)在終點(diǎn)重裝數(shù)據(jù)報(bào)時(shí)很有用,終點(diǎn)知道所有具有相同標(biāo)識(shí)號(hào)的分片必須被組裝成一個(gè)數(shù)據(jù)報(bào)。標(biāo)志:
此3位字段,第一位保留,第二位是“不分片”,第三位是“還有分片”。

-
分片偏移:
此13位字段表示分片在整個(gè)數(shù)據(jù)報(bào)中的相對(duì)位置;
這是數(shù)據(jù)在原始數(shù)據(jù)報(bào)中的偏移量,以8字節(jié)為度量單位;
要記住偏移量是以8字節(jié)為單位,除了最后一個(gè)分片外,所有分片的標(biāo)志字段中的“還有分片”為均應(yīng)為1.


即使各個(gè)分片采取不同的路徑并失序到達(dá),最終的目的主機(jī)也能夠用收到的分片(假設(shè)沒有丟失)組裝成原始的數(shù)據(jù)報(bào)。
選項(xiàng)
選項(xiàng)對(duì)于數(shù)據(jù)報(bào)來說并不是必需的,但它可用于網(wǎng)絡(luò)的測(cè)試和排錯(cuò);
雖然選項(xiàng)并非IP首部的必要項(xiàng)目,但對(duì)選項(xiàng)的處理確是IP軟件的必要部分。
格式
選項(xiàng)的組成是:類型字段(1字節(jié))、長度字段(1字節(jié))和值字段(可變長度)。這三個(gè)字段常被稱為 TLV(type-length-value)。

類型
類型字段(type field)長度為8位,包括了三個(gè)子字段:復(fù)制、類別和編號(hào)。
- 復(fù)制, 這個(gè)1位子字段控制選項(xiàng)在分片中的出現(xiàn);
- 類別, 這個(gè)2位子字段定義了該選項(xiàng)的一般用途;
- 編號(hào), 這個(gè)5位子字段定義了選項(xiàng)的類型。
長度
長度字段(length field)定義選項(xiàng)的總長度,包括類型字段和長度字段本身。這個(gè)字段并不是在所有類型的選項(xiàng)中都會(huì)出現(xiàn)。
值
值字段(value field)包含的是某些特定選項(xiàng)所需的數(shù)據(jù)。這個(gè)字段并不是在所有類型的選項(xiàng)中都會(huì)出現(xiàn)。
選項(xiàng)類型
目前僅使用了六種選項(xiàng):
- 兩種是單字節(jié)選項(xiàng),它們不需要長度字段和值字段,因?yàn)轭愋妥侄蝿偤?個(gè)字節(jié);
- 四種是多字節(jié)選項(xiàng),它們需要長度字段和值字段。

-
無操作選項(xiàng)
無操作選項(xiàng)(no-operation option),用作選項(xiàng)和選項(xiàng)之間的填充符。
無操作選型
-
選項(xiàng)結(jié)束項(xiàng)
選項(xiàng)結(jié)束項(xiàng)(end-of-option option),用于選項(xiàng)字段結(jié)束時(shí)的填充。它只能用于最后一個(gè)選項(xiàng),且只能使用一次。
選項(xiàng)結(jié)束項(xiàng)
-
記錄路由選項(xiàng)
記錄路由選項(xiàng)(record-route option),用來記錄處理數(shù)據(jù)報(bào)的因特網(wǎng)路由器。
記錄路由選項(xiàng)
-
嚴(yán)格源路由選項(xiàng)
嚴(yán)格源路由選項(xiàng)(strict-source-route option),被源點(diǎn)用來預(yù)先指定數(shù)據(jù)報(bào)在因特網(wǎng)中傳送時(shí)的路由。
嚴(yán)格源路由選項(xiàng)
-
不嚴(yán)格源路由選項(xiàng)
不嚴(yán)格的源路由選項(xiàng)(loose-source-route option),與嚴(yán)格路由相似,但條件寬松一些。
不嚴(yán)格源路由選項(xiàng)
-
時(shí)間戳
時(shí)間戳選項(xiàng)(timestamp option),用來記錄路由器處理數(shù)據(jù)報(bào)的時(shí)間。時(shí)間是從午夜開始以毫秒計(jì)的全球通用時(shí)間。
時(shí)間戳選項(xiàng)
校驗(yàn)和
絕大多數(shù)TCP/IP協(xié)議采用的差錯(cuò)檢測(cè)方法稱為 檢驗(yàn)和(checksum)。
校驗(yàn)和能夠防止分組在傳輸期間出現(xiàn)的損壞,校驗(yàn)和是附加在分組上的冗余信息。
發(fā)送端計(jì)算出校驗(yàn)和,并把得到的校驗(yàn)和與分組一起發(fā)送出去;接收端對(duì)整個(gè)分組重復(fù)同樣的計(jì)算。
若得到正確結(jié)果則接收此分組,否則丟棄。
在發(fā)送端計(jì)算校驗(yàn)和
發(fā)送端按以下步驟產(chǎn)生檢驗(yàn)和:
- 把分組劃分成k段,每段的長度都是 n 位;
- 用反碼算術(shù)運(yùn)算把這些所有段相加;
- 把最終結(jié)果取反碼就得到檢驗(yàn)和。
在接收端計(jì)算檢驗(yàn)和
接收端檢驗(yàn)步驟:
- 把收到的分組劃分為k段;
- 把所有段相加,取反碼;
- 若為0,則接收分組。否則丟棄分組。

假設(shè)發(fā)送端將所有段相加后得到的數(shù)為T,當(dāng)我們用反碼算術(shù)運(yùn)算把這個(gè)數(shù)取反碼時(shí),就得到了這個(gè)數(shù)的負(fù)值。這表示,若所有段之和為T,則校驗(yàn)和就是-T。
當(dāng)接收端收到這個(gè)分組時(shí),把所有段相加。這實(shí)際上就是把T與-T相加,二進(jìn)制反碼為-0,再取反碼為0。

IP分組中的校驗(yàn)和
在IP分組中,首先把“校驗(yàn)和”字段值置為0。然后把整個(gè)首部劃分為16位(ip首部校驗(yàn)和16位)的段,再將各段相加。把結(jié)果(和)取反碼,把插入到ip-header的校驗(yàn)和字段中。
IP分組中的校驗(yàn)和為首部校驗(yàn)和,不包括數(shù)據(jù)。


IP在ATM上運(yùn)行
在前面,我們都假設(shè)支持IP數(shù)據(jù)報(bào)在其上傳送的底層網(wǎng)絡(luò)是局域網(wǎng)或點(diǎn)對(duì)點(diǎn)廣域網(wǎng)。
我們希望了解IP數(shù)據(jù)報(bào)如何通過像ATM這樣的交換廣域網(wǎng)來傳送。
在ATM交換廣域網(wǎng)中,IP分組被封裝在信元中(不止一個(gè)),對(duì)于一個(gè)設(shè)備的物理地址,ATM網(wǎng)絡(luò)有它自己的定義。在IP地址和物理地址之間的綁定是通過一個(gè)稱為ATMARP的協(xié)議獲得的。
ATM廣域網(wǎng)
作為信元交換網(wǎng)絡(luò)的ATM可以稱為IP數(shù)據(jù)報(bào)的高速公路。

AAL層
能被因特網(wǎng)使用的AAL只有AAL5,有時(shí)它稱為 簡(jiǎn)單有效的適配層(simple and efficient adaptation layer,SEAL)。
AAL5假設(shè)從IP數(shù)據(jù)報(bào)中創(chuàng)建出來的所有信元都屬于同一個(gè)報(bào)文。因此,AAL5不提供地址、序列或其它的首部信息。
實(shí)際上,只有一些填充和一個(gè)四字段的尾部被附加在IP分組上。
IP協(xié)議使用的AAL層是AAL5,使用AAL5效率更高。
信元的路由選擇
ATM網(wǎng)絡(luò)在兩個(gè)路由器之間建立一條路由。我們稱這兩個(gè)路由器為 進(jìn)入點(diǎn)(entering-point)路由器 和 離去點(diǎn)(exiting-point)路由器。

地址
把信元從一個(gè)特定的進(jìn)入路由器轉(zhuǎn)發(fā)到一個(gè)特定的離去路由器,需要3種類型的地址:IP地址、物理地址和虛電路標(biāo)識(shí)符。
IP地址
IP地址在IP層指明了特定的路由器,但是它在ATM網(wǎng)絡(luò)中沒有任何作用。物理地址
每個(gè)連接到ATM網(wǎng)絡(luò)上的路由器(或其他設(shè)備)都有一個(gè)物理地址。這個(gè)物理地址與ATM網(wǎng)絡(luò)相關(guān),但和因特網(wǎng)沒什么關(guān)系。
ATM論壇為ATM網(wǎng)絡(luò)定義了20字節(jié)的地址。虛電路標(biāo)識(shí)符
ATM網(wǎng)絡(luò)內(nèi)部的交換機(jī)根據(jù)虛電路標(biāo)識(shí)符(VPI和VCI)來為信元選路,這個(gè)虛電路標(biāo)識(shí)符在數(shù)據(jù)傳送時(shí)使用。
地址綁定
ATM網(wǎng)絡(luò)需要用虛電路標(biāo)識(shí)符為信元選路。在IP數(shù)據(jù)報(bào)中只包含了源IP地址和目的IP地址。必須根據(jù)目的IP地址來判斷其虛電路標(biāo)識(shí)符。
步驟如下:
- 進(jìn)入點(diǎn)路由器收到一個(gè)IP數(shù)據(jù)報(bào)。它用IP數(shù)據(jù)報(bào)的目的地址和自己的路由表來找出下一個(gè)路由器(即離去點(diǎn)路由器)的IP地址;
- 進(jìn)入點(diǎn)路由器使用了一個(gè)稱為ATMARP的協(xié)議服務(wù)找出離去點(diǎn)路由器的物理地址。ATMARP和ARP類似。
- 虛電路標(biāo)識(shí)符被綁定到相應(yīng)的物理地址。

安全性
與整個(gè)因特網(wǎng)一樣,IPv4協(xié)議在誕生之初,因特網(wǎng)上的用戶彼此之間都是互相信任的。IPv4沒有提供任何安全措施。但是,現(xiàn)如今的因特網(wǎng)已不再安全。
安全問題
有三個(gè)安全問題是特別應(yīng)用于IP協(xié)議的:
- 分組竊?。╬acket sniffing)
- 分組篡改(packet modification)
- IP偽裝(IP spoofing)
IPSec
目前我們可以使用一種稱為 IPSec(IP安全性) 的協(xié)議來保護(hù)IP分組不受前面所提到的各種攻擊。
這個(gè)協(xié)議是與IP協(xié)議結(jié)合在一起使用的。
它在兩個(gè)實(shí)體之間創(chuàng)建了一種面向連接的服務(wù),使這兩個(gè)實(shí)體在交換IP分組時(shí)不用擔(dān)心會(huì)受到前面三種攻擊。
IPSec提供四中服務(wù):
- 定義算法和密鑰
- 分組加密
- 數(shù)據(jù)完整行
- 起源鑒別
IP軟件包
將給出一個(gè)假象的IP軟件包的栗子,目的是為了展示本章所討論的各種不同概念之間的相互關(guān)系。

可以認(rèn)為IP軟件包包含了八個(gè)構(gòu)件:首部添加模塊、處理模塊、轉(zhuǎn)發(fā)模塊、分片模塊、重裝模塊、路由表、MTU表和重裝表。
-
首部添加模塊(header-adding module)
首部添加模塊,接收來自高層協(xié)議的數(shù)據(jù)及其目的IP地址。它通過添加IP首部,把數(shù)據(jù)封裝在一個(gè)IP數(shù)據(jù)報(bào)中。
IP_Adding_Module(數(shù)據(jù),目的地址)
{
把數(shù)據(jù)封裝為IP數(shù)據(jù)報(bào)
計(jì)算校驗(yàn)和,并將它插入到校驗(yàn)和字段
把數(shù)據(jù)發(fā)送到相應(yīng)的輸入隊(duì)列
返回
}
-
處理模塊(processing module)
處理模塊是IP軟件包的核心。
IP_Processing_Module(IP數(shù)據(jù)報(bào))
{
從一個(gè)輸入隊(duì)列中取出一個(gè)數(shù)據(jù)報(bào)
if(目的地址與本地地址中的一個(gè)相匹配)
{
把數(shù)據(jù)報(bào)發(fā)送到重裝模塊
返回
}
if(本機(jī)是路由器)
{
TTL-1
}
if(TTL<=0)
{
丟棄這個(gè)數(shù)據(jù)報(bào)
發(fā)送ICMP差錯(cuò)報(bào)文
返回
}
把數(shù)據(jù)報(bào)發(fā)送到轉(zhuǎn)發(fā)模塊
返回
}
-
隊(duì)列(queue)
包括 輸入隊(duì)列(input queues) 和輸出隊(duì)列 。
輸入隊(duì)列,存放的是來自數(shù)據(jù)鏈路層或高層協(xié)議的數(shù)據(jù)報(bào);
輸出隊(duì)列,存放的是將要發(fā)送到數(shù)據(jù)鏈路層或高層協(xié)議的數(shù)據(jù);
處理模塊從輸入隊(duì)列中取出數(shù)據(jù);
分片和重裝模塊則向輸出隊(duì)列中添加數(shù)據(jù)報(bào)。
- 路由表(router table)
-
轉(zhuǎn)發(fā)模塊(forwarding module)
轉(zhuǎn)發(fā)模塊接收來自處理模塊的IP分組,如果分組需要轉(zhuǎn)發(fā),則把分組傳遞給這個(gè)模塊;
轉(zhuǎn)發(fā)模塊找出下一站的IP地址以及發(fā)送該分組的接口號(hào)。然后,轉(zhuǎn)發(fā)模塊把分組連同這些信息一起傳遞給分片模塊。
-
MTU表
分片模塊使用MTU表找出特定接口的 最大傳送單元(MTU),MTU表包含 接口和MTU。
-
分片模塊(fragmentation module)
分片模塊,接收來自轉(zhuǎn)發(fā)模塊的IP數(shù)據(jù)報(bào)。
轉(zhuǎn)發(fā)模塊給出IP數(shù)據(jù)報(bào)、下一站IP地址和接口號(hào)。
IP_Fragmentation_Module(IP數(shù)據(jù)報(bào))
{
提取數(shù)據(jù)報(bào)的長度
if(長度 > 相應(yīng)網(wǎng)絡(luò)的MTU)
{
if(D位 被置為1)#D位 為不分片
{
丟棄這個(gè)數(shù)據(jù)報(bào)
發(fā)送ICMP報(bào)文
返回
}
Else
{
計(jì)算最大長度
把數(shù)據(jù)報(bào)劃分為分片
給每個(gè)分片添加首部
給每個(gè)分片添加需要的選項(xiàng)
發(fā)送分片
返回
}
}
Else
{
發(fā)送這個(gè)數(shù)據(jù)報(bào)
}
返回
}
-
重裝表(reassembly table)
重裝表是重裝模塊在使用;
重裝表有五個(gè)字段:狀態(tài)、源IP、數(shù)據(jù)報(bào)標(biāo)識(shí)、超時(shí)以及分片。
重裝表
狀態(tài)字段的值可以是 FREE 或 IN-USE;
數(shù)據(jù)報(bào)標(biāo)識(shí)是一個(gè)數(shù)字,它唯一地定義了一個(gè)數(shù)據(jù)報(bào)以及該數(shù)據(jù)報(bào)的所有分片;
超時(shí)是一個(gè)預(yù)定義的時(shí)間,在這段時(shí)間內(nèi)所有分片必須到達(dá);
分片字段是執(zhí)行分片鏈表的指針。
-
重裝模塊(reassembly module)
重裝模塊,接收來自處理模塊且已到達(dá)最終目的地的數(shù)據(jù)報(bào)分片。
重裝模塊把為分片的數(shù)據(jù)報(bào)也看成數(shù)據(jù)報(bào)分片,只不過這個(gè)數(shù)據(jù)報(bào)僅有一個(gè)分片。
IP_Reassembly_Module(IP數(shù)據(jù)報(bào))
{
if(分片偏移值為0且M為為0)
{
把數(shù)據(jù)報(bào)發(fā)送到適當(dāng)?shù)年?duì)列
返回
}
查找重裝表中的相應(yīng)表項(xiàng)
if(相應(yīng)表項(xiàng)未找到)
{
創(chuàng)建一個(gè)新的項(xiàng)目
}
在鏈表的適當(dāng)?shù)胤讲迦脒@個(gè)分片
if(所有的分片都已到達(dá))
{
重裝這些分片
把數(shù)據(jù)交付給相應(yīng)的高層協(xié)議
返回
}
Else
{
if(超時(shí))
{
丟棄所有的分片
發(fā)送ICMP差錯(cuò)報(bào)文
}
}
返回
}
小結(jié)
討論IPv4的RFC包括:RFC791、RFC815、RFC894、RFC1122、RFC2474和RFC2475.
重要術(shù)語
盡最大努力交付; 校驗(yàn)和;
碼點(diǎn); 輸出隊(duì)列;
數(shù)據(jù)報(bào); 指針字段;
區(qū)分服務(wù); 優(yōu)先級(jí);
選項(xiàng)結(jié)束選項(xiàng); 處理模塊;
進(jìn)入點(diǎn)路由器; 重裝模塊;
轉(zhuǎn)發(fā)模塊; 重裝表;
分片; 分片偏移;
分片模塊; 記錄路由選項(xiàng);
服務(wù)類型; 嚴(yán)格的源路由選項(xiàng);
首部添加模塊; 生存時(shí)間;
輸入隊(duì)列; 時(shí)間戳選項(xiàng);
網(wǎng)際協(xié)議(IP) ; 長度字段;
類型字段; Traceroute;
不嚴(yán)格的源路由選項(xiàng); 服務(wù)類型(TOS);
最大傳輸單元(MTU); 值類型;
無操作選型;
- IP是不可靠的無連接協(xié)議,負(fù)責(zé)源點(diǎn)到終點(diǎn)的交付。在IP層的分組稱為數(shù)據(jù)報(bào);
- MTU是數(shù)據(jù)鏈路協(xié)議能夠封裝的最大字節(jié)數(shù)。MTU隨著協(xié)議的不同而不同。分片就是把一個(gè)數(shù)據(jù)報(bào)劃分為若干更小的單元,以便能夠適應(yīng)數(shù)據(jù)鏈路層協(xié)議的MTU;
- IP數(shù)據(jù)報(bào)首部包括20字節(jié)的固定部分和最大長度為40字節(jié)的可變選項(xiàng)部分。IP首部中的選項(xiàng)部分用于網(wǎng)絡(luò)測(cè)試和排錯(cuò)。六個(gè)IP選項(xiàng)各有其特定功能;
- IP使用的差錯(cuò)檢測(cè)方法是校驗(yàn)和。但是這個(gè)校驗(yàn)和只覆蓋分組的首部,不管數(shù)據(jù)部分。所以是首部校驗(yàn)和;
- IP在ATM上運(yùn)行使用了ATM網(wǎng)絡(luò)的AAL5層。ATM網(wǎng)絡(luò)在進(jìn)入點(diǎn)路由器和離去點(diǎn)路由器之間建立了一條路由,通過ATMARP,IP分組的下一跳地址能夠被映射為離去點(diǎn)路由器的物理地址;
- IP軟件包由以下構(gòu)件組成:首部添加模塊、處理模塊、轉(zhuǎn)發(fā)模塊、分片模塊、重裝模塊、路由表、MTU表以及重裝表。






