一、網(wǎng)絡(luò)層提供的兩種服務(wù)
1.虛電路VC(virtual circuit)
兩個計算機進行通信時,應(yīng)先建立連接(但在分組交換中建立的是一條虛電路),以保證雙方通信所需的一切網(wǎng)絡(luò)資源,然后雙方就沿著已建立的虛電路發(fā)送分組。這樣的分組首部不需要填寫完整的目的主機地址,而只需要填寫這條虛電路的編號(一個不大的整數(shù)),因而減少了分組的開銷。這種通信方式如果再使用可靠傳輸?shù)木W(wǎng)絡(luò)協(xié)議,就可使所發(fā)送的分組無差錯按序列到達終點,當然也不丟失、不重復(fù)。在通信結(jié)束后要釋放建立的虛電路。
2.數(shù)據(jù)報服務(wù)
電信網(wǎng)提供的端到端可靠傳輸?shù)姆?wù)對電話業(yè)務(wù)是很合適的,因為電信網(wǎng)的終端(電話機)非常簡單,沒有智能,無差錯處理能力。因此電信網(wǎng)必須負責(zé)把用戶電話機產(chǎn)生的話音信號可靠地傳送到對方的電話機,使還原后的話音質(zhì)量符合技術(shù)規(guī)范的要求。但計算機網(wǎng)絡(luò)是有智能的計算機。計算機有很強的差錯處理能力。因此,因特網(wǎng)在設(shè)計上就采用了和電信網(wǎng)完全不同的思路。
因特網(wǎng)設(shè)計思路:
網(wǎng)絡(luò)層向上只提供簡單靈活的、無連接的、盡最大努力交付的數(shù)據(jù)報服務(wù)。
發(fā)送分組時不用先建立連接,每一個分組獨立發(fā)送,與前后分組無關(guān)(不進行編號)。物理層不提供服務(wù)質(zhì)量的承諾,也就是說所傳送的分組可能出錯、丟失、重復(fù)和失序,也不保證分組交付的時限。由于不提供端到端的可靠性服務(wù),這就使網(wǎng)絡(luò)中的路由器可以做得比較簡單,而且價格低廉。如果主機(即端系統(tǒng))中的進程之間的通信需要是可靠的,那么就由網(wǎng)絡(luò)的主機中的運輸層負責(zé)(包括差錯處理、流量控制等)。
好處:網(wǎng)絡(luò)造價低,運行方式靈活,能夠適應(yīng)多種應(yīng)用。
3.二者本質(zhì)差別
是將順序控制、差錯控制和流量控制等通信功能交由通信子網(wǎng)完成,還是由端系統(tǒng)自己來完成。
二、網(wǎng)際協(xié)議IP
與IP協(xié)議配套使用的有四個協(xié)議:
地址解析協(xié)議ARP(address resolution protocol)
逆地址解析協(xié)議RARP(reverse address resolution protocol)
網(wǎng)際控制報文協(xié)議ICMP(internet control message protocol)
網(wǎng)際組管理協(xié)議IGMP(internet group mangement protocol)
1.虛擬互連網(wǎng)絡(luò)
沒有一種單一的網(wǎng)絡(luò)能夠適應(yīng)所有用戶的需求。
注意:物理層使用的中間設(shè)備叫轉(zhuǎn)發(fā)器,數(shù)據(jù)鏈路層使用的中間設(shè)備叫網(wǎng)橋或橋接器,網(wǎng)絡(luò)層使用的中間設(shè)備叫路由器。在網(wǎng)絡(luò)層使用的中間設(shè)備叫網(wǎng)關(guān)。
利用IP協(xié)議可使網(wǎng)絡(luò)在網(wǎng)絡(luò)層上看起來好像是一個統(tǒng)一的網(wǎng)絡(luò)。使用IP網(wǎng)的好處是:像在一個單個網(wǎng)絡(luò)上通信一樣,看不見互連的各網(wǎng)絡(luò)的具體異構(gòu)細節(jié)(如編址方案、路由選擇協(xié)議,等等)
存儲轉(zhuǎn)發(fā):主機H1先查找自己的路由表,看目的主機是否就在本網(wǎng)絡(luò)上。如是,則不需要經(jīng)過任何路由器而是直接交付,任務(wù)就完成了。如不是,則必須把IIP數(shù)據(jù)報發(fā)送給某個路由器。R1在查找了自己的路由表后,知道應(yīng)當把數(shù)據(jù)報轉(zhuǎn)發(fā)給R2進行間接交付。這樣一直轉(zhuǎn)發(fā)下去,最后由路由器R5知道自己是和H2連接在同一個網(wǎng)絡(luò)上,不需要再使用別的路由器轉(zhuǎn)發(fā)了,于是就把數(shù)據(jù)報直接交付給目的主機H2。
R4和R4之間使用了衛(wèi)星鏈路,R5所連接的是個無線局域網(wǎng)。在R1和R4之間的三個網(wǎng)絡(luò)則可以是任意類型的網(wǎng)絡(luò)。
互聯(lián)網(wǎng)可以由多種異構(gòu)網(wǎng)絡(luò)互連組成。
2.分類的IP地址
Ⅰ、IP地址及其表示方法
IP地址的編址方法共經(jīng)歷了三個歷史階段:分類的IP地址、子網(wǎng)的劃分、構(gòu)成超網(wǎng)。
本節(jié)只討論最基本的分類IP地址,后兩種在后面討論。
分類的IP地址是指:將IP地址劃分為若干個固定類,每一類地址由兩個固定長度的字段組成,第一個是網(wǎng)絡(luò)號(net-id),它標志主機(或路由器)所連接到的網(wǎng)絡(luò)。一個網(wǎng)絡(luò)號在整個因特網(wǎng)范圍內(nèi)必須是唯一的。第二個字段是主機號(host-id),它標志該主機(或路由器),一個主機號在它前面的網(wǎng)絡(luò)號所指明的網(wǎng)絡(luò)范圍內(nèi)必須是唯一的。由此可見,一個IP地址在整個因特網(wǎng)范圍內(nèi)是唯一的。
注意:近年已經(jīng)廣泛使用無分類IP地址進行路由選擇。但許多文獻資料還在使用分類的。
把IP地址劃分為三個類別的原因:各種網(wǎng)絡(luò)差異大,主機有的多有的少,劃分三類能更好滿足不同用戶的要求。單位申請一個IP是獲得了具有同樣網(wǎng)絡(luò)號的一塊地址,其中主機號則由單位自行分配,只要做到該單位管轄范圍內(nèi)無重復(fù)主機號即可。
點分十進制記法(dotted decimal notation):每8位用等效的十進制數(shù)字表示,并且在這些數(shù)字之間加上一個點。
Ⅱ、常用的三種類別的IP地址
IP地址的特點:
①每一個IP地址由網(wǎng)絡(luò)號和主機號兩部分組成,是一種分等級的地址結(jié)構(gòu),這樣好處是:一、IP地址管理結(jié)構(gòu)在分配IP地址時只分配網(wǎng)絡(luò)信號,而主機號由得到該網(wǎng)絡(luò)號的單位自行分配,這樣就方便了IP地址的管理。二、路由器僅根據(jù)目的主機所連接的網(wǎng)絡(luò)號來轉(zhuǎn)發(fā)分組(而不考慮目的主機號),這樣就可以使路由表中的項目數(shù)大幅度減少,從而減小了路由表所占的存儲空間以及查找路由表的時間。
②IP地址是標志一個主機(或路由器)和一條鏈路的接口。當一個主機同時接入到兩個網(wǎng)絡(luò)上時有兩個IP地址,網(wǎng)絡(luò)號必須不同。這樣的主機稱為多歸屬主機。由于一個路由器至少應(yīng)連接到兩個網(wǎng)絡(luò),因此一個路由器至少應(yīng)當有兩個不同的IP地址。
③由于一個網(wǎng)絡(luò)是指具有相同網(wǎng)絡(luò)號的主機的集合,因此用轉(zhuǎn)發(fā)器或網(wǎng)橋連接起來的若干個局域網(wǎng)仍為一個網(wǎng)絡(luò)。
④在IP地址中,所有分配到網(wǎng)絡(luò)號的網(wǎng)絡(luò)是平等的,不管它是局域網(wǎng)還是廣域網(wǎng)。
看上圖,可注意到:
(1)與某個局域網(wǎng)相連接的計算機或路由器的IP地址中的網(wǎng)絡(luò)號都必須是一樣的。
(2)用網(wǎng)橋B(它只在鏈路層工作)互連的局域網(wǎng)仍然是一個局域網(wǎng)。
(3)路由器總是具有兩個或兩個以上的IP地址,即路由器每一接口都有一個不同網(wǎng)絡(luò)號的IP地址。
(4)當兩個路由器直接相連時,這一段連線就構(gòu)成了一種只包含一段線路的特殊“網(wǎng)絡(luò)”(如圖中的Nl,N2和N3)。之所以是“網(wǎng)絡(luò)”是因為它有IP地址。但為節(jié)約IP地址資源,有時不分配IP地址,這樣的網(wǎng)絡(luò)叫做無編號網(wǎng)絡(luò)或無名網(wǎng)絡(luò)。
3.IP地址與硬件地址
IP地址總是放在IP數(shù)據(jù)報的首部,而硬件地址則放在MAC幀的首部。在網(wǎng)絡(luò)層以上使用的是IP地址,而數(shù)據(jù)鏈路層以下使用的是硬件地址。當IP數(shù)據(jù)報放入鏈路層的MAC幀中后,整個的IP數(shù)據(jù)報就成為MAC幀的數(shù)據(jù),因而在數(shù)據(jù)鏈路層看不見數(shù)據(jù)報的IP地址。
強調(diào)指出:
(1)在IP層抽象的互聯(lián)網(wǎng)上只能看到IP數(shù)據(jù)報。雖然經(jīng)過路由器R1、R2兩次轉(zhuǎn)發(fā),但首部中的源地址和目的地址始終不變。數(shù)據(jù)報中間經(jīng)過的兩個路由器的IP地址并不出現(xiàn)在IP數(shù)據(jù)報的首部中。
(2)雖然IP數(shù)據(jù)報首部有源站IP地址,但路由器只根據(jù)目的站的IP地址的網(wǎng)絡(luò)號進行路由選擇。
(3)在局域網(wǎng)的鏈路層,只能看見MAC幀。IP數(shù)據(jù)報被封裝在MAC幀中。MAC幀在不同網(wǎng)絡(luò)上傳送時,其MAC幀首部中的源地址和目的地址要發(fā)生變化,這些變化在IP層是看不見的。
(4)盡管互連在一起的網(wǎng)絡(luò)的硬件地址體系各不相同,但IP層抽象的互聯(lián)網(wǎng)卻屏蔽了下層的復(fù)雜細節(jié)。類似于,我們單機鼠標幾下就能讓電腦完成任務(wù),而實際上電腦執(zhí)行了很多指令。
兩個問題:
①主機或路由器怎樣知道應(yīng)當在MAC幀的首部填入什么樣的硬件地址?
②路由器中的路由表是怎樣得出的?
下節(jié)指出
4.地址解析協(xié)議ARP和逆地址解析協(xié)議RARP
Ⅰ、產(chǎn)生背景
逆地址協(xié)議RARP在過去起到很大作用,但現(xiàn)在DHCP協(xié)議已包含了RARP協(xié)議的功能。因此沒有人再使用單獨的RARP協(xié)議了。它作用是知道自己硬件地址的主機能夠通過RARP協(xié)議找出其IP地址。
網(wǎng)絡(luò)層使用的是IP地址,但是數(shù)據(jù)鏈路上傳送幀時,使用的是網(wǎng)絡(luò)的硬件地址。但這兩個地址由于格式不同不存在簡單映射關(guān)系。另外,一個網(wǎng)絡(luò)上有新的主機加進來,也有撤走主機,更換網(wǎng)絡(luò)適配器也會使主機的硬件地址改變。地址解析協(xié)議就是在主機ARP高速緩存中應(yīng)存放一個從IP地址到硬件地址的映射表,并且還要經(jīng)常動態(tài)更新(新增或超時刪除)。
Ⅱ、地址解析協(xié)議ARP的工作原理
ARP高速緩存(ARP chche):里面有本局域網(wǎng)上的各主機和路由器的IP地址到硬件地址的映射表,這都是主機目前知道的一些地址。
主機是如何知道這些地址的?
例如:一局域網(wǎng)中,主機A要向主機B發(fā)送IP數(shù)據(jù)報,就在ARP高速緩存中看是否有B的IP地址,有,就在ARP高速緩存中查出其對應(yīng)的硬件地址,再把這個硬件地址寫入MAC幀,然后通過局域網(wǎng)把該MAC幀發(fā)往此硬件地址。
可能找不到B的IP地址的項目,這有可能是因為B剛?cè)刖W(wǎng),也可能是A剛加電所以其高速緩存還是空的。這樣,A就自動運行ARP,然后按下列步驟找到B的硬件地址。
()ARP進程在本局域網(wǎng)上廣播發(fā)送一個請求分組,例子是A廣播發(fā)送ARP請求分組示意圖。
(2)在本局域網(wǎng)上的所有主機上運行的ARP進程都收到此ARP請求分組
(3)主機B在ARP請求分組中見到自己的IP地址,就向主機A發(fā)送ARP相應(yīng)分組,并寫入自己的硬件地址。其余的所有主機都不理睬這個ARP請求分組。注意:雖然ARP請求是廣播發(fā)送的,但ARP響應(yīng)分組是普通的單播,即從一個源地址發(fā)送到一個目的地址。
(4)主機A收到主機B的ARP響應(yīng)分組后,就在其ARP高速緩存中寫入主機B的IP地址到硬件地址的映射。
Ⅲ、ARP高速緩存的重要性
A向B發(fā)送數(shù)據(jù)報時,很可能以后不久主機B還要向A發(fā)送數(shù)據(jù)報,因而主機B也可能向A發(fā)送ARP分組。為了減少網(wǎng)絡(luò)上的通信量,主機A在發(fā)送其ARP請求分組時,就把自己的IP地址到硬件地址的映射寫入ARP請求分組,當主機B收到A的請求分組時,就把主機A的這一地址映射寫入到主機B自己的ARP高速緩存中。以后B向A發(fā)送數(shù)據(jù)報時就很方便了。
可見ARP高速緩存非常有用,如果不用,那么每一次通信,就要用廣播方式發(fā)送ARP請求分組,這樣使網(wǎng)絡(luò)上的通信量大大增加。
ARP把保存在高速緩存中的每一個映射地址項目都設(shè)置生存空間。因為有時主機會變。
Ⅳ、不同局域網(wǎng)上如何通信
ARP是解路決同一個局域網(wǎng)上的主機或路由器的IP地址和硬件地址的映射問題。不在同一個局域網(wǎng)上的無法解析硬件地址,它們通過路由器傳送。例如不同局域網(wǎng)上的: ??H1→R1→R2→H2。主機H1要把路由器R1的IP地址IP3解析為硬件地址HA3,以便能夠把IP數(shù)據(jù)報傳送到路由器R1。然后R1從轉(zhuǎn)發(fā)表找出R2,同時使用ARP解析出R2的硬件地址HA5。于是IP數(shù)據(jù)報按照硬件地址HA5轉(zhuǎn)發(fā)到路由器R2。路由器R2在轉(zhuǎn)發(fā)這個IP數(shù)據(jù)報時用類似方法解析出H2的硬件地址HA2。
主機的用戶對地址解析過程是不知道的。只要主機或路由器要和本網(wǎng)絡(luò)上的另一個已知IP地址的主機或路由器進行通信,ARP協(xié)議就自動把這個IP地址解析為鏈路層所需要的硬件地址。
Ⅴ、使用ARP的四種典型情況:
①發(fā)送方是主機,把IP數(shù)據(jù)包發(fā)送到本網(wǎng)絡(luò)上的另一個主機。這時用ARP找到目的主機的硬件MAC地址。 ?
②發(fā)送方是主機,要把IP數(shù)據(jù)報發(fā)送到另一個網(wǎng)絡(luò)上的主機。這時用ARP找到本網(wǎng)絡(luò)上的一個路由器(網(wǎng)關(guān))的硬件MAC地址。剩下的工作由這個路由器來完成。
③發(fā)送方是路由器,要把IP數(shù)據(jù)報轉(zhuǎn)發(fā)到本網(wǎng)絡(luò)上的一個主機。這時用ARP找到目的主機的硬件MAC地址
④發(fā)送方是路由器,要把IP數(shù)據(jù)報轉(zhuǎn)發(fā)到另一個網(wǎng)絡(luò)的一個主機。這時用ARP找到本網(wǎng)絡(luò)上的一個路由器(網(wǎng)關(guān))的硬件地址。剩下的工作有這個路由器來完成。
Ⅵ、網(wǎng)絡(luò)鏈路中是按照硬件地址找到目的主機的,為什么我們不直接用硬件地址通信,而要用IP地址呢?
這是因為要使異構(gòu)網(wǎng)絡(luò)相互通信就必須進行非常復(fù)雜的硬件地址轉(zhuǎn)換工作,這幾乎不可能。但IP地址可以,因為連接到因特網(wǎng)的主機只需擁有一個統(tǒng)一的IP地址,它們之間的通信就像連接在同一個網(wǎng)絡(luò)那樣簡單方便。
5.IP數(shù)據(jù)報的格式
Ⅰ、IP數(shù)據(jù)報首部的固定部分中的各字段
①版本
占4位,指IP協(xié)議的版本。通信雙方使用的IP協(xié)議版本必須一致,廣泛用4(即IPv4),后來用6。
②首部長度
占4位,可表示最大十進制數(shù)值為15,數(shù)的單位是2位字(1個32位字長是4字節(jié))。長度為1111(即十進制15)時,首部長度就達到最大值60字節(jié)。首部長度不是4字節(jié)整數(shù)倍時,必須用最后的填充字段加以填充,這樣在實現(xiàn)IP協(xié)議時方便。限制為60字節(jié)時可能不夠用但減少了開銷。最常用的是20字節(jié)。
③區(qū)分服務(wù)
占8位,用來獲得更好的服務(wù)。只有在區(qū)分服務(wù)時,才起作用,一般下不用。
④總長度
占16位,指首部和數(shù)據(jù)之和的長度,單位字節(jié)。數(shù)據(jù)報最大長度為2^16-1字節(jié)。
IP層下面數(shù)據(jù)鏈路層有自己的幀格式,規(guī)定了最大傳送單元MTU。當一個IP數(shù)據(jù)報封裝成鏈路層的幀時,此數(shù)據(jù)報的總長度(首部加數(shù)據(jù)部分)不能超過MTU值。
雖然長的數(shù)據(jù)報會使傳輸效率提高,但是由于以太網(wǎng)普遍使用,所以很少超過1500字節(jié)的。最小長度:576字節(jié)(規(guī)定)。大于MTU時,要分片才能傳送,這時“總長度”字段指分片后的長度。
⑤標識(identification)
占16位。每產(chǎn)生一個數(shù)據(jù)報,計數(shù)器就加1,并將此值賦給標識字段。但這個標識不是序號,因為IP是無連接服務(wù),數(shù)據(jù)報不存在按序接收的問題。超過MTU時,這個標識字段的值就被復(fù)制到所有的數(shù)據(jù)報片的標識字段中。想通的標識字段的值使分片后的各數(shù)據(jù)報片最后能正確地重裝成為原來的數(shù)據(jù)報。
⑥標志(flag)
占3位,但目前只有2位有意義。最低位記為MF(more fregment),為1表示后面“還有分片”的數(shù)據(jù)報,為0表示這已是若干數(shù)據(jù)報片中的最后一個。中間一位記為DF(don't fragment),不能分片,只有為0時才允許分片。
⑦片偏移
占13位,它是較長的分組在分片后,某片在原分組中的相對位置。也就是,相對于用戶數(shù)據(jù)字段的起點,該片從何處開始,片偏移以8個字節(jié)為偏移單位。每個分片長度一定是8字節(jié)(64位)的整數(shù)倍。
⑧生存時間
占8位。TTL(time to live),表明是數(shù)據(jù)報在網(wǎng)絡(luò)中的壽命。由發(fā)出的數(shù)據(jù)報的源點設(shè)置這個字段,其目的是防止無法交付的數(shù)據(jù)報無限制地在因特網(wǎng)中兜圈子。起初是以秒做單位,每經(jīng)過一個路由器,就減去時間,在路由器消耗的時間小于1s時,就把TTL值減1,為0,就丟棄這個數(shù)據(jù)幀。
后來,路由器處理時間縮短了,遠小于1s,后來就把它功能改為“跳數(shù)限制”,路由器在轉(zhuǎn)發(fā)數(shù)據(jù)報前就把TTL值減1,若減小到零,就丟棄這個數(shù)據(jù)報,不再轉(zhuǎn)發(fā)。單位不是秒,而是跳數(shù)。所以意義是指明數(shù)據(jù)報在因特網(wǎng)中至多可經(jīng)過多少個路由器。經(jīng)過的路由器的最大數(shù)值是255。若把TTL初始值定為1,表示只能在本局域網(wǎng)中傳送。
⑨協(xié)議
占8位。指出數(shù)據(jù)報所攜帶的數(shù)據(jù)使用何種協(xié)議,以便使目的主機的IP層知道應(yīng)將數(shù)據(jù)部分上交給哪個處理過程。
⑩首部檢驗和
占16位。它只能檢驗數(shù)據(jù)報的首部,但不包括數(shù)據(jù)部分。每經(jīng)過路由器,路由器都要重新計算首部檢驗和(如一些字段,如生存時間、標志、片偏移等都會變化)。為簡化,不使用CRC檢驗碼。使用方法見圖。
注:反碼算術(shù)求和,是從低位到高位計算,最高位相加后產(chǎn)生進位,則最后結(jié)果要加1。
?源地址 ?占32位
?目的地址 ? 占32位
Ⅱ、IP數(shù)據(jù)報首部的可變部分
用來排錯、測量等,內(nèi)容豐富。中間不需要分隔符,最后用0的填充字段補齊成為4字節(jié)的整數(shù)倍。這樣增加了開銷,實際上很少用,新IP版本把IP數(shù)據(jù)報的首部長度做成固定的。
6.IP層轉(zhuǎn)發(fā)分組的流程
簡化圖,不用關(guān)心某個網(wǎng)絡(luò)內(nèi)部的具體拓撲以及連接在該網(wǎng)絡(luò)上有多少臺計算機,它是從一個路由器轉(zhuǎn)發(fā)到下一個路由器。
特定主機路由:雖然因特網(wǎng)所有的分組轉(zhuǎn)發(fā)都是基于目的主機所在的網(wǎng)絡(luò),但在大多數(shù)情況下有特例,即對特定的目的主機指明一個路由。
默認主機路由(default route):可減少路由表所占用的空間和搜素路由表所用的時間,這種轉(zhuǎn)發(fā)方式在一個網(wǎng)絡(luò)只有很少的對外連接是很有用的。
待轉(zhuǎn)發(fā)的數(shù)據(jù)報怎樣找到下一跳路由器?
當路由器收到一個待轉(zhuǎn)發(fā)的數(shù)據(jù)報,在從路由表得出下一跳路由器的IP地址后,不是把這個地址填入IP數(shù)據(jù)報,而是送交下層的網(wǎng)絡(luò)接口軟件。網(wǎng)絡(luò)接口軟件負責(zé)把下一跳路由器的IP地址轉(zhuǎn)換成硬件地址(使用ARP),并將此硬件地址放在鏈路層的MAC幀的首部,然后根據(jù)這個硬件地址找到下一跳路由器。
分組轉(zhuǎn)發(fā)的算法:
①從數(shù)據(jù)報的首部提取目的主機的IP地址D,計算出目的主機的網(wǎng)絡(luò)地址N。
(將IP數(shù)據(jù)報中目的主機的IP地址和路由表上的子網(wǎng)掩碼進行&運算,就可以得出網(wǎng)絡(luò)地址N)
②若N就是與此路由器直接相連的某個網(wǎng)絡(luò)的網(wǎng)絡(luò)地址。則直接進行交付,不需要經(jīng)過其他路由器,而是直接將IP數(shù)據(jù)報交付給目的主機。
(注意,直接交付時,路由器需要將目的主機地址D轉(zhuǎn)換為具體的硬件地址,把數(shù)據(jù)報封裝在MAC幀,在發(fā)送此幀。)
若N不是與此路由器直接相連的網(wǎng)絡(luò),就進行間接交付。執(zhí)行3或執(zhí)行4
③若路由表中有目的地址為D的特定主機路由,則把數(shù)據(jù)報傳送給路由表中所指明的下一跳路由器;否則,執(zhí)行4。
④若路由表中有到達網(wǎng)絡(luò)N的路由,則把數(shù)據(jù)報傳送給路由表中所指明的下一跳路由器;否則,執(zhí)行5。
⑤如果3和4都沒能將IP數(shù)據(jù)報轉(zhuǎn)發(fā)出去,若路由表中有一個默認路由,則把數(shù)據(jù)報傳送給路由表中所指明的默認路由器;否則,執(zhí)行6。
⑥報告轉(zhuǎn)發(fā)分組出錯。
注:未涉及路由表一開始如何建立的以及路由表中的內(nèi)容如何進行更新
三、劃分子網(wǎng)和構(gòu)造超網(wǎng)
1.劃分子網(wǎng)
Ⅰ、從兩級IP地址到三級IP地址
兩級IP地址缺點:①地址空間利用率有時低;②給每一個物理網(wǎng)絡(luò)分配一個網(wǎng)絡(luò)號會使路由表變得太大因而使網(wǎng)絡(luò)性能變壞;③兩級IP地址不夠靈活。
劃分子網(wǎng)基本思路:①一個擁有很多物理網(wǎng)絡(luò)的單位,可以將所屬的物理網(wǎng)絡(luò)劃分為多個子網(wǎng),本單位以外看不到多少個子網(wǎng),對外界來說表現(xiàn)為一個網(wǎng)絡(luò)。②劃分子網(wǎng)的方法是從網(wǎng)絡(luò)的主機號借用若干位作為子網(wǎng)號,當然主機號也就相應(yīng)減少了同樣的位數(shù),三級IP地址為:<網(wǎng)絡(luò)號>,<子網(wǎng)號>,<主機號>。③凡是從其他網(wǎng)絡(luò)發(fā)送給本單位某個主機的IP數(shù)據(jù)報,仍然是根據(jù)IP數(shù)據(jù)報的目的網(wǎng)絡(luò)號找到連接在本單位網(wǎng)絡(luò)上的路由器。但此路由器在收到IP數(shù)據(jù)報后,再按目的網(wǎng)絡(luò)號和子網(wǎng)號找到目的子網(wǎng),把IP數(shù)據(jù)報交付給目的主機。
舉例如圖:
Ⅱ、子網(wǎng)掩碼
假定有一個數(shù)據(jù)報(目的地址是145.13.3.10)已經(jīng)到達了路由器R1,那么這路由器如何把它轉(zhuǎn)發(fā)到子網(wǎng)145.13.3.0??
由于IP地址本身以及數(shù)據(jù)報首部都沒有包含任何有關(guān)子網(wǎng)劃分的信息,所以用到了子網(wǎng)掩碼(subnet mask)
使用子網(wǎng)掩碼好處:不管網(wǎng)絡(luò)有沒有劃分子網(wǎng),只要把子網(wǎng)掩碼和IP地址進行逐位的“與”運算(AND),就立即得出網(wǎng)絡(luò)地址來。這樣在路由器在處理到來得分組時就可采用同樣的算法。
不劃分子網(wǎng)時,既然沒有子網(wǎng),又為什么要使用子網(wǎng)掩碼?
這是為了便于查找路由表,在路由器的路由表中必須有子網(wǎng)掩碼這一欄,如果不劃分子網(wǎng),那么子網(wǎng)掩碼就是默認子網(wǎng)掩碼。若一個路由器連接在兩個子網(wǎng)上就擁有兩個網(wǎng)絡(luò)地址和兩個子網(wǎng)掩碼。
上表結(jié)論:劃分子網(wǎng)增加了靈活性,但卻減少了能夠連接在網(wǎng)絡(luò)上的主機總數(shù)。若用較少位數(shù)的子網(wǎng)號,則每一個子網(wǎng)上可連接的主機數(shù)就較多。反之,若用較多位數(shù)的子網(wǎng)號,則連接的主機數(shù)少。
同樣的IP地址和不同的子網(wǎng)掩碼可以得出相同的網(wǎng)絡(luò)地址。但是,不同地掩碼效果是不同的。
2.使用子網(wǎng)時分組的轉(zhuǎn)發(fā)
劃分子網(wǎng)后,路由表包括:目的網(wǎng)絡(luò)地址、子網(wǎng)掩碼、下一跳地址
劃分子網(wǎng)下,路由表轉(zhuǎn)發(fā)分組的算法:
①從收到的數(shù)據(jù)報的首部提取目的IP地址D
②先判斷是否直接交付,對路由器直接相連的網(wǎng)絡(luò)逐個進行檢查:用各網(wǎng)絡(luò)的子網(wǎng)掩碼和D逐位相“與”(AND操作),看結(jié)果是否和相應(yīng)的網(wǎng)絡(luò)地址匹配。若匹配,則把分組進行直接交付(當然還要把D轉(zhuǎn)換成物理地址,把數(shù)據(jù)報封裝成幀發(fā)送出去),轉(zhuǎn)發(fā)任務(wù)結(jié)束,否則就是間接交付,執(zhí)行③。
③若路由表中有目的地址為D的特定主機路由,則把數(shù)據(jù)報傳送給路由表中所指明的下一跳路由器。否則,執(zhí)行④。
④對路由表中的每一行(目的網(wǎng)絡(luò)地址、子網(wǎng)掩碼、下一跳地址),用其中的子網(wǎng)掩碼和D逐位相“與”(AND操作),其結(jié)果為N。若N與該行的目的網(wǎng)絡(luò)地址匹配,則把數(shù)據(jù)報傳送給該行指明的下一跳路由器。否則,執(zhí)行⑤。
⑤若有默認路由,則把數(shù)據(jù)報傳送給路由表中所指明的默認路由器。否則,報告轉(zhuǎn)發(fā)分組出錯。
3.無分類編址CIDR(構(gòu)造超網(wǎng))
Ⅰ、網(wǎng)絡(luò)前綴
劃分子網(wǎng)出現(xiàn)了問題:①B類地址快要分配完畢②因特網(wǎng)主干網(wǎng)上的路由表中的項目數(shù)急劇增長③整個IPv4的地址空間最終將全部耗盡。現(xiàn)用網(wǎng)絡(luò)前綴解決前兩個問題。
在變長子網(wǎng)掩碼VLSM(variable length subnet mask)基礎(chǔ)上研究出了無編址方法,正式名字是無分類域間路由選擇CIDR(classless inter-domain routing)。
CIDR最主要特點:①消除了傳統(tǒng)的A類、B類、C類地址以及劃分子網(wǎng)的概念,因而可有效分配IPv4的地址空間。記法是:<網(wǎng)絡(luò)前綴>,<主機號>。②CIDR把網(wǎng)絡(luò)前綴都相同的連續(xù)IP地址組成一個“CIDR地址塊”。例如:
主機號是全0和全1的地址一般不用,這個地址塊共有2^12個地址,我們可以用地址塊中最小地址和網(wǎng)絡(luò)前綴的位數(shù)指明這個地址塊,于是記為128.14.32.0/20。不需要指出起始地址時,也可記為“/20地址塊”。
/20地址塊的掩碼是11111111 ? 11111111 ? 11110000 ? 00000000(20個連續(xù)的1),斜線記法中,斜線后面的數(shù)字就是地址掩碼中1的個數(shù)。通過斜線記法,可知這分地址塊的最小地址和最大地址。
由于一個CIDR地址塊中有很多地址,所以在路由表中就利用CIDR地址塊來查找目的網(wǎng)絡(luò)。這種地址的聚合常稱為路由聚合(route aggregation,也稱為構(gòu)成超網(wǎng)supermetting),它使得路由表中的一個項目可以表示原來傳統(tǒng)分類地址的很多個路由。
下面例子可以看出,把四個系的路由聚合為大學(xué)的一個路由,是將網(wǎng)絡(luò)前綴縮短。網(wǎng)絡(luò)前綴越短,其地址塊所包含的地址數(shù)就越多。
Ⅱ、最長前綴匹配
在使用CIDR時,由于采用了網(wǎng)絡(luò)前綴這種記法,IP地址由網(wǎng)絡(luò)前綴和主機號這兩部分組成。所以路由項目就要有網(wǎng)絡(luò)前綴和下一跳地址。
查找路由表時可能得到不止一個匹配結(jié)果,我們應(yīng)當從匹配結(jié)果中選擇具有最長網(wǎng)絡(luò)前綴的路由。這叫做最長前綴匹配(longest-prefix matching)。這是因為網(wǎng)絡(luò)前綴越長,其地址塊就越小,因而路由選擇就越具體。
另外,要把分配出去的IP地址收回再重新分配是十分困難的事,因為這牽涉到很多正在工作的主機必須改變其IP地址。盡管這樣,CIDR的使用已經(jīng)推遲了IP地址將要耗盡的日期。
Ⅲ、使用二叉線索查找路由表
使用CIDR后,由于要尋找最長前綴匹配,使路由表的查找過程變得更加復(fù)雜了。當路由表的項目數(shù)很大時,怎樣設(shè)法減小路由表的查找時間就成為一個非常重要的問題。
二叉線索只是提供了一種可以快速在路由表中找到匹配的葉節(jié)點的機制,但這是否和網(wǎng)絡(luò)前綴匹配,還要和子網(wǎng)掩碼進行一次邏輯與的運算。為提高二叉線索的查找速度,廣泛使用了各種壓縮技術(shù),例如在上圖二叉樹右側(cè),前面4位都是1011,因此只要一個地址的前4位是1011,就可以跳過前面4位而直接從第5位開始比較,這樣就減少了查找時間。即使壓縮計算很大,但是可提高查找速率還是值得的。
四、網(wǎng)際控制報文協(xié)議ICMP
ICMP報文的種類
ICMP報文有兩種:即ICMP 差錯報文和ICMP詢問報文
ICMP差錯報文有五種,即:
①終點不到達:當路由器或主機不能交付數(shù)據(jù)報時就向源點發(fā)送終點不可達報文
②源點抑制:當路由器或主機由于堵塞而丟棄數(shù)據(jù)報時,就向源點發(fā)送源點抑制報文,使源點知道應(yīng)當把數(shù)據(jù)報的發(fā)送速率放慢。
③時間超過:當路由器收到生存時間為零的數(shù)據(jù)報時,除丟棄該數(shù)據(jù)報外,還要向源點發(fā)送時間超過報文。當終點在預(yù)先規(guī)定內(nèi)不能收到一個數(shù)據(jù)報的全部數(shù)據(jù)報片時,就把已收到的數(shù)據(jù)報片廢棄,并向源點發(fā)送時間超過報文。
④參數(shù)問題:當路由器或目的主機收到的數(shù)據(jù)報的首部中有的字段的值不正確時,就丟棄該數(shù)據(jù)報,并向源點發(fā)送參數(shù)問題報文。
⑤改變路由(重定向):路由器把改變路由器報文發(fā)送給主機,讓主機知道下次應(yīng)將數(shù)據(jù)報發(fā)送給另外的路由器(可通過更好的路由)。當主機發(fā)送數(shù)據(jù)報時,首先查找主機自己的路由表,看應(yīng)從哪個接口把數(shù)據(jù)報發(fā)送出去,為了效率會有一個默認路由器的IP地址。發(fā)現(xiàn)這個默認路由器的IP地址不對時,就用改變路由報文把這情況告訴主機,這樣主機就在路由表增加一個項目:到某某目的地址應(yīng)經(jīng)過路由器R(而不是默認路由器)。
所有ICMP差錯報告報文中的數(shù)字都具有同樣的格式,把收到的需要進行差錯報告的IP數(shù)據(jù)報的首部和數(shù)據(jù)字段的前8個字節(jié)提取出來,作為ICMP報文的數(shù)據(jù)字段。再加上相應(yīng)的ICMP的差錯報告的前8個字節(jié),就構(gòu)成了ICMP差錯報告報文。提取收到的數(shù)據(jù)報的數(shù)據(jù)字段的前8個字節(jié)是為了得到運輸層的端口號以及運輸層報文的發(fā)送序號。這些信息對源點通知高層協(xié)議是有用的(端口作用在下一章介紹)。整個ICMP報文作為IP數(shù)據(jù)報的數(shù)據(jù)字段發(fā)送給源點。
不應(yīng)發(fā)送ICMP差錯報告報文的幾種情況:
①對ICMP差錯報告報文不再發(fā)送ICMP差錯報告報文
②對每一個分片的數(shù)據(jù)報片的所有后續(xù)數(shù)據(jù)報片都不發(fā)送ICMP差錯報告報文
③對具有多播地址的數(shù)據(jù)報都不發(fā)送ICMP差錯報告報文
④對具有特殊地址的數(shù)據(jù)報不發(fā)送ICMP差錯報告報文
常用的ICMP詢問報告有兩種:
①回送請求和回答
ICMP回送請求報文是主機或路由器向一個特定的目的主機發(fā)出的詢問。收到此報文的主機必須給源主機或路由器發(fā)送ICMP回送回答報文。這種詢問報文用來測試目的站是否可達以及了解其有關(guān)狀態(tài)。
②時間戳請求和回答
ICMP時間戳請求報文是請某個主機或路由器回答當前的日期和時間。可用來進行時鐘同步和測量時間。