IPv4?分組
IPv4?,即現(xiàn)在普遍使用的IP?協(xié)議?(版本為4)。IP?協(xié)議定義數(shù)據(jù)傳送的基本單元——IP?分組及其確切的數(shù)據(jù)格式?。IP?協(xié)議也包括一套規(guī)則?,指明分組如何處理?、錯(cuò)誤怎樣控制。特別是,IP協(xié)議還包含非可靠投遞的思想?,以及與此關(guān)聯(lián)的分組路由選擇的思想?。
????IPv4?分組的格式
一個(gè)?IP?分組由首部和數(shù)據(jù)兩部分組成?。首部的前一部分是固定長(zhǎng)度的?,共?20?宇節(jié),是所有?IP?分組必須具有的?。在首部固定部分的后面是一些可選字段?,其長(zhǎng)度是可變的,用來提供錯(cuò)誤檢測(cè)及安全等機(jī)制?。IP?數(shù)據(jù)報(bào)的格式如圖所示。
IP 首部的部分重要宇段含義如下 :
1)? 版本????指 IP 協(xié)議的版本 ,目前廣泛使用的版本號(hào)為 4。
2)首部長(zhǎng)度? ? 占4 位。以 32 位為單位,最大值為60字節(jié) (15x4字節(jié))。最常用的首部長(zhǎng)度是 20 字節(jié),此時(shí)不使用任何選項(xiàng)(即可選字段)。
3)總長(zhǎng)度????占 16? 位。指首部和數(shù)據(jù)之和的長(zhǎng)度,單位為字節(jié) ,因此數(shù)據(jù)報(bào)的最大長(zhǎng)度為2^16-1=65535 字節(jié)。以太網(wǎng)幀的最大傳送單元MTU為 1500 字節(jié),因此當(dāng)一個(gè)IP 數(shù)據(jù)報(bào)封裝成幀時(shí) ,數(shù)據(jù)報(bào)的總長(zhǎng)度(首部加數(shù)據(jù)) 一定不能超過下面數(shù)據(jù)鏈路層的 MTU 值。
4) 標(biāo)識(shí)? ? 占 16 位。它是一個(gè)計(jì)數(shù)器 ,每產(chǎn)生一個(gè)數(shù)據(jù)報(bào)就加 1,并賦值給標(biāo)識(shí)字段 。但它并不是 “序號(hào)” ( 因?yàn)镮P是無連接服務(wù))。當(dāng)一個(gè)數(shù)據(jù)報(bào)長(zhǎng)度超過網(wǎng)絡(luò)的 MTU 時(shí),必須分片,此時(shí)每個(gè)數(shù)據(jù)報(bào)片都復(fù)制一次標(biāo)識(shí)號(hào)以便能正確重裝成原來的數(shù)據(jù)報(bào)? 。
5) 標(biāo)志? ? 占3 位 。標(biāo)志字段的最低位為 MF,? MF=1 表示后面還有分片;MF=0 表示最后一個(gè)分片 。標(biāo)志字段中間的一位是 DF,只有當(dāng) DF=0 時(shí)才允許分片。
6)?片偏移? ? 占 13 位。它指出較長(zhǎng)的分組在分片后 ,某片在原分組中的相對(duì)位置 。片偏移以8 個(gè)字節(jié)為偏移單位 ,也即每個(gè)分片的長(zhǎng)度一定是 8 字節(jié) ( 64 位) 的整數(shù)倍。
7) 首部檢驗(yàn)和? ? 占 16 位。IP數(shù)據(jù)報(bào)的首部檢驗(yàn)和只校驗(yàn)分組的首部,而不校驗(yàn)數(shù)據(jù)部分。
8) 生存時(shí)間 TTL? ? 占 8 位。即數(shù)據(jù)報(bào)在網(wǎng)絡(luò)中可通過的路由器數(shù)的最大值 ,標(biāo)識(shí)分組在網(wǎng)絡(luò)中的壽命 ,以確保分組不會(huì)永遠(yuǎn)在網(wǎng)絡(luò)中循環(huán) 。路由器在轉(zhuǎn)發(fā)分組之前 ,先把 TTL 減 1。若 TTL? 被減為 0,則該分組必須丟棄。
9) 協(xié)議????占 8 位。指出此分組攜帶的數(shù)據(jù)是使用何種協(xié)議? ,即分組的數(shù)據(jù)部分應(yīng)交給哪個(gè)傳輸層協(xié)議,如TCP,? UDP 等。其中值為 6 表示 TCP,值為 17 表示 UDP 。
10)源地址宇段? ? 占 4 字節(jié),標(biāo)識(shí)發(fā)送方的IP地址。
11)? 目的地址字段? ? 占 4 字節(jié),標(biāo)識(shí)接收方的IP地址。
IP 數(shù)據(jù)報(bào)分片
一個(gè)鏈路層數(shù)據(jù)報(bào)能承載的最大數(shù)據(jù)量稱為最大傳送單元(MTU ) 。因?yàn)?IP 數(shù)據(jù)報(bào)被封裝在鏈路層數(shù)據(jù)報(bào)中 ,故鏈路層的 MTU 嚴(yán)格地限制著 IP 數(shù)據(jù)報(bào)的長(zhǎng)度 ,而且在IP 數(shù)據(jù)報(bào)的源與目的地路徑上的各段鏈路可能使用不同的鏈路層協(xié)議 ,有不間的 MTU 。例如 ,以太網(wǎng)的 MTU 為 1500 字節(jié) ,而許多廣域網(wǎng)的 MTU 不超過 576 字節(jié) 。當(dāng) IP 數(shù)據(jù)報(bào)的總長(zhǎng)度大于鏈路 MTU 時(shí),就需要將 IP 數(shù)據(jù)報(bào)中的數(shù)據(jù)分裝在兩個(gè)或更多個(gè)較小的 IP 數(shù)據(jù)報(bào)中 ,這些較小的數(shù)據(jù)報(bào)叫做片 。
片在目的地的網(wǎng)絡(luò)層被重新組裝 。目的主機(jī)使用IP首部中的標(biāo)識(shí) 、標(biāo)志和片偏移字段來完成對(duì)片的重組 。當(dāng)創(chuàng)建一個(gè) IP 數(shù)據(jù)報(bào)時(shí) ,源主機(jī)為該數(shù)據(jù)報(bào)加上一個(gè)標(biāo)識(shí)號(hào) 。當(dāng)一個(gè)路由器需要將一個(gè)數(shù)據(jù)報(bào)分片時(shí) ,形成的每個(gè)數(shù)據(jù)報(bào) (即片) 都具有原始數(shù)據(jù)報(bào)的標(biāo)識(shí)號(hào) 。當(dāng)目的主機(jī)收到來自同一發(fā)送主機(jī)的一批數(shù)據(jù)報(bào)時(shí)? ,它可以通過檢查數(shù)據(jù)報(bào)的標(biāo)識(shí)號(hào)以確定哪些數(shù)據(jù)報(bào)是屬于同一個(gè)原始數(shù)據(jù)報(bào)的片 。IP 首部中的標(biāo)志位有 3 個(gè)比特 ,但只有后 2 個(gè)比特有意義 ,分別是 MF位( More Fragment ) 和 DF 位 (Don’t Fragment) 。只有當(dāng)DF = 0時(shí),該 IP 數(shù)據(jù)報(bào)才可以被分片 。 MF 則用來告知目的主機(jī)該 IP 數(shù)據(jù)報(bào)是否為原始數(shù)據(jù)報(bào)的最后一個(gè)片 。當(dāng)MF=1時(shí),表示相應(yīng)的原始數(shù)據(jù)報(bào)還有后續(xù)的片;當(dāng)MF=0時(shí),表示該數(shù)據(jù)報(bào)是相應(yīng)原始數(shù)據(jù)報(bào)的最后一個(gè)片 。目的主機(jī)在對(duì)片進(jìn)行重組時(shí) ,使用片偏移字段來確定片應(yīng)放在原始 IP 數(shù)據(jù)報(bào)的哪個(gè)位置 。
IP 分片涉及一定的計(jì)算 。例如,一個(gè)長(zhǎng)4000 字節(jié)的 IP 數(shù)據(jù)報(bào)(首部 20 字節(jié),數(shù)據(jù)部分3980 字節(jié)) 到達(dá)一個(gè)路由器 ,需要轉(zhuǎn)發(fā)到一條 MTU 為 1500 字節(jié)的鏈路上 。這意味著原始數(shù)據(jù)報(bào)中 3980 字節(jié)數(shù)據(jù)必須被分配到 3 個(gè)獨(dú)立的片中 (每個(gè)片也是一個(gè) IP 數(shù)據(jù)報(bào))。假定原始數(shù)據(jù)報(bào)的標(biāo)識(shí)號(hào)為 777 ,那么分成的 3 片如圖所示。可以看出 ,由于偏移值的單位是 8 字節(jié),所以除了最后一個(gè)片外,其他所有片中的有效數(shù)據(jù)載荷都是 8 的倍數(shù)。
網(wǎng)絡(luò)層轉(zhuǎn)發(fā)分組的流程
網(wǎng)絡(luò)層的路由器執(zhí)行的分組轉(zhuǎn)發(fā)算法如下 :
1)? 從數(shù)據(jù)報(bào)的首部提取目的主機(jī)的 IP 地址 D,得出目的網(wǎng)絡(luò)地址為 N。
2)若網(wǎng)絡(luò) N 與此路由器直接相連 ,則把數(shù)據(jù)報(bào)直接交付目的主機(jī) D,這就叫路由器的直接交付;否則是間接交付 ,執(zhí)行3)。
3) 若路由表中有目的地為址為 D 的特定主機(jī)路由 (對(duì)特定的目的主機(jī)指明一個(gè)特定的路由 , 通常是為了控制或測(cè)試網(wǎng)絡(luò) ,或出于安全考慮才采用的) ,則把數(shù)據(jù)報(bào)傳送給路由表中所指明的下一跳路由器;否則,執(zhí)行4)。
4) 若路由表中有到達(dá)網(wǎng)絡(luò) N? 的路由,則把數(shù)據(jù)報(bào)傳送給路由表指明的下一跳路由器 :否則,執(zhí)行 5)。
5) 若路由表中有一個(gè)默認(rèn)路由 ,則把數(shù)據(jù)報(bào)傳送給路由表中所指明的默認(rèn)路由器;否則,執(zhí)行6)。
6) 報(bào)告轉(zhuǎn)發(fā)分組出錯(cuò) 。
注意:得到下一跳路由器的 IP 地址后不是直接將該地址填入到待發(fā)送的數(shù)據(jù)報(bào),而是將該IP地址轉(zhuǎn)換成 MAC 地址 ( 通過ARP協(xié)議),將其放到MAC幀首部中 ,然后根據(jù)這個(gè) MAC 地址找到下一跳路由器 。在不同網(wǎng)絡(luò)中傳送時(shí),MAC 幀中的源地址和目的地址要發(fā)生變化 ,但是網(wǎng)橋在轉(zhuǎn)發(fā)幀時(shí) ,不改變幀的源地址,注意區(qū)分 。
IPv4 地址與 NAT
????IPv4 地址
連接在 Internet 中的每一臺(tái)主機(jī) (或路由器) 都分配一個(gè) 32 比特的全球唯一的標(biāo)識(shí)符 ,即IP地址 。傳統(tǒng)的 IP 地址是分類的地址 ,分為A、B、C、D、E 五類。
無論哪類 IP 地址 ,都由網(wǎng)絡(luò)號(hào)和主機(jī)號(hào)兩部分組成 。即 IP 地址::={<網(wǎng)絡(luò)號(hào)>,<主機(jī)號(hào)〉} 。 其中網(wǎng)絡(luò)號(hào)標(biāo)志主機(jī)(或路由器) 所連接到的網(wǎng)絡(luò) 。一個(gè)網(wǎng)絡(luò)號(hào)在整個(gè)因特網(wǎng)范圍內(nèi)必須是唯一的。主機(jī)號(hào)標(biāo)志該主機(jī)? (或路由器)。一個(gè)主機(jī)號(hào)在它前面的網(wǎng)絡(luò)號(hào)所指明的網(wǎng)絡(luò)范圍內(nèi)必須是唯一的。由此可見,一個(gè) IP 地址在整個(gè)因特網(wǎng)范國內(nèi)是唯一的。
分類的 IP 地址如圖所示。
在各類?IP?地址中?,有一些?IP?地址用于表示特殊用途?,不用于做主機(jī)?IP?地址:?
主機(jī)號(hào)全為?0?表示本網(wǎng)絡(luò)本身?。例如,202.98.174.0
主機(jī)號(hào)全為?1表示本網(wǎng)絡(luò)的廣播地址?,又稱直接廣播地址?。例如,202.98.174.255?
127.0.0.0?網(wǎng)絡(luò)保留作為環(huán)路自檢?(?Loopback?Test?)?地址,此地址表示任意主機(jī)本身?,目的地址為環(huán)回地址的?IP?數(shù)據(jù)報(bào)永遠(yuǎn)不會(huì)出現(xiàn)在任何網(wǎng)絡(luò)上。
32?位全為?0,即?0.0.0.0?表示本網(wǎng)絡(luò)上的本主機(jī)?。
32?位全為?1,即?255.255.255.255?表示整個(gè)?TCP/IP?網(wǎng)絡(luò)的廣播地址,又稱受限廣播地址?。?實(shí)際使用時(shí)由于路由器對(duì)廣播域的隔離?,255.255.255.255?等效為本網(wǎng)絡(luò)的廣播地址?。
常用的三種類別的?IP?地址的使用范圍見下表。
在表中,A 類地址可用的網(wǎng)絡(luò)數(shù)為 2^7-2 ,減 2 的原因是:第一,網(wǎng)絡(luò)號(hào)字段全為 0 的 IP 地址是保留地址 ,意思是 “本網(wǎng)絡(luò)”;第二,網(wǎng)絡(luò)號(hào)為 127 為環(huán)回測(cè)試地址 。B 類地址可用網(wǎng)絡(luò)數(shù)為 2^14 - 1,減 1 的原因是:128.0 這個(gè)網(wǎng)絡(luò)號(hào)是不可指派的 。C 類地址可用網(wǎng)絡(luò)數(shù)為 2^21 - 1,減1的原因是:網(wǎng)絡(luò)號(hào)為 192.0.0 的網(wǎng)絡(luò)是不可指派的 。
IP 地址有以下重要的特點(diǎn) :
1) 每個(gè) IP 地址都由網(wǎng)絡(luò)號(hào)和主機(jī)號(hào)兩部分組成 ,因此IP 地址是一種分等級(jí)的地址結(jié)構(gòu) 。 分等級(jí)的好處是 :①IP 地址管理機(jī)構(gòu)在分配 IP 地址時(shí)只分配網(wǎng)絡(luò)號(hào) (第一級(jí)),而主機(jī)號(hào) (第二級(jí)) 則由得到該網(wǎng)絡(luò)的單位自行分配 ,方便了 IP 地址的管理;②路由器僅根據(jù)目的主機(jī)所連接的網(wǎng)絡(luò)號(hào)來轉(zhuǎn)發(fā)分組 (而不考慮目標(biāo)主機(jī)號(hào)),從而減小了路由表所占的存儲(chǔ)空間 。
2) IP 地址是標(biāo)志一個(gè)主機(jī) (或路由器) 和一條鏈路的接口 。當(dāng)一個(gè)主機(jī)同時(shí)連接到兩個(gè)網(wǎng)絡(luò)時(shí),該主機(jī)就必須同時(shí)具有兩個(gè)相應(yīng)的 IP 地址,每個(gè) IP 地址的網(wǎng)絡(luò)號(hào)必須與所在網(wǎng)絡(luò)的網(wǎng)絡(luò)號(hào)相同,且這兩個(gè) IP 地址的網(wǎng)絡(luò)號(hào)是不同的 。因此 IP 網(wǎng)絡(luò)上的一個(gè)路由器必然至少應(yīng)當(dāng)具有兩個(gè) IP 地址 (路由器每個(gè)端口必須至少分配一個(gè) IP 地址)。
3)用轉(zhuǎn)發(fā)器或橋接器 ( 網(wǎng)橋等) 連接起來的若干個(gè) LAN 仍然是同一個(gè)網(wǎng)絡(luò) ( 同一個(gè)廣播域),因此該 LAN? 中所有主機(jī)的 IP 地址的網(wǎng)絡(luò)號(hào)必須相同 ,但主機(jī)號(hào)必須不同 。
4)在 IP 地址中 ,所有分配到網(wǎng)絡(luò)號(hào)的網(wǎng)絡(luò) (無論是 LAN 或 WAN ) 都是平等的。
5)在同一個(gè)局域網(wǎng)上的主機(jī)或路由器的 IP 地址中的網(wǎng)絡(luò)號(hào)必須是一樣的 。路由器總是具有兩個(gè)或兩個(gè)以上的 IP 地址,路由器的每一個(gè)端口都有一個(gè)不同網(wǎng)絡(luò)號(hào)的 IP 地址。
????網(wǎng)絡(luò)地址轉(zhuǎn)換
網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT) ,是通過將專用網(wǎng)絡(luò)地址 (如企業(yè)內(nèi)部 Intranet ) 轉(zhuǎn)換為公用地址 (如 Internet ),從而對(duì)外隱藏了內(nèi)部管理的 IP 地址。它使得整個(gè)專用網(wǎng)只需要一個(gè)全球IP地址就可以與因特網(wǎng)連通,由于專用網(wǎng)本地IP 地址是可重用的,所以 NAT 大大節(jié)省了IP地址的消耗 。 同時(shí),它隱藏了內(nèi)部網(wǎng)絡(luò)結(jié)構(gòu) ,從而降低了內(nèi)部網(wǎng)絡(luò)受到攻擊的風(fēng)險(xiǎn) 。
此外,為了網(wǎng)絡(luò)安全 ,劃出了部分 IP 地址為私有 IP 地址。私有 IP 地址只用于 LAN ,不用 于 WAN 連接 (因此私有 IP 地址不能直接用于 Internet ,必須通過網(wǎng)關(guān)利用 NAT 把私有 IP 地址轉(zhuǎn)換為 Internet 中合法的全球IP地址后才能用于 Internet ),并且允許私有IP 地址被 LAN 重復(fù)使用。這有效地解決了 IP 地址不足的問題 。私有 IP 地址網(wǎng)段如下 :
A 類:1個(gè) A 類網(wǎng)段 ,即 10.0.0.0 ~10.255.255.255
B 類:16 個(gè) B 類網(wǎng)段,即 172.16.0.0 ~172.31.255.255
C 類:256 個(gè) C 類網(wǎng)段 ,即 192.168.0.0 ~192.168.255.255
在因特網(wǎng)中的所有路由器 ,對(duì)目的地址是私有地址的數(shù)據(jù)報(bào)一律不進(jìn)行轉(zhuǎn)發(fā) 。這種采用私有IP 地址的互聯(lián)網(wǎng)絡(luò)稱為專用互聯(lián)網(wǎng)或本地互聯(lián)網(wǎng) 。私有IP地址也稱可重用地址 。
使用 NAT 時(shí)需要在專用網(wǎng)連接到因特網(wǎng)的路由器上安裝 NAT 軟件,NAT 路由器至少有一個(gè)有效的外部全球地址 。當(dāng)使用本地地址的主機(jī)在和外界通信時(shí) ,NAT 路由器使用 NAT? 轉(zhuǎn)換表將本地地址轉(zhuǎn)換成全球地址 ,或?qū)⑷虻刂忿D(zhuǎn)換成本地地址 。NAT 轉(zhuǎn)換表中存放著{本地 IP 地址: 端口}到{全球 IP 地址:端口}的映射。通過{ip 地址 :端口}這樣的映射方式 ,就可以讓多個(gè)私有 IP 地址映射到同一個(gè)全球 IP 地址。
下面以宿舍共享寬帶上網(wǎng)為例 。假設(shè)一個(gè)宿舍辦理了 2Mb/s 的電信寬帶 ,那么這個(gè)宿舍就獲得了一個(gè)全球 IP 地址(如 138.76.29.7 ) ,而宿舍內(nèi) 4 臺(tái)主機(jī)使用私有地址( 如 192.168.0.0 網(wǎng)段)。 宿舍的網(wǎng)關(guān)路由器應(yīng)該開啟 NAT 功能,并且某時(shí)刻路由器上的 NAT 轉(zhuǎn)換表見表。那么,當(dāng)路由器從 LAN 端口收到IP及源端口號(hào)為192.168.0.2:2233? 的數(shù)據(jù)報(bào)時(shí) ,就將其映射成138.76.29.7: 5001 ,然后從WAN端口發(fā)送到因特網(wǎng)上 。當(dāng)路由器從 WAN 端口收到目的 IP 及目的端口號(hào)為 138.76.29.7:5060 的數(shù)據(jù)報(bào)時(shí),就將其映射成 192.168.0.3:1234,然后從 LAN 端口發(fā)送給相應(yīng)的本地主機(jī)。這樣,只需要一個(gè)全球地址,就可以讓多臺(tái)主機(jī)同時(shí)訪問因特網(wǎng) 。
注意:普通路由器在轉(zhuǎn)發(fā) IP 數(shù)據(jù)報(bào)時(shí) ,不改變其源 IP 地址和目的 IP 地址。而NAT路由器在轉(zhuǎn)發(fā) IP 數(shù)據(jù)報(bào)時(shí)一定要更換其IP地址 ( 轉(zhuǎn)換源 IP 地址或目的 IP 地址 )。普通路由器僅工作在網(wǎng)絡(luò)層,而 NAT 路由器轉(zhuǎn)發(fā)數(shù)據(jù)報(bào)時(shí)需要查看和轉(zhuǎn)換傳輸層的端口號(hào) 。
子網(wǎng)劃分與子網(wǎng)掩碼 、CIDR
? ??子網(wǎng)劃分
兩級(jí)IP地址的缺點(diǎn) :IP 地址空間的利用率有時(shí)很低:給每一個(gè)物理網(wǎng)絡(luò)分配一個(gè)網(wǎng)絡(luò)號(hào)會(huì)使路由表變得太大因而使網(wǎng)絡(luò)性能變壞;兩級(jí)的?IP?地址不夠靈活?。
從?1985?年起,在?IP?地址中又增加了一個(gè)?“子網(wǎng)號(hào)字段”,使兩級(jí)?IP?地址變成為三級(jí)?IP?地址?。這種做法叫做劃分子網(wǎng)?。劃分子網(wǎng)已成為因特網(wǎng)的正式標(biāo)準(zhǔn)協(xié)議?。
劃分子網(wǎng)的基本思路如下?:
·劃分子網(wǎng)純屬一個(gè)單位內(nèi)部的事情。單位對(duì)外仍然表現(xiàn)為沒有劃分子網(wǎng)的網(wǎng)絡(luò)?。
·從主機(jī)號(hào)借用若干個(gè)比特作為子網(wǎng)號(hào)?,當(dāng)然主機(jī)號(hào)也就相應(yīng)減少了相同的比特?。三級(jí)?IP地址的結(jié)構(gòu)如下?:IP?地址?{<網(wǎng)絡(luò)號(hào)〉,<子網(wǎng)號(hào)>,<主機(jī)號(hào)>}?。
·凡是從其他網(wǎng)絡(luò)發(fā)送給本單位某個(gè)主機(jī)的?IP?數(shù)據(jù)報(bào),仍然是根據(jù)?IP?數(shù)據(jù)報(bào)的目的網(wǎng)絡(luò)號(hào),先找到連接在本單位網(wǎng)絡(luò)上的路由器。然后此路由器在收到IP數(shù)據(jù)報(bào)后,再按目的網(wǎng)絡(luò)號(hào)和子網(wǎng)號(hào)找到目的子網(wǎng)?。最后就把?IP?數(shù)據(jù)報(bào)直接交付給目的主機(jī)?。
注意:1)?劃分子網(wǎng)只是把?IP?地址的主機(jī)號(hào)這部分進(jìn)行再劃分?,而不改變 IP地址原來的網(wǎng)絡(luò)號(hào)。因此,從一個(gè)?IP?地址本身或?IP?數(shù)據(jù)報(bào)的首部?,并無法判斷源主機(jī)或目的主機(jī)所連接的網(wǎng)絡(luò)是否進(jìn)行了子網(wǎng)劃分?。
2)? ?[RFC 950]規(guī)定,對(duì)分類的IPv4 地址進(jìn)行子網(wǎng)劃分時(shí) ,子網(wǎng)號(hào)不能為全 1 或全 0。但隨著 CIDR 的廣泛使用 ,現(xiàn)在全 1 和全 0 的子網(wǎng)號(hào)也可以使用了 ,但一定要謹(jǐn)慎使用 ,要弄清你的路由器所用的路由選擇軟件是否支持全 0 或全 1 的子網(wǎng)號(hào)這種用法 。
3) 不論是分類的 IPv4 地址還是 CIDR ,其子網(wǎng)中的主機(jī)號(hào)為全 0 或全 1 的地址都不能被指派。子網(wǎng)中的主機(jī)號(hào)全 0 的地址為子網(wǎng)的網(wǎng)絡(luò)號(hào) ,主機(jī)號(hào)全 1 的地址為子網(wǎng)的廣播地址。
????子網(wǎng)掩碼
為了告訴主機(jī)或路由器對(duì)一個(gè) A 類、B 類、C 類網(wǎng)絡(luò)進(jìn)行了子網(wǎng)劃分 ,使用子網(wǎng)掩碼來表達(dá)對(duì)原網(wǎng)絡(luò)中主機(jī)號(hào)的借位 。
子網(wǎng)掩碼是一個(gè)與 IP 地址相對(duì)應(yīng)的長(zhǎng) 32bit 的二進(jìn)制串,它由一串 1 和跟隨的一串 0 組成。 其中,1對(duì)應(yīng)于 IP 地址中的網(wǎng)絡(luò)號(hào)及子網(wǎng)號(hào) ,而 0 對(duì)應(yīng)于主機(jī)號(hào) 。計(jì)算機(jī)只需將 IP 地址和其對(duì)應(yīng)的子網(wǎng)掩碼運(yùn)位相 “與” (邏輯 AND 運(yùn)算),就可得出相應(yīng)子網(wǎng)的網(wǎng)絡(luò)地址 。
現(xiàn)在的因特網(wǎng)標(biāo)準(zhǔn)規(guī)定 :所有的網(wǎng)絡(luò)都必須使用子網(wǎng)掩碼 。如果一個(gè)網(wǎng)絡(luò)沒有劃分子網(wǎng),那么就采用默認(rèn)子網(wǎng)掩碼 。A 、B 、C? 類地址的默認(rèn)子網(wǎng)掩碼分別為? 255.0.0.0 、255.255.0.0 、 255.255.255.0 。例如,某主機(jī)的 IP 地址 136.34.5.56,子網(wǎng)掩碼為255.255.255.0 ,進(jìn)行逐位“與” 運(yùn)算后,得出該主機(jī)所在子網(wǎng)的網(wǎng)絡(luò)號(hào) 136.34.5.0。
由于子網(wǎng)掩碼是一個(gè)網(wǎng)絡(luò)或一個(gè)子網(wǎng)的重要屬性,所以路由器在相互之間交換路由信息時(shí), 必須把自己所在網(wǎng)絡(luò) (或子網(wǎng)) 的子網(wǎng)掩碼告訴對(duì)方 。路由表中的每一個(gè)條目,除了要給出目的網(wǎng)絡(luò)地址和下一跳地址外? ,還需要同時(shí)給出該目的網(wǎng)絡(luò)的子網(wǎng)掩碼。
在使用子網(wǎng)掩碼的情況下 :
1) 一個(gè)主機(jī)在設(shè)置 IP 地址信息的同時(shí) ,必須設(shè)置子網(wǎng)掩碼 。
2)? 同屬于一個(gè)子網(wǎng)的所有主機(jī)以及路由器的相應(yīng)端口 ,必須設(shè)置相同的子網(wǎng)掩碼 。
3)? 路由器的路由表中 ,所包含的信息其主要內(nèi)容必須有:目的網(wǎng)絡(luò)地址、子網(wǎng)掩碼 、下一跳地址。
使用子網(wǎng)掩碼時(shí)路由器的分組轉(zhuǎn)發(fā)算法如下 :
1)? 從收到的分組的首部提取目的 IP 地址,記為D。
2) 先判斷是否為直接交付 。對(duì)路由器直接相連的網(wǎng)絡(luò)個(gè)進(jìn)行檢查 :用各網(wǎng)絡(luò)的子網(wǎng)掩碼和 D按位相 “與”,看結(jié)果是否和相應(yīng)的網(wǎng)絡(luò)地址匹配 。若匹配,則將分組直接交付,否則就是間接交付,執(zhí)行 3)。
3) 若路由表中有目的地址為 D 的特定主機(jī)路由,則將分組傳送給路由表中所指明的下一跳路由器;否則,執(zhí)行4)。
4) 對(duì)路由表中的每一行 (目的網(wǎng)絡(luò)地址 ,子網(wǎng)掩碼 ,下一跳地址) 中的子網(wǎng)掩碼和D逐位相 “與”,其結(jié)果為 N。若 N與該行的目的網(wǎng)絡(luò)地址匹配 ,則將分組傳送給該行指明的下一跳路由器;否則,執(zhí)行5)。
5) 若路由表中有一個(gè)默認(rèn)路由 ,則將分組傳送給路由表中所指明的默認(rèn)路由器 ;否則,執(zhí)行6)。
6) 報(bào)告轉(zhuǎn)發(fā)分組出錯(cuò) 。
????無分類編址 CIDR
無分類域間路由選擇 (CIDR ) 是在變長(zhǎng)子網(wǎng)掩碼的基礎(chǔ)上提出的一種消除傳統(tǒng) A、B、C 類網(wǎng)絡(luò)劃分,并且可以在軟件的支持下實(shí)現(xiàn)超網(wǎng)構(gòu)造的一種IP地址的劃分方法 。
比如說,如果一個(gè)單位需要2000個(gè)地址 ,那么就分配它一個(gè) 2048 地址的塊 ( 8 個(gè)連續(xù)的 C 類網(wǎng)絡(luò)),而不是一個(gè)完全的B類地址。這樣可以大幅度提高IP地址空間的利用率 ,減小路由器的路由表大小 ,提高路由轉(zhuǎn)發(fā)能力。CIDR的主要特點(diǎn)有:
1) 消除了傳統(tǒng)的 A、B、C 類地址以及劃分子網(wǎng)的概念 ,因而可以更加有效地分配 IPv4 的地址空間 。CIDR 使用“網(wǎng)絡(luò)前綴” 的概念代替子網(wǎng)絡(luò)的概念 。這樣IP地址的無分類兩級(jí)編址為 : IP : :={<網(wǎng)絡(luò)前綴>,<主機(jī)號(hào)>} 。
CIDR 還使用 “斜線記法” (或稱 CIDR 記法),即:IP 地址/網(wǎng)絡(luò)前綴所占比特?cái)?shù) 。其中,網(wǎng)絡(luò)前綴所占比特?cái)?shù)對(duì)應(yīng)于網(wǎng)絡(luò)號(hào)的部分 ,等效于子網(wǎng)掩碼中連續(xù) 1 的部分 。例如 ,對(duì)于 128.14.32.5/20 這個(gè)地址 ,它的掩碼是 20 個(gè)連續(xù)的 1 和后續(xù) 12 個(gè)連續(xù)的 0,通過逐位相 “與” 的方法可以得到該地址的網(wǎng)絡(luò)前綴 (或直接截取前 20 位):
CIDR 雖然不使用子網(wǎng) ,但仍然使用 “掩碼” 這一名詞?!癈IDR 不使用子網(wǎng)” 是指 CIDR 并沒有在 32 位地址中指明若干位作為子網(wǎng)字段 。但分配到一個(gè) CIDR 地址塊的組織 ,仍可以在本組織內(nèi)根據(jù)需要?jiǎng)澐殖鲆恍┳泳W(wǎng) 。例如,某組織分配到地址塊 /20,就可以再繼續(xù)劃分為8個(gè)子網(wǎng) (從主機(jī)號(hào)中借用 3 位來劃分子網(wǎng)),這時(shí)每個(gè)子網(wǎng)的網(wǎng)絡(luò)前綴就變成23位。全 0 和全 1 的主機(jī)號(hào)地址一般不使用 。
2) 將網(wǎng)絡(luò)前綴都相同的連續(xù)的 IP 地址組成 “CIDR 地址塊”。一個(gè)CIDR 地址塊可以表示很多地址,這種地址的聚合稱為路由聚合,或稱為構(gòu)成超網(wǎng)? 。路由聚合使得路由表中的一個(gè)項(xiàng)目可以表示很多個(gè)原來傳統(tǒng)分類地址的路由? ,有利于減少路由器之間的路由選擇信息的交換,從而提高網(wǎng)絡(luò)性能。
例如,如圖所示的網(wǎng)絡(luò)中,如果不使用路由聚合,那么R1的路由表中需要分別有到網(wǎng)絡(luò) 1 和網(wǎng)絡(luò) 2 的路由表項(xiàng)。不難發(fā)現(xiàn) ,網(wǎng)絡(luò) 1 和網(wǎng)絡(luò) 2 的網(wǎng)絡(luò)前綴在二進(jìn)制表示的情況下 ,前 16 位都是相同的,第17 位分別是 0 和 1,并且從R1 到網(wǎng)絡(luò) 1和網(wǎng)絡(luò) 2 的路由的下一跳皆為 R2。 若使用路由聚合,在R1 看來,網(wǎng)絡(luò) 1 和網(wǎng)絡(luò) 2 可以構(gòu)成一個(gè)更大的地址塊 206.1.0.0/16 ,到網(wǎng)絡(luò)1?和網(wǎng)絡(luò) 2 的兩條路由就可以聚合成一條到 206.1.0.0/16 的路由。
CIDR 地址塊中的地址數(shù)一定是 2 的整數(shù)次冪,實(shí)際可指派的地址數(shù)通常為2^N-2, N表示主機(jī)號(hào)的位數(shù) ,主機(jī)號(hào)全0代表網(wǎng)絡(luò)號(hào) ,主機(jī)號(hào)全1為廣播地址 。網(wǎng)絡(luò)前綴越短 ,其地址塊所包含的地址數(shù)就越多 。而在三級(jí)結(jié)構(gòu)的 IP 地址中,劃分子網(wǎng)是使網(wǎng)絡(luò)前綴變長(zhǎng) 。
CIDR 的優(yōu)點(diǎn)在于網(wǎng)絡(luò)前綴長(zhǎng)度的靈活性 。由于上層網(wǎng)絡(luò)的前綴長(zhǎng)度較短 ,因此相應(yīng)的路由表的項(xiàng)目較少。而內(nèi)部又可采用延長(zhǎng)網(wǎng)絡(luò)前綴的方法來靈活的劃分子網(wǎng)? 。
最長(zhǎng)前綴匹配(最佳匹配) :使用 CIDR 時(shí),路由表中的每個(gè)項(xiàng)目由 “網(wǎng)絡(luò)前綴” 和 “下一跳地址” 組成。在查找路由表時(shí)可能會(huì)得到不止一個(gè)匹配結(jié)果。應(yīng)當(dāng)從匹配結(jié)果中選擇具有最長(zhǎng)網(wǎng)絡(luò)前綴的路由 ,因?yàn)榫W(wǎng)絡(luò)前綴越長(zhǎng) ,其地址塊就越小 ,因而路由就越具體。
CIDR 查找路由表的方法 :為了進(jìn)行更如有效的查找最長(zhǎng)前綴匹配,通常是將無分類編址的路由表存放在一種層次的數(shù)據(jù)結(jié)構(gòu)中 ,然后自上而下地按層次進(jìn)行查找 。這里最常用的數(shù)據(jù)結(jié)構(gòu)就是二叉線索 。
ARP 協(xié)議、DHCP 協(xié)議與 ICMP 協(xié)議
????IP 地址與硬件地址
IP 地址是網(wǎng)絡(luò)層使用的地址 ,它是分層次等級(jí)的 。硬件地址是數(shù)據(jù)鏈路層使用的地址? (例如 MAC 地址),它是平面式的。在網(wǎng)絡(luò)層及網(wǎng)絡(luò)層之上使用 IP 地址,IP 地址放在 IP 數(shù)據(jù)報(bào)的首部,而MAC 地址放在 MAC 幀的首部。通過數(shù)據(jù)封裝 ,把IP數(shù)據(jù)報(bào)分組封裝成為 MAC 幀之后 ,數(shù)據(jù)鏈路層看不見數(shù)據(jù)報(bào)分組中的 IP 地址。
由于路由器的隔離,IP 網(wǎng)絡(luò)中無法通過廣播方式依靠 MAC地址來完成跨網(wǎng)絡(luò)的尋址 ,因此在 IP 網(wǎng)絡(luò)的網(wǎng)絡(luò)層只使用IP地址來完成尋址 。尋址時(shí) :每個(gè)路由器依據(jù)其路由表 (依靠靜態(tài)路由或動(dòng)態(tài)路由協(xié)議生成) 選擇到目標(biāo)網(wǎng)絡(luò)(即主機(jī)號(hào)全為 0? 的網(wǎng)絡(luò)地址) 需要轉(zhuǎn)發(fā)到的下一跳(路由器的物理端口號(hào)或下一網(wǎng)絡(luò)地址) ,而IP分組通過多次路由轉(zhuǎn)發(fā)到達(dá)目標(biāo)網(wǎng)絡(luò)后 ,則改為在目標(biāo)網(wǎng)絡(luò) LAN 中通過數(shù)據(jù)鏈路層的 MAC 地址以廣播方式尋址 。這樣可以提高路由選擇的效率 。
1)在IP層抽象的互聯(lián)網(wǎng)上只能看到 IP 數(shù)據(jù)報(bào) 。
2)雖然在 IP 數(shù)據(jù)報(bào)首部中有完整的源 IP 地址和目的 IP 地址,但路由器只根據(jù)目的 IP 地址的網(wǎng)絡(luò)號(hào)進(jìn)行路由選擇 。
3)在局域網(wǎng)的鏈路層,只能看見 MAC 幀。而通過路由器轉(zhuǎn)發(fā) IP 分組時(shí),此 IP 分組在每個(gè)網(wǎng)絡(luò)中都被路由器解封裝和重新封裝 。因此 IP 數(shù)據(jù)報(bào)在被路由器轉(zhuǎn)發(fā)時(shí)其數(shù)據(jù)鏈路層封裝所使用的 MAC 地址是在不斷改變的 。這也決定了無法使用 MAC 地址跨網(wǎng)絡(luò)通信 。
4)盡管互聯(lián)在一起的網(wǎng)絡(luò)的硬件地址體系各不相同 ,但I(xiàn)P層抽象的互聯(lián)網(wǎng)卻屏蔽了下層這些報(bào)復(fù)雜的細(xì)節(jié)。只要我們?cè)诰W(wǎng)絡(luò)層上討論問題 ,就能夠使用統(tǒng)一的、抽象的 IP 地址研究主機(jī)與主機(jī)或路由器之間的通信 。
注意:路由器由于互聯(lián)多個(gè)網(wǎng)絡(luò),因此它不僅有多個(gè) IP 地址 ,也有多個(gè)硬件地址 。
????地址解析協(xié)議 ARP
無論網(wǎng)絡(luò)層使用什么協(xié)議 ,在實(shí)際網(wǎng)絡(luò)的鏈路上傳送數(shù)據(jù)幀時(shí),最終必須使用硬件地址。所以需要一種方法來完成 IP 地址到 MAC 地址的映射 ,這就是地址解析協(xié)議 ARP( Address Resolution Protocol ) 。每個(gè)主機(jī)都設(shè)有一個(gè) ARP 高速緩存,存放本局域網(wǎng)上各主機(jī)和路由器的 IP 地址到 MAC 地址的映射表 ,稱 ARP 表。使用ARP 協(xié)議來動(dòng)態(tài)維護(hù)此 ARP 表。
ARP工作在網(wǎng)絡(luò)層,其工作原理:當(dāng)主機(jī)A欲向本局域網(wǎng)上的某個(gè)主機(jī) B 發(fā)送 IP 數(shù)據(jù)報(bào)時(shí),就先在其ARP 高速緩存中查看有無主機(jī) B 的IP地址 。如有,就可查出其對(duì)應(yīng)的硬件地址, 再將此硬件地址寫入 MAC 幀,然后通過局域網(wǎng)將該 MAC 幀發(fā)往此硬件地址 。如果沒有 ,就通過使用目的MAC地址為 FF-FF-FF-FF-FF-FF的幀來封裝并廣播 ARP 請(qǐng)求分組 ,可以便同一個(gè)局域網(wǎng)里的所有主機(jī)收到 ARP 請(qǐng)求。當(dāng)主機(jī) B 收到該 ARP 請(qǐng)求后 ,就會(huì)向主機(jī) A 發(fā)出響應(yīng) ARP 分組,分組中包含主機(jī) B 的IP 與 MAC 地址的映射關(guān)系 ,主機(jī)A 在收到后將此映射寫入 ARP 緩存中,然后按查詢到的硬件地址發(fā)送 MAC 幀。ARP 協(xié)議由于 “看到了” IP 地址,所以它工作在網(wǎng)絡(luò)層,而 NAT 路由器由于 “看到了” 端口,所以它工作在傳輸層 。對(duì)于某個(gè)協(xié)議工作在哪個(gè)層次,讀者應(yīng)該能通過協(xié)議的工作原理進(jìn)行猜測(cè)。
注意:ARP 是解決同一個(gè)局域網(wǎng)上的主機(jī)或路由器的 IP 地址和硬件地址的映射問題 。如果所要找的主機(jī)和源主機(jī)不在同一個(gè)局域網(wǎng)上 ,那么就要通過 ARP? 協(xié)議找到一個(gè)位于本局域網(wǎng)上的某個(gè)路由器的硬件地址然后把分組發(fā)送給這個(gè)路由器讓這個(gè)路由器把分組特發(fā)給下一個(gè)網(wǎng)絡(luò)。剩下的工作就由下一個(gè)網(wǎng)絡(luò)來做,盡管ARP 請(qǐng)求分組是廣播發(fā)送的 ,但是 ARP 響應(yīng)分組是普通的單播 ,即從一個(gè)源地址發(fā)送到一個(gè)目的地址 。
ARP 的4 種典型情況總結(jié) :
1)? 發(fā)送方是主機(jī) ,要把 IP 數(shù)據(jù)報(bào)發(fā)送到本網(wǎng)絡(luò)上的另一個(gè)主機(jī) 。這時(shí)用 ARP 找到目的主機(jī)的硬件地址 。
2)發(fā)送方是主機(jī) ,要把 IP 數(shù)據(jù)報(bào)發(fā)送到另一個(gè)網(wǎng)絡(luò)上的一個(gè)主機(jī) 。這時(shí)用 ARP 找到本網(wǎng)絡(luò)上的一個(gè)路由器的硬件地址 ,剩下的工作由這個(gè)路由器來完成 。
3)發(fā)送方是路由器 ,要把 IP 數(shù)據(jù)報(bào)轉(zhuǎn)發(fā)到本網(wǎng)絡(luò)上的一個(gè)主機(jī) 。這時(shí)用 ARP 找到目的主機(jī)的硬件地址。
4 )發(fā)送方是路由器 ,要把 IP數(shù)據(jù)報(bào)轉(zhuǎn)發(fā)到另一個(gè)網(wǎng)絡(luò)上的一個(gè) 主機(jī)。這時(shí)用 ARP 找到本網(wǎng)絡(luò)上的一個(gè)路由器的硬件地址 ,剩下的工作由找到的這個(gè)路由器完成 。
從 IP 地扯到硬件地址的解析是自動(dòng)進(jìn)行的 ,主機(jī)的用戶對(duì)這種地址解析過程是不知道的 。 只要主機(jī)或路由器要和本網(wǎng)絡(luò)上的另一個(gè)已知 IP 地址的主機(jī)或路由器進(jìn)行通信 ,ARP? 協(xié)議就會(huì)自動(dòng)地將這個(gè) IP 地址解析為鏈路層所需要的硬件地址 。
????動(dòng)態(tài)主機(jī)配置協(xié)議 DHCP
動(dòng)態(tài)主機(jī)配置協(xié)議 (Dynamic Host Configuration Protocol, DHCP ) 常用于給主機(jī)動(dòng)態(tài)地分配 IP 地址 ,它提供了即插即用聯(lián)網(wǎng)的機(jī)制 ,這種機(jī)制允許一臺(tái)計(jì)算機(jī)加入新的網(wǎng)絡(luò)和獲取IP 地址而不用手工參與 。DHCP 是應(yīng)用層協(xié)議 ,它是基于 UDP 的。
DHCP 協(xié)議工作原理 :它使用客戶/服務(wù)器方式 。需要IP 地址的主機(jī)在啟動(dòng)時(shí)就向 DHCP 服務(wù)器廣播發(fā)送發(fā)現(xiàn)報(bào)文 ,這時(shí)該主機(jī)就成為DHCP客戶。本地網(wǎng)絡(luò)上所有主機(jī)都能收到此廣播報(bào)文 ,但只有 DHCP 服務(wù)器才回答此廣播報(bào)文 。DHCP? 服務(wù)器先在其數(shù)據(jù)庫中查找該計(jì)算機(jī)的配置信息。若找到,則返回找到的信息 。若找不到 ,則從服務(wù)器的 IP 地址池中取一個(gè)地址分配給該計(jì)算機(jī) 。DHCP 服務(wù)器的回答報(bào)文叫做提供報(bào)文 。
DHCP 服務(wù)器聚合 DHCP 客戶端的交換過程如下 :
1) DHCP 客戶機(jī)廣播 “DHCP 發(fā)現(xiàn)” 消息,試圖找到網(wǎng)絡(luò)中的 DHCP 服務(wù)器,從服務(wù)器獲得一個(gè) IP 地址。
2) DHCP 服務(wù)器收到 “DHCP 發(fā)現(xiàn)” 消息后 ,就向網(wǎng)絡(luò)中廣播 “DHCP 提供” 消息,其中包括提供 DHCP 客戶機(jī)的 IP 地址和相關(guān)配置信息 。
3) DHCP 客戶機(jī)收到 “DHCP 提供” 消息,如果接受 DHCP 服務(wù)器所提供的相關(guān)參數(shù) ,則通過廣播 “DHCP 請(qǐng)求” 消息向 DHCP 服務(wù)器請(qǐng)求提供 IP 地址。
4)DHCP 服務(wù)器廣播 “DHCP 確認(rèn)” 消息,將 IP地址分配給 DHCP 客戶機(jī)。
DHCP 協(xié)議允許網(wǎng)絡(luò)上配置多臺(tái) DHCP 服務(wù)器,當(dāng) DHCP 客戶機(jī)發(fā)出 DHCP 請(qǐng)求時(shí) ,有可能收到多個(gè)應(yīng)答消息 。這時(shí),DHCP 客戶機(jī)只會(huì)挑選其中一個(gè),通常挑選最先到達(dá)的 。
DHCP 服務(wù)器分配給 DHCP 客戶的 IP 地址是臨時(shí)的,因此 DHCP 客戶只能在一段有限的時(shí)間內(nèi)使用這個(gè)分配到的 IP 地址。DHCP? 稱這段時(shí)間為租用期 。租用期的數(shù)值應(yīng)由 DHCP 服務(wù)器自己決定,DHCP? 客戶也可在自己發(fā)送的報(bào)文中提出對(duì)租用期的要求 。
DHCP 協(xié)議是應(yīng)用層協(xié)議 ,因?yàn)樗峭ㄟ^客戶/服務(wù)器方式工作的 ,DHCP 客戶端向 DHCP 服務(wù)器請(qǐng)求服務(wù) ,應(yīng)用層協(xié)議有兩種工作方式 :客戶/服務(wù)器方式和 P2P 方式,而其他層次的協(xié)議是沒有這兩種正作方式的 。
DHCP 協(xié)議的客戶端和服務(wù)端需要通過廣播方式來進(jìn)行交互 ,原因是在 DHCP 協(xié)議執(zhí)行期間,客戶端和服務(wù)端都沒有標(biāo)識(shí)自己身份的 IP 地址,因此不可能通過單播的形式進(jìn)行交互 。采用 UDP 而不采用 TCP 的原因也很明顯,TCP 協(xié)議需要建立連接 ,如果連對(duì)方的 IP 地址都不知道 ,更不可能通過雙方的套接宇建立連接了 。
????網(wǎng)際控制報(bào)文協(xié)議 ICMP
為了提高 IP 數(shù)據(jù)報(bào)交付成功的機(jī)會(huì) ,在網(wǎng)絡(luò)層使用了網(wǎng)際控制報(bào)文協(xié)議 ( Internet Con仕ol Message Protocol, ICMP ) 來允許主機(jī)或路由器報(bào)告差錯(cuò)和異常情況 。ICMP 報(bào)文作為 IP 層數(shù)據(jù)報(bào)的數(shù)據(jù) ,加上數(shù)據(jù)報(bào)的首部 ,組成 IP 數(shù)據(jù)報(bào)發(fā)送出去 。ICMP? 協(xié)議是 IP 層協(xié)議。
ICMP 報(bào)文的種類有兩種 ,即 ICMP 差錯(cuò)報(bào)告報(bào)文和 ICMP 詢問報(bào)文。
ICMP 差錯(cuò)報(bào)告報(bào)文用于目標(biāo)主機(jī)或到目標(biāo)主機(jī)路徑上的路由器向源主機(jī)報(bào)告差錯(cuò)和異常情況。共有以下五種類型:
1) 終點(diǎn)不可達(dá) 。當(dāng)路由器或主機(jī)不能交付數(shù)據(jù)報(bào)時(shí)就向源點(diǎn)發(fā)送終點(diǎn)不可達(dá)報(bào)文 。
2) 源點(diǎn)抑制 。當(dāng)路由器或主機(jī)由于擁塞而丟棄數(shù)據(jù)報(bào)時(shí) ,就向源點(diǎn)發(fā)送源點(diǎn)抑制報(bào)文 ,使源點(diǎn)知道應(yīng)當(dāng)把數(shù)據(jù)報(bào)的發(fā)送速率放慢? 。
3) 時(shí)間超過。當(dāng)路由器收到生存時(shí)間 TTL 為零的數(shù)據(jù)報(bào)時(shí) ,除丟棄該數(shù)據(jù)報(bào)外,還要向源點(diǎn)發(fā)送時(shí)間超過報(bào)文。當(dāng)終點(diǎn)在預(yù)先規(guī)定的時(shí)間內(nèi)不能收到一個(gè)數(shù)據(jù)報(bào)的全部數(shù)據(jù)報(bào)片時(shí) ,就把己收到的數(shù)據(jù)報(bào)片都丟棄,并向源點(diǎn)發(fā)送時(shí)間超過報(bào)文 。
4) 參數(shù)問題 。當(dāng)路由器或目的主機(jī)收到的數(shù)據(jù)報(bào)的首部中有的字段的值不正確時(shí) ,就丟棄該數(shù)據(jù)報(bào) ,并向源點(diǎn)發(fā)送參數(shù)問題報(bào)文 。
5) 改變路由 (重定向)。路由器把改變路由報(bào)文發(fā)送給主機(jī),讓主機(jī)知道下次應(yīng)將數(shù)據(jù)報(bào)發(fā)送給另外的路由器 (可通過更好的路由) 。
不應(yīng)發(fā)送 ICMP 差錯(cuò)報(bào)告報(bào)文的幾種情況:
1)? ?對(duì) ICMP 差錯(cuò)報(bào)告報(bào)文不再發(fā)送 ICMP 差錯(cuò)報(bào)告報(bào)文。
2) 對(duì)第一個(gè)分片的數(shù)據(jù)報(bào)片的所有后續(xù)數(shù)據(jù)報(bào)片都不發(fā)送 ICMP 差錯(cuò)報(bào)告報(bào)文 。
3) 對(duì)具有組播地址的數(shù)據(jù)報(bào)都不發(fā)送 ICMP 差錯(cuò)報(bào)告報(bào)文 。
4) 對(duì)具有特殊地址 ( 如 127.0.0.0 或 0.0.0.0 )? 的數(shù)據(jù)報(bào)不發(fā)送 ICMP 差錯(cuò)報(bào)告報(bào)文 。
ICMP? 詢問報(bào)文有四種類型 :回送請(qǐng)求和回答報(bào)文 、時(shí)間戳請(qǐng)求和回答報(bào)文 、掩碼地址請(qǐng)求和回答報(bào)文 、路由器詢問和通告報(bào)文 ,最常用的是前兩類 。
ICMP 的兩個(gè)常見的應(yīng)用是分組網(wǎng)間探測(cè)? PING( 用來測(cè)試兩個(gè)主機(jī)之間的連通性) 和 traceroute? ( UNIX? 中的名字,在 Windows? 中是 tracert ,可以用來跟蹤分組經(jīng)過的路由)。其中 PING 使用了 ICMP 回送請(qǐng)求和回答報(bào)文 ,traceroute? ( Tracert )使用了 ICMP 時(shí)間超過報(bào)文 。
注意:PING 工作在應(yīng)用層 ,它直接使用網(wǎng)絡(luò)層的 ICMP 協(xié)議 ,而沒有使用傳輸層的 TCP 或UDP 協(xié)議。Traceroute/tracert? 工作在網(wǎng)絡(luò)層。