網(wǎng)絡(luò)層提供的兩種服務(wù)
在計(jì)算機(jī)網(wǎng)絡(luò)領(lǐng)域,網(wǎng)絡(luò)層應(yīng)該向運(yùn)輸層提供怎樣的服務(wù)(面向連接還是無連接)曾引起了長期的爭論瓮床,爭論焦點(diǎn)的實(shí)質(zhì)就是:在計(jì)算機(jī)通信中,可靠交付應(yīng)當(dāng)由誰來負(fù)責(zé)产镐?是網(wǎng)絡(luò)還是端系統(tǒng)
電信網(wǎng)的成功經(jīng)驗(yàn)讓網(wǎng)絡(luò)負(fù)責(zé)可靠交付
- 面向連接的通信方式
- 建立虛電路(Virtual Circuit)隘庄,以保證雙方通信所需的一切網(wǎng)絡(luò)資源
- 如果再使用可靠傳輸?shù)木W(wǎng)絡(luò)協(xié)議,就可使所發(fā)送的分組無差錯(cuò)按序到達(dá)終點(diǎn)
虛電路是邏輯連接
只是一條邏輯上的連接癣亚,分組都沿著這條邏輯連接按照存儲(chǔ)轉(zhuǎn)發(fā)方式傳送丑掺,并不是真正建立了一條物理連接。
請(qǐng)注意述雾,電路交換的電話通信是先建立了一條真正的連接街州。因此分組交換的虛連接和電路交換的連接只是類似,但并不完全一樣玻孟。
因特網(wǎng)采用的設(shè)計(jì)思路
- 網(wǎng)絡(luò)層向上只提供簡單靈活的唆缴、無連接的、盡最大努力交付的數(shù)據(jù)報(bào)服務(wù)
- 網(wǎng)絡(luò)在發(fā)送分組時(shí)不需要先建立連接黍翎。每一個(gè)分組(即IP數(shù)據(jù)報(bào))獨(dú)立發(fā)送面徽,與其前后的分組無關(guān)(不進(jìn)行編號(hào))
- 網(wǎng)絡(luò)層不提供服務(wù)質(zhì)量的承諾,即所傳輸?shù)姆纸M可能出錯(cuò)玩敏、丟失斗忌、重復(fù)和失序(不按序到達(dá)終點(diǎn)),當(dāng)然也不保證分組傳輸?shù)臅r(shí)限
盡最大努力交付的好處
- 由于傳輸網(wǎng)絡(luò)不提供端到端的可靠傳輸服務(wù)旺聚,這就使網(wǎng)絡(luò)中的路由器可以做得比較簡單织阳,而且價(jià)格低廉(與電信網(wǎng)的交換機(jī)相比較)
- 如果主機(jī)(端系統(tǒng))中的進(jìn)程之間的通信需要是可靠的,那么就由網(wǎng)絡(luò)的主機(jī)中的運(yùn)輸層來負(fù)責(zé)(包括差錯(cuò)處理砰粹,流量控制等)
- 采用這種設(shè)計(jì)思路的好處是:網(wǎng)絡(luò)的造價(jià)大大降低唧躲,運(yùn)行方式靈活造挽,能夠適應(yīng)多種應(yīng)用
- 因特網(wǎng)能夠發(fā)展到今日的規(guī)模,充分證明了當(dāng)初采用這種設(shè)計(jì)思路的正確性
數(shù)據(jù)報(bào)服務(wù)
網(wǎng)際協(xié)議IP
網(wǎng)際協(xié)議IP是TCP/IP體系中兩個(gè)最主要的協(xié)議之一弄痹,與IP協(xié)議配套使用的還有三個(gè)協(xié)議
- 地址解析協(xié)議ARP (Address Resolution Protocol)
- 網(wǎng)際控制報(bào)文協(xié)議ICMP(Internet Control Message Protocol)
- 網(wǎng)際組管理協(xié)議IGMP(Internet Group Management Protocol)
虛擬互連網(wǎng)絡(luò)
互連在一起的網(wǎng)絡(luò)要進(jìn)行通信饭入,會(huì)遇到許多問題要解決
網(wǎng)絡(luò)互連要使用一些中間設(shè)備
中間設(shè)備又稱為中間系統(tǒng)或中繼系統(tǒng)
- 物理層中繼系統(tǒng) 轉(zhuǎn)發(fā)器
- 數(shù)據(jù)鏈路層中繼系統(tǒng) 網(wǎng)橋或橋接器
- 網(wǎng)絡(luò)層中繼系統(tǒng) 路由器
- 網(wǎng)橋和路由器的混合物 橋路由
- 網(wǎng)絡(luò)層以上的中繼系統(tǒng) 網(wǎng)關(guān)
網(wǎng)絡(luò)互連使用路由器
- 當(dāng)中繼系統(tǒng)是轉(zhuǎn)發(fā)器或網(wǎng)橋時(shí),一般并不稱之為網(wǎng)絡(luò)互連肛真,因?yàn)檫@僅僅是把一個(gè)網(wǎng)絡(luò)擴(kuò)大了塑娇,而這仍然是一個(gè)網(wǎng)絡(luò)愤兵。
- 網(wǎng)關(guān)由于比較復(fù)雜,目前使用的較少
- 互聯(lián)網(wǎng)都是指用路由器進(jìn)行互連的網(wǎng)絡(luò)
- 由于歷史原因,許多有關(guān)TCP/IP的文獻(xiàn)將網(wǎng)絡(luò)層使用的路由器稱為網(wǎng)關(guān)
虛擬互連網(wǎng)絡(luò)的意義
- 所謂虛擬互連網(wǎng)絡(luò)也就是邏輯互連網(wǎng)絡(luò)祝峻,它的意思就是互連起來的各種物理網(wǎng)絡(luò)的異構(gòu)性本來是客觀存在的诽凌,但是我們利用IP協(xié)議就可以使這些性能各異的網(wǎng)絡(luò)從用戶看起來好像是一個(gè)統(tǒng)一的網(wǎng)絡(luò)洒缀。
- 使用IP協(xié)議的虛擬互連網(wǎng)絡(luò)可簡稱為IP網(wǎng)
- 使用虛擬互聯(lián)網(wǎng)絡(luò)的好處是:當(dāng)互聯(lián)網(wǎng)上的主機(jī)進(jìn)行通信時(shí)米死,就好像在一個(gè)網(wǎng)絡(luò)上通信一樣,而看不見互連的各具體網(wǎng)絡(luò)異構(gòu)細(xì)節(jié)
如果我們只從網(wǎng)絡(luò)層考慮問題趟卸,那么IP數(shù)據(jù)報(bào)就可以想象是在網(wǎng)絡(luò)層中傳送蹄葱。
分類的IP地址
IP地址及其表示方法
- 我們把整個(gè)因特網(wǎng)看成為一個(gè)單一的抽象的網(wǎng)絡(luò)。IP地址就是給每個(gè)連接在因特網(wǎng)上的主機(jī)(或路由器)分配一個(gè)在全世界范圍是唯一的32位的標(biāo)識(shí)符锄列。
- IP地址現(xiàn)在由因特網(wǎng)名字與號(hào)碼指派公司進(jìn)行分配
IP地址的編制方法
- 分類的IP地址图云,這是最基本的編制方法,在1981年就通過了相應(yīng)的標(biāo)準(zhǔn)協(xié)議
- 子網(wǎng)的劃分邻邮,這是對(duì)最基本的編制方法的改進(jìn)琼稻,其標(biāo)準(zhǔn)[RFC 950]在1985年通過的
- 構(gòu)成超網(wǎng),這是比較新的無分類編制方法饶囚。1993年后很快就得到推廣應(yīng)用
分類IP地址
每一類地址都由兩個(gè)固定長度的字段組成,其中一個(gè) 字段是網(wǎng)絡(luò)號(hào) net-id鸠补,它標(biāo)志主機(jī)(或路由器)所連接到的網(wǎng)絡(luò)萝风,而另一個(gè)字段則是**主機(jī)號(hào) host-id
**,它標(biāo)志該主機(jī)(或路由器)
可以記為
IP地址中的網(wǎng)絡(luò)號(hào)字段和主機(jī)號(hào)字段
- A類紫岩、B類规惰、C類地址的網(wǎng)絡(luò)號(hào)字段分別為1,2泉蝌,3字節(jié)長歇万,而在網(wǎng)絡(luò)號(hào)字段的最前面有1-3位的類別位,其數(shù)值分別規(guī)定為0勋陪,10贪磺,和110。
- D類地址用于多播(一對(duì)多通信)
- E類地址保留為以后用
點(diǎn)分十進(jìn)制記法
常用的三種類別的IP地址
IP地址的一些重要特點(diǎn)
- IP地址是一種分等級(jí)的地址結(jié)構(gòu)诅愚,分兩級(jí)的好處是
- IP地址管理機(jī)構(gòu)在分配IP地址時(shí)只分配網(wǎng)絡(luò)號(hào)寒锚,而剩下的主機(jī)號(hào)則由得到該網(wǎng)絡(luò)號(hào)的單位自行分配。這樣就方便的IP地址的管理
- 路由器僅根據(jù)目的主機(jī)所連接的網(wǎng)絡(luò)號(hào)來轉(zhuǎn)發(fā)分組(而不考慮目的主機(jī)號(hào)),這樣就可以使路由表中的項(xiàng)目大幅度減小刹前,從而減少了路由表所占的存儲(chǔ)空間泳赋。
- 實(shí)際上IP地址是標(biāo)志一個(gè)主機(jī)(或路由器)和一條鏈路的接口
- 當(dāng)一個(gè)主機(jī)同時(shí)連接到兩個(gè)網(wǎng)絡(luò)上時(shí),該主機(jī)就必須同時(shí)具有兩個(gè)相應(yīng)的IP地址喇喉,其網(wǎng)絡(luò)號(hào)net-id必須是不同的祖今。這種主機(jī)稱為多歸屬主機(jī)
- 由于一個(gè)路由器至少應(yīng)當(dāng)連接到兩個(gè)網(wǎng)絡(luò)(這樣它才能將IP數(shù)據(jù)報(bào)從一個(gè)網(wǎng)絡(luò)轉(zhuǎn)發(fā)到另一個(gè)網(wǎng)絡(luò)),因此一個(gè)路由器至少應(yīng)當(dāng)有兩個(gè)不同的IP地址
- 用轉(zhuǎn)發(fā)器或網(wǎng)橋連接起來的若干個(gè)局域網(wǎng)仍為一個(gè)網(wǎng)絡(luò)拣技,因此這些局域網(wǎng)都具有相同的網(wǎng)絡(luò)號(hào) net-id
- 所有分配到網(wǎng)絡(luò)號(hào)net-id的網(wǎng)絡(luò)千诬,范圍很小的局域網(wǎng),還是可能覆蓋很大地理范圍的廣域網(wǎng)过咬,都是平等的大渤。
觀察上圖
- 在同一局域網(wǎng)上的主機(jī)或路由器的IP地址中的網(wǎng)絡(luò)號(hào)必須一樣
- 路由器總是具有兩個(gè)或兩個(gè)以上的IP地址,路由器的每一個(gè)接口都有一個(gè)不同網(wǎng)絡(luò)號(hào)的IP地址
- 兩個(gè)路由器直接相連的接口處掸绞,可指明也可不指名IP地址泵三。如指明IP地址,則這一段連線就構(gòu)成了一種只包含一段線路的特殊網(wǎng)絡(luò)衔掸,現(xiàn)在常不指名IP地址
IP地址與硬件地址
比較重要的一點(diǎn)是要區(qū)別IP地址與硬件地址的區(qū)別
從層次的角度來看烫幕,物理地址是數(shù)據(jù)鏈路層和物理層使用的地址,而IP地址是網(wǎng)絡(luò)層和以上使用的地址敞映,是一種邏輯地址(稱IP地址是邏輯地址是因?yàn)镮P地址是用 軟件實(shí)現(xiàn)的)
從不同層次上來看IP地址和硬件地址
需要注意一下幾點(diǎn)
- 在IP層抽象的互聯(lián)網(wǎng)上只能看見IP數(shù)據(jù)報(bào)
- 雖然在IP數(shù)據(jù)報(bào)首部有源站IP地址较曼,但路由器只根據(jù)目的站的IP地址的網(wǎng)絡(luò)號(hào)進(jìn)行路由選擇
- 在具體的物理網(wǎng)絡(luò)的鏈路層只能看見MAC幀而看不見IP數(shù)據(jù)報(bào)
- IP層抽象的互聯(lián)網(wǎng)屏蔽了下面很復(fù)雜的細(xì)節(jié)。只要我們?cè)诰W(wǎng)絡(luò)層上討論問題振愿,就能使用統(tǒng)一的捷犹、抽象的IP地址研究主機(jī)和主機(jī)或路由器之間的通信
地址解析協(xié)議
- 不管網(wǎng)絡(luò)層使用的是什么協(xié)議,在實(shí)際網(wǎng)絡(luò)的鏈路上傳送數(shù)據(jù)幀時(shí)冕末,最終還是必須使用硬件地址萍歉。
- 每一個(gè)主機(jī)都設(shè)有一個(gè) ARP 高速緩存(ARP cache),里面有所在的局域網(wǎng)上的各主機(jī)和路由器的 IP 地址到硬件地址的映射表档桃。
- 當(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ā)往此硬件地址嘹屯。
ARP高速緩存的作用
- 為了減少網(wǎng)絡(luò)上的通信量攻询,主機(jī) A 在發(fā)送其 ARP 請(qǐng)求分組時(shí),就將自己的 IP 地址到硬件地址的映射寫入 ARP 請(qǐng)求分組抚垄。
- 當(dāng)主機(jī) B 收到 A 的 ARP 請(qǐng)求分組時(shí)蜕窿,就將主機(jī) A 的這一地址映射寫入主機(jī) B 自己的 ARP 高速緩存中谋逻。這對(duì)主機(jī) B 以后向 A 發(fā)送數(shù)據(jù)報(bào)時(shí)就更方便了
ARP應(yīng)當(dāng)注意的是
- ARP 是解決同一個(gè)局域網(wǎng)上的主機(jī)或路由器的 IP 地址和硬件地址的映射問題。
- 如果所要找的主機(jī)和源主機(jī)不在同一個(gè)局域網(wǎng)上桐经,那么就要通過 ARP 找到一個(gè)位于本局域網(wǎng)上的某個(gè)路由器的硬件地址毁兆,然后把分組發(fā)送給這個(gè)路由器,讓這個(gè)路由器把分組轉(zhuǎn)發(fā)給下一個(gè)網(wǎng)絡(luò)阴挣。剩下的工作就由下一個(gè)網(wǎng)絡(luò)來做气堕。
- 從IP地址到硬件地址的解析是自動(dòng)進(jìn)行的,主機(jī)的用戶對(duì)這種地址解析過程是不知道的畔咧。
- 只要主機(jī)或路由器要和本網(wǎng)絡(luò)上的另一個(gè)已知 IP 地址的主機(jī)或路由器進(jìn)行通信茎芭,ARP協(xié)議就會(huì)自動(dòng)地將該 IP 地址解析為鏈路層所需要的硬件地址。
使用ARP的四種典型情況
- 發(fā)送方是主機(jī)誓沸,要把IP數(shù)據(jù)報(bào)發(fā)送到本網(wǎng)絡(luò)上的另一個(gè)主機(jī)梅桩。這時(shí)用ARP找到目的主機(jī)的硬件地址。
- 發(fā)送方是主機(jī)拜隧,要把 IP 數(shù)據(jù)報(bào)發(fā)送到另一個(gè)網(wǎng)絡(luò)上的一個(gè)主機(jī)宿百。這時(shí)用ARP找到本網(wǎng)絡(luò)上的一個(gè)路由器的硬件地址。剩下的工作由這個(gè)路由器來完成洪添。
- 發(fā)送方是路由器垦页,要把 IP 數(shù)據(jù)報(bào)轉(zhuǎn)發(fā)到本網(wǎng)絡(luò)上的一個(gè)主機(jī)。這時(shí)用ARP找到目的主機(jī)的硬件地址干奢。
- 發(fā)送方是路由器痊焊,要把 IP 數(shù)據(jù)報(bào)轉(zhuǎn)發(fā)到另一個(gè)網(wǎng)絡(luò)上的一個(gè)主機(jī)。這時(shí)用ARP 找到本網(wǎng)絡(luò)上另一個(gè)路由器的硬件地址忿峻。剩下的工作由這個(gè)路由器來完成薄啥。
為什么我們不直接使用硬件地址進(jìn)行通信
- 由于全世界存在著各式各樣的網(wǎng)絡(luò),它們使用不同的硬件地址逛尚。要使這些異構(gòu)網(wǎng)絡(luò)能夠互相通信就必須進(jìn)行非常復(fù)雜的硬件地址轉(zhuǎn)換工作罪佳,因此幾乎是不可能的事。
- 連接到因特網(wǎng)的主機(jī)都擁有統(tǒng)一的 IP 地址黑低,它們之間的通信就像連接在同一個(gè)網(wǎng)絡(luò)上那樣簡單方便,因?yàn)檎{(diào)用 ARP 來尋找某個(gè)路由器或主機(jī)的硬件地址都是由計(jì)算機(jī)軟件自動(dòng)進(jìn)行的酌毡,對(duì)用戶來說是看不見這種調(diào)用過程的克握。
IP數(shù)據(jù)報(bào)的格式
各字段
版本 - 占4位,指IP協(xié)議的版本(IPv4)
首部長度 - 占4位枷踏,可表示的最大十進(jìn)制數(shù)值是15菩暗。請(qǐng)注意,首部長度字段所表示數(shù)的單位是32位字(一個(gè)32位字長是4字節(jié))旭蠕。因此長度字段的最小值是5(二進(jìn)制的0101)停团,相當(dāng)于IP首部長度為54 = 20字節(jié)旷坦,而當(dāng)首部長度為1111時(shí)(即十進(jìn)制的15),首部長度就達(dá)到最大值15個(gè)32位字長佑稠,即60字節(jié)秒梅。當(dāng)IP數(shù)據(jù)報(bào)的數(shù)據(jù)部分永遠(yuǎn)在4字節(jié)的整數(shù)倍時(shí)開始,這樣在實(shí)現(xiàn)IP協(xié)議時(shí)較為方便舌胶。首部長度限制為60字節(jié)的缺點(diǎn)是有時(shí)可能不夠用捆蜀,但這樣做是為了盡量減少開銷。最常用的首部長度就是20字節(jié)(0101)這時(shí)不使用任何選項(xiàng)幔嫂。(然而并沒有介紹它是干啥的*)
區(qū)分服務(wù) - 占8位辆它,用來獲得更好的服務(wù),在舊標(biāo)準(zhǔn)中叫做服務(wù)類型履恩,但實(shí)際上一直未被使用過论颅。1998年這個(gè)字段改名為區(qū)分服務(wù)。只有在使用區(qū)分服務(wù)(DiffServ)時(shí)褥影,這個(gè)字段才起作用渤涌。在一般情況下都不使用這個(gè)字段
總長度 - 占16位,指首部和數(shù)據(jù)之和的長度昙衅,單位為字節(jié)扬霜,因此數(shù)據(jù)報(bào)的最大長度為65535字節(jié)《妫總長度必須不超過最大傳送單元MTU著瓶。
標(biāo)識(shí)(identification) - 占16位,它是一個(gè)計(jì)數(shù)器啼县,用來產(chǎn)生數(shù)據(jù)報(bào)的標(biāo)識(shí)
標(biāo)志(flag) - 占3位材原,目前只有前兩位有意義,標(biāo)志字段的最低位是MF(More Fragment)季眷。MF = 1 表示后面還有分片余蟹。MF = 0表示最后一個(gè)分片標(biāo)志字段中間的一位是DF(Don't Fragment)。只有當(dāng)DF = 0時(shí)才允許分片子刮。
-
片偏移(13位)指出:較長的分組在分片后某片在原分組中的相對(duì)位置威酒。片偏移以8個(gè)字節(jié)為偏移單位。
IP數(shù)據(jù)報(bào)分片
IP數(shù)據(jù)報(bào)分片.png 生存時(shí)間(8位)記為TTL(Time To Live)數(shù)據(jù)報(bào)在網(wǎng)絡(luò)中可通過路由數(shù)的最大值
-
協(xié)議(8位)字段指出此數(shù)據(jù)報(bào)攜帶的數(shù)據(jù)使用何種協(xié)議以便目的主機(jī)的IP層將數(shù)據(jù)部分上交給哪個(gè)處理過程
協(xié)議字段指明應(yīng)該將數(shù)據(jù)交給哪一個(gè)進(jìn)程.png -
首部檢驗(yàn)和(16位)字段只檢驗(yàn)數(shù)據(jù)報(bào)的首部不檢驗(yàn)數(shù)據(jù)部分挺峡,這是因?yàn)閿?shù)據(jù)報(bào)每經(jīng)過一個(gè)路由器葵孤,路由器都要重新計(jì)算一下首部檢驗(yàn)和(一些字段,如生存時(shí)間橱赠,標(biāo)志尤仍,片偏移等都可能發(fā)生變化),不檢驗(yàn)數(shù)據(jù)部分可以減少計(jì)算的工作量狭姨,為了進(jìn)一步減少計(jì)算檢驗(yàn)和的工作量宰啦,這里不采用CRC檢驗(yàn)碼而采用簡單的計(jì)算方法:在發(fā)送方苏遥,先把IP數(shù)據(jù)報(bào)首部劃分為許多16位字的序列,并把檢驗(yàn)和字段置零赡模。用反碼算術(shù)運(yùn)算把所有16位字相加后田炭,將得到的和的反碼寫入檢驗(yàn)和字段。接收方收到數(shù)據(jù)報(bào)后纺裁,將首部所有16位字再使用反碼算術(shù)運(yùn)算相加一次诫肠。將得到的和取反碼,即得出接收方檢驗(yàn)和的計(jì)算結(jié)果欺缘。若首部未發(fā)生任何變化栋豫,則此結(jié)果必為0,于是就保留這個(gè)數(shù)據(jù)報(bào)谚殊。否則即認(rèn)為出差錯(cuò)丧鸯,并將此數(shù)據(jù)報(bào)丟棄,詳情見下圖片:
首部檢驗(yàn)和.png 源地址/目的地址 各占32位
IP數(shù)據(jù)報(bào)首部的可變部分
- IP首部的可變部分就是一個(gè)選項(xiàng)字段嫩絮,用來支持排錯(cuò)丛肢、測量及安全等措施,內(nèi)容很豐富
- 選項(xiàng)字段的長度可變剿干,從1個(gè)字節(jié)到40個(gè)字節(jié)不等蜂怎,取決于所選擇的項(xiàng)目
- 增加首部的可變部分是為了增加 IP 數(shù)據(jù)報(bào)的功能,但這同時(shí)也使得 IP 數(shù)據(jù)報(bào)的首部長度成為可變的置尔。這就增加了每一個(gè)路由器處理數(shù)據(jù)報(bào)的開銷杠步。
- 實(shí)際上這些選項(xiàng)很少被使用。
IP數(shù)據(jù)報(bào)轉(zhuǎn)發(fā)分組的流程
有四個(gè)A類網(wǎng)絡(luò)通過三個(gè)路由器連接在一起榜轿,每個(gè)網(wǎng)絡(luò)上都可能有成千上萬個(gè)主機(jī)幽歼。可以想象谬盐,若按目的主機(jī)號(hào)來制作路由表甸私,則所得出的路由表就會(huì)過于龐大。丹若按主機(jī)所在的網(wǎng)絡(luò)地址來制作路由表飞傀,那么每一個(gè)路由器中的路由表就只包含四個(gè)項(xiàng)目皇型。這樣可以大大簡化路由表。
使用這樣的簡化圖砸烦,我們可以不用關(guān)心某個(gè)網(wǎng)絡(luò)內(nèi)部的具體拓?fù)浣Y(jié)構(gòu)及連接在該網(wǎng)絡(luò)上有多少臺(tái)計(jì)算機(jī)犀被,他還強(qiáng)調(diào)了在互聯(lián)網(wǎng)上轉(zhuǎn)發(fā)分組時(shí),是從一個(gè)路由器轉(zhuǎn)發(fā)到下一個(gè)路由器外冀。
查找路由表
根據(jù)目的網(wǎng)絡(luò)地址就能確定下一跳路由器,這一點(diǎn)做的結(jié)果是:
- IP數(shù)據(jù)報(bào)最終一定可以找到目的主機(jī)所在目的網(wǎng)絡(luò)上的路由器(可能要通過多次的間接交付)
- 只有到達(dá)最后一個(gè)路由器時(shí)掀泳,才試圖向目的主機(jī)進(jìn)行交付
特定主機(jī)路由器
雖然因特網(wǎng)所有分組轉(zhuǎn)發(fā)都是基于目的主機(jī)所在的網(wǎng)絡(luò)雪隧,但在大多數(shù)情況下都允許有這樣的特例西轩,即對(duì)特定的目的主機(jī)指明一個(gè)路由。這種路由叫做特定主機(jī)路由脑沿,采用特定主機(jī)路由可使網(wǎng)絡(luò)管理人員能更方便地控制網(wǎng)絡(luò)和測試網(wǎng)絡(luò)藕畔,同時(shí)也可在需要考慮某種安全問題時(shí)采用這種特定主機(jī)路由。
默認(rèn)路由
- 路由器還可采用默認(rèn)路由以減少路由表所占用的空間和搜索路由表所用的時(shí)間庄拇。
- 這種轉(zhuǎn)發(fā)方式在一個(gè)網(wǎng)絡(luò)只有很少的對(duì)外連接時(shí)是很有用的注服。
- 默認(rèn)路由在主機(jī)發(fā)送 IP 數(shù)據(jù)報(bào)時(shí)往往更能顯示出它的好處。
- 如果一個(gè)主機(jī)連接在一個(gè)小網(wǎng)絡(luò)上措近,而這個(gè)網(wǎng)絡(luò)只用一個(gè)路由器和因特網(wǎng)連接溶弟,那么在這種情況下使用默認(rèn)路由是非常合適的。
必須強(qiáng)調(diào)指出
IP 數(shù)據(jù)報(bào)的首部中沒有地方可以用來指明“下一跳路由器的 IP 地址”瞭郑,當(dāng)路由器收到待轉(zhuǎn)發(fā)的數(shù)據(jù)報(bào)辜御,不是將下一跳路由器的 IP 地址填入 IP 數(shù)據(jù)報(bào),而是送交下層的網(wǎng)絡(luò)接口軟件屈张。網(wǎng)絡(luò)接口軟件使用 ARP 負(fù)責(zé)將下一跳路由器的 IP 地址轉(zhuǎn)換成硬件地址擒权,并將此硬件地址放在鏈路層的** MAC 幀的首部,然后根據(jù)這個(gè)硬件地址**找到下一跳路由器阁谆。
分組轉(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ī)路由裳凸,則把數(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ò)瓣颅。
劃分子網(wǎng)和構(gòu)成超網(wǎng)
劃分子網(wǎng)
從兩級(jí)IP地址到三級(jí)IP地址
在 ARPANET 的早期倦逐,IP 地址的設(shè)計(jì)確實(shí)不夠合理。
- IP 地址空間的利用率有時(shí)很低宫补。
- 給每一個(gè)物理網(wǎng)絡(luò)分配一個(gè)網(wǎng)絡(luò)號(hào)會(huì)使路由表變得太大因而使網(wǎng)絡(luò)性能變壞檬姥。
- 兩級(jí)的 IP 地址不夠靈活曾我。
三級(jí)IP地址
從 1985 年起在 IP 地址中又增加了一個(gè)“子網(wǎng)號(hào)字段”,使兩級(jí)的 IP 地址變成為三級(jí)的 IP 地址健民。這種做法叫作劃分子網(wǎng)(subnetting) 抒巢。劃分子網(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) subnet-id,而主機(jī)號(hào) host-id 也就相應(yīng)減少了若干個(gè)位崇堵。
- 凡是從其他網(wǎng)絡(luò)發(fā)送給本單位某個(gè)主機(jī)的 IP 數(shù)據(jù)報(bào)型诚,仍然是根據(jù) IP 數(shù)據(jù)報(bào)的目的網(wǎng)絡(luò)號(hào) net-id,先找到連接在本單位網(wǎng)絡(luò)上的路由器筑辨。
- 然后此路由器在收到 IP 數(shù)據(jù)報(bào)后俺驶,再按目的網(wǎng)絡(luò)號(hào) net-id 和子網(wǎng)號(hào) subnet-id 找到目的子網(wǎng)。
- 最后就將 IP 數(shù)據(jù)報(bào)直接交付目的主機(jī)棍辕。
劃分子網(wǎng)后變成了三級(jí)結(jié)構(gòu)
- 當(dāng)沒有劃分子網(wǎng)時(shí)暮现,IP 地址是兩級(jí)結(jié)構(gòu)。
- 劃分子網(wǎng)后 IP 地址就變成了三級(jí)結(jié)構(gòu)楚昭。
- 劃分子網(wǎng)只是把 IP 地址的主機(jī)號(hào) host-id 這部分進(jìn)行再劃分栖袋,而不改變 IP 地址原來的網(wǎng)絡(luò)號(hào) net-id。
子網(wǎng)掩碼
- 從一個(gè) IP 數(shù)據(jù)報(bào)的首部并無法判斷源主機(jī)或目的主機(jī)所連接的網(wǎng)絡(luò)是否進(jìn)行了子網(wǎng)劃分抚太。
- 使用子網(wǎng)掩碼(subnet mask)可以找出 IP 地址中的子網(wǎng)部分塘幅。
IP地址的各字段和子網(wǎng)掩碼
請(qǐng)注意現(xiàn)在子網(wǎng)號(hào)為3的網(wǎng)絡(luò)的網(wǎng)絡(luò)地址是145.13.3.0(既不是原來兩級(jí)的IP地址的網(wǎng)絡(luò)地址145.13.0.0,也不是簡單的子網(wǎng)號(hào)3)尿贫,為了使路由器能很方便的從數(shù)據(jù)報(bào)中的目的IP地址中提取所要找的子網(wǎng)的網(wǎng)絡(luò)地址电媳,路由器就要使用三級(jí)IP地址的子網(wǎng)掩碼(如上圖畔塔,三級(jí)IP地址的子網(wǎng)掩碼)狭瞎,它也是32位,由一串1和跟隨的一串0組成鳄厌。子網(wǎng)掩碼中的1對(duì)應(yīng)于IP地址中原來二級(jí)地址中的16位網(wǎng)絡(luò)號(hào)加上新增加的8位子網(wǎng)號(hào)又谋,而子網(wǎng)掩碼中的0對(duì)應(yīng)于現(xiàn)在的8位主機(jī)號(hào)拼缝。雖然RFC文檔中沒有規(guī)定子網(wǎng)掩碼中的一串1必須是連續(xù)的,但卻極力推薦在子網(wǎng)掩碼中選用連續(xù)的1彰亥,以避免發(fā)生錯(cuò)誤
IP地址 AND 子網(wǎng)掩碼 = 網(wǎng)絡(luò)地址
不管有沒有劃分子網(wǎng)咧七,只要把子網(wǎng)掩碼和IP地址進(jìn)行逐位相與運(yùn)算,就立即得出網(wǎng)絡(luò)地址來继阻,這樣路由器處理到來的分組時(shí)可以采用相同的算法。
歸納下上述的要點(diǎn),從網(wǎng)絡(luò)145.13.0.0外面看瘟檩,這就是一個(gè)普通的B類網(wǎng)絡(luò)犬第,但進(jìn)入這個(gè)網(wǎng)絡(luò)后(即到了路由器),就看到了還有許多網(wǎng)絡(luò)(即劃分了子網(wǎng)后的許多網(wǎng)絡(luò))芒帕,其網(wǎng)絡(luò)地址為145.13.x.0(這里x可以表示不同的數(shù)值),而這些網(wǎng)絡(luò)的子網(wǎng)掩碼都是24個(gè)連1跟上8個(gè)連0丰介”丑。總之,在這個(gè)網(wǎng)絡(luò)的內(nèi)外哮幢,看到的網(wǎng)絡(luò)是不同的
為了更便于查路由表带膀,現(xiàn)在因特網(wǎng)的標(biāo)準(zhǔn)規(guī)定:所有的網(wǎng)絡(luò)都必須使用子網(wǎng)掩碼,同時(shí)在路由器的路由表中也必須有子網(wǎng)掩碼這一欄橙垢。如果一個(gè)網(wǎng)絡(luò)不劃分子網(wǎng)垛叨,那么該網(wǎng)絡(luò)的子網(wǎng)掩碼就使用默認(rèn)子網(wǎng)掩碼,默認(rèn)子網(wǎng)掩碼中1的位置和IP地址中的網(wǎng)絡(luò)號(hào)字段正好相對(duì)應(yīng)柜某。因此嗽元,若用默認(rèn)子網(wǎng)掩碼和某個(gè)不劃分子網(wǎng)的IP地址逐位相與,就應(yīng)當(dāng)能夠得出該IP地址的網(wǎng)絡(luò)地址來喂击,這樣做可以不用查找該地址的類別位就能知道這是哪一類的IP地址 (書上原話 沒懂 <涟!:舶怼E骞取)
默認(rèn)子網(wǎng)掩碼
子網(wǎng)掩碼是一個(gè)重要屬性
- 子網(wǎng)掩碼是一個(gè)網(wǎng)絡(luò)或一個(gè)子網(wǎng)的重要屬性。
- 路由器在和相鄰路由器交換路由信息時(shí)监嗜,必須把自己所在網(wǎng)絡(luò)(或子網(wǎng))的子網(wǎng)掩碼告訴相鄰路由器谐檀。
- 路由器的路由表中的每一個(gè)項(xiàng)目,除了要給出目的網(wǎng)絡(luò)地址外裁奇,還必須同時(shí)給出該網(wǎng)絡(luò)的子網(wǎng)掩碼桐猬。
- 若一個(gè)路由器連接在兩個(gè)子網(wǎng)上就擁有兩個(gè)網(wǎng)絡(luò)地址和兩個(gè)子網(wǎng)掩碼。
P137有一個(gè)表格寫B(tài)類子網(wǎng)劃分選擇(使用固定長度子網(wǎng))
例題
使用子網(wǎng)掩碼的分組轉(zhuǎn)發(fā)過程
- 在不劃分子網(wǎng)的兩級(jí) IP 地址下框喳,從 IP 地址得出網(wǎng)絡(luò)地址是個(gè)很簡單的事课幕。
- 但在劃分子網(wǎng)的情況下,從 IP 地址卻不能唯一地得出網(wǎng)絡(luò)地址來五垮,這是因?yàn)榫W(wǎng)絡(luò)地址取決于那個(gè)網(wǎng)絡(luò)所采用的子網(wǎng)掩碼乍惊,但數(shù)據(jù)報(bào)的首部并沒有提供子網(wǎng)掩碼的信息。
- 因此分組轉(zhuǎn)發(fā)的算法也必須做相應(yīng)的改動(dòng)放仗。
算法
有一個(gè)例題請(qǐng)見教材P139
無分類編址CIDR(無分類域間路由選擇)
網(wǎng)絡(luò)前綴
劃分子網(wǎng)在一定程度上緩解了因特網(wǎng)在發(fā)展中遇到的困難润绎。然而在 1992 年因特網(wǎng)仍然面臨三個(gè)必須盡早解決的問題,這就是:
- B 類地址在 1992 年已分配了近一半,眼看就要在 1994 年 3 月全部分配完畢莉撇!
- 因特網(wǎng)主干網(wǎng)上的路由表中的項(xiàng)目數(shù)急劇增長(從幾千個(gè)增長到幾萬個(gè))呢蛤。
- 整個(gè) IPv4 的地址空間最終將全部耗盡。
IP地址問題的演進(jìn)
- 1987 年棍郎,RFC 1009 就指明了在一個(gè)劃分子網(wǎng)的網(wǎng)絡(luò)中可同時(shí)使用幾個(gè)不同的子網(wǎng)掩碼其障。使用**變長子網(wǎng)掩碼 VLSM **(Variable Length Subnet Mask)可進(jìn)一步提高 IP 地址資源的利用率。
- 在 VLSM 的基礎(chǔ)上又進(jìn)一步研究出無分類編址方法涂佃,它的正式名字是無分類域間路由選擇 CIDR (Classless Inter-Domain Routing)励翼。
CIDR最主要的特點(diǎn)
- CIDR 消除了傳統(tǒng)的 A 類、B 類和 C 類地址以及劃分子網(wǎng)的概念辜荠,因而可以更加有效地分配 IPv4 的地址空間汽抚。
- CIDR使用各種長度的網(wǎng)絡(luò)前綴(network-prefix)來代替分類地址中的網(wǎng)絡(luò)號(hào)和子網(wǎng)號(hào)。
- IP 地址從三級(jí)編址(使用子網(wǎng)掩碼)又回到了兩級(jí)編址伯病。
無分類的兩級(jí)編址
無分類的兩級(jí)編址的記法是:
CIDR 還使用斜線記法(slash notation)造烁,它又稱為CIDR記法,即在 IP 地址后面加上一個(gè)斜線“/”午笛,然后寫上網(wǎng)絡(luò)前綴所占的位數(shù)(這個(gè)數(shù)值對(duì)應(yīng)于三級(jí)編址中子網(wǎng)掩碼中 1 的個(gè)數(shù))惭蟋。CIDR 把網(wǎng)絡(luò)前綴都相同的連續(xù)的 IP 地址組成“CIDR 地址塊”。
為了更方便的進(jìn)行路由選擇季研,CIDR使用32位的地址掩碼敞葛,地址掩碼由一串1和一串0組成,而1的個(gè)數(shù)就是網(wǎng)絡(luò)前綴的長度与涡。例如/20地址塊的地址掩碼是:11111111 11111111 11110000 00000000 20個(gè)連續(xù)的1惹谐,斜線記法中,斜線后面的數(shù)字就是地址掩碼中1的個(gè)數(shù)
CIDR地址塊
- 128.14.32.0/20 表示的地址塊共有 2^12 個(gè)地址(因?yàn)?strong>斜線后面的 20 是網(wǎng)絡(luò)前綴的位數(shù)驼卖,所以這個(gè)地址的主機(jī)號(hào)是 12 位[一共32位])氨肌。
- 這個(gè)地址塊的起始地址是 128.14.32.0。
- 在不需要指出地址塊的起始地址時(shí)酌畜,也可將這樣的地址塊簡稱為“/20 地址塊”怎囚。
- 128.14.32.0/20 地址塊的最小地址:128.14.32.0
- 128.14.32.0/20 地址塊的最大地址:128.14.47.255
- 全 0 和全 1 的主機(jī)號(hào)地址一般不使用。
路由聚合(route aggregation)
- 一個(gè) CIDR 地址塊可以表示很多地址桥胞,這種地址的聚合常稱為路由聚合恳守,它使得路由表中的一個(gè)項(xiàng)目可以表示很多個(gè)(例如上千個(gè))原來傳統(tǒng)分類地址的路由。
- 路由聚合也稱為構(gòu)成超網(wǎng)(supernetting)贩虾。
- CIDR 雖然不使用子網(wǎng)了催烘,但仍然使用“掩碼”這一名詞。
- 對(duì)于 /20 地址塊缎罢,它的掩碼是 20 個(gè)連續(xù)的 1伊群。 斜線記法中的數(shù)字就是掩碼中1的個(gè)數(shù)考杉。
CIDR記法的其他形式
構(gòu)成超網(wǎng)
- 前綴長度不超過 23 位的 CIDR 地址塊都包含了多個(gè) C 類地址。
- 這些 C 類地址合起來就構(gòu)成了超網(wǎng)舰始。
- CIDR 地址塊中的地址數(shù)一定是 2 的整數(shù)次冪崇棠。
- 網(wǎng)絡(luò)前綴越短,其地址塊所包含的地址數(shù)就越多丸卷。而在三級(jí)結(jié)構(gòu)的IP地址中枕稀,劃分子網(wǎng)是使網(wǎng)絡(luò)前綴變長。
CIDR地址塊劃分舉例
這個(gè) ISP 共有 64 個(gè) C 類網(wǎng)絡(luò)谜嫉。如果不采用 CIDR 技術(shù)抽莱,則在與該 ISP 的路由器交換路由信息的每一個(gè)路由器的路由表中,就需要有 64 個(gè)項(xiàng)目骄恶。但采用地址聚合后,只需用路由聚合后的 1 個(gè)項(xiàng)目 206.0.64.0/18 就能找到該 ISP匕垫。
// 這里還沒太懂.... 就是共有多少個(gè)幾類網(wǎng)絡(luò)那里
最長前綴匹配
- 使用 CIDR 時(shí)僧鲁,路由表中的每個(gè)項(xiàng)目由“網(wǎng)絡(luò)前綴”和“下一跳地址”組成。在查找路由表時(shí)可能會(huì)得到不止一個(gè)匹配結(jié)果象泵。
- 應(yīng)當(dāng)從匹配結(jié)果中選擇具有最長網(wǎng)絡(luò)前綴的路由:最長前綴匹配(longest-prefix matching)寞秃。
- 網(wǎng)絡(luò)前綴越長,其地址塊就越小偶惠,因而路由就越具體(more specific) 春寿。
- 最長前綴匹配又稱為最長匹配或最佳匹配。
使用二叉線索樹查找路由表
- 當(dāng)路由表的項(xiàng)目數(shù)很大時(shí)忽孽,怎樣設(shè)法減小路由表的查找時(shí)間就成為一個(gè)非常重要的問題绑改。
- 為了進(jìn)行更加有效的查找,通常是將無分類編址的路由表存放在一種層次的數(shù)據(jù)結(jié)構(gòu)中兄一,然后自上而下地按層次進(jìn)行查找厘线。這里最常用的就是二叉線索(binary trie)。
- IP 地址中從左到右的比特值決定了從根結(jié)點(diǎn)逐層向下層延伸的路徑出革,而二叉線索中的各個(gè)路徑就代表路由表中存放的各個(gè)地址造壮。
- 為了提高二叉線索的查找速度,廣泛使用了各種壓縮技術(shù)骂束。
用5個(gè)前綴構(gòu)成的二叉線索
所謂唯一前綴就是在表中所有的IP地址中耳璧,該前綴是唯一的,這樣就可以用這些唯一前綴來構(gòu)造二叉線索展箱,在進(jìn)行查找時(shí)只要能夠和唯一前綴相匹配就行了旨枯。
從上至下來查找
網(wǎng)際控制報(bào)文協(xié)議ICMP
- 為了提高 IP 數(shù)據(jù)報(bào)交付成功的機(jī)會(huì),在網(wǎng)際層使用了網(wǎng)際控制報(bào)文協(xié)議 ICMP (Internet Control Message Protocol)析藕。
- ICMP 允許主機(jī)或路由器報(bào)告差錯(cuò)情況和提供有關(guān)異常情況的報(bào)告召廷。
- ICMP 不是高層協(xié)議凳厢,而是 IP 層的協(xié)議。
- ICMP 報(bào)文作為** IP 層數(shù)據(jù)報(bào)**的數(shù)據(jù)竞慢,加上數(shù)據(jù)報(bào)的首部先紫,組成 IP 數(shù)據(jù)報(bào)發(fā)送出去。
報(bào)文格式
ICMP報(bào)文的種類
- ICMP 報(bào)文的種類有兩種筹煮,即 ICMP 差錯(cuò)報(bào)告報(bào)文和 ICMP 詢問報(bào)文遮精。
- ICMP 報(bào)文的前 4 個(gè)字節(jié)是統(tǒng)一的格式,共有三個(gè)字段:即類型败潦、代碼和檢驗(yàn)和本冲。接著的 4 個(gè)字節(jié)的內(nèi)容與 ICMP 的類型有關(guān)。
ICMP差錯(cuò)報(bào)告報(bào)文共有5種
- 終點(diǎn)不可達(dá)
當(dāng)路由器或主機(jī)不能交付數(shù)據(jù)報(bào)時(shí)就向源點(diǎn)發(fā)送終點(diǎn)不可達(dá)報(bào)文 - 源點(diǎn)抑制(Source quench)
當(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ā)送速率放慢 - 時(shí)間超過
當(dāng)路由器收到生存時(shí)間為0的數(shù)據(jù)報(bào)時(shí),除了丟棄該數(shù)據(jù)報(bào)外沟饥,還要向源點(diǎn)發(fā)送時(shí)間超過報(bào)文磁携,當(dāng)終點(diǎn)在預(yù)定的時(shí)間內(nèi)不能收到一個(gè)數(shù)據(jù)報(bào)的全部數(shù)據(jù)報(bào)片時(shí)叹括,就把已收到的數(shù)據(jù)報(bào)片都丟棄,并向源點(diǎn)發(fā)送時(shí)間超過報(bào)文 - 參數(shù)問題
當(dāng)路由器或目的主機(jī)收到的數(shù)據(jù)報(bào)首部有的字段的值不正確時(shí),就丟棄該數(shù)據(jù)報(bào)婿失,并向源點(diǎn)發(fā)送時(shí)間超過報(bào)文 - 改變路由(重定向)(Redirect)
路由器把改變路由報(bào)文發(fā)送給主機(jī)纫版,讓主機(jī)知道下次應(yīng)該將數(shù)據(jù)報(bào)發(fā)送給另外的路由器(可通過更好的路由)
ICMP差錯(cuò)報(bào)告報(bào)文的數(shù)據(jù)字段的內(nèi)容
不應(yīng)發(fā)送ICMP差錯(cuò)報(bào)文的幾種情況
- 對(duì) ICMP 差錯(cuò)報(bào)告報(bào)文不再發(fā)送 ICMP 差錯(cuò)報(bào)告報(bào)文汇鞭。
- 對(duì)第一個(gè)分片的數(shù)據(jù)報(bào)片的所有后續(xù)數(shù)據(jù)報(bào)片都不發(fā)送 ICMP 差錯(cuò)報(bào)告報(bào)文耘沼。
- 對(duì)具有多播地址的數(shù)據(jù)報(bào)都不發(fā)送 ICMP 差錯(cuò)報(bào)告報(bào)文。
- 對(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)求和回答
ICMP回送請(qǐng)求報(bào)文使由主機(jī)或路由器向一個(gè)特定的目的主機(jī)發(fā)出的詢問购桑。收到此報(bào)文的主機(jī)必須給源主機(jī)發(fā)送ICMP回送回答報(bào)文。這種詢問報(bào)文用來測試目的站是否可達(dá)以及了解其有關(guān)狀態(tài) - 時(shí)間戳請(qǐng)求和回答
ICMP時(shí)間戳請(qǐng)求報(bào)文是請(qǐng)求某個(gè)主機(jī)或路由器回答當(dāng)前的日期和時(shí)間氏淑。在ICMP時(shí)間戳回答報(bào)文中有一個(gè)32位的字段其兴,其中寫入的整數(shù)代表從1900年1月1日起到當(dāng)時(shí)是哪一共有多少秒,時(shí)間戳請(qǐng)求與回答可用來進(jìn)行時(shí)鐘同步和測量時(shí)間夸政。
ICMP的應(yīng)用舉例
- PING 用來測試兩個(gè)主機(jī)之間的連通性元旬。
- PING 使用了 ICMP 回送請(qǐng)求與回送回答報(bào)文。
- PING 是應(yīng)用層直接使用網(wǎng)絡(luò)層 ICMP 的例子守问,它沒有通過運(yùn)輸層的 TCP 或UDP匀归。
具體命令行命令見 P149
因特網(wǎng)的路由選擇協(xié)議
有關(guān)路由選擇協(xié)議的幾個(gè)基本概念
理想路由算法
- 算法必須是正確的和完整的。
- 算法在計(jì)算上應(yīng)簡單耗帕。
- 算法應(yīng)能適應(yīng)通信量和網(wǎng)絡(luò)拓?fù)涞淖兓露耍@就是說,要有自適應(yīng)性仿便。
- 算法應(yīng)具有穩(wěn)定性体啰。
- 算法應(yīng)是公平的攒巍。
- 算法應(yīng)是最佳的。
關(guān)于最佳路由
- 不存在一種絕對(duì)的最佳路由算法荒勇。
- 所謂“最佳”只能是相對(duì)于某一種特定要求下得出的較為合理的選擇而已柒莉。
- 實(shí)際的路由選擇算法,應(yīng)盡可能接近于理想的算法沽翔。
- 路由選擇是個(gè)非常復(fù)雜的問題
- 它是網(wǎng)絡(luò)中的所有結(jié)點(diǎn)共同協(xié)調(diào)工作的結(jié)果兢孝。
- 路由選擇的環(huán)境往往是不斷變化的,而這種變化有時(shí)無法事先知道仅偎。
從路由算法的自適應(yīng)性考慮
- 靜態(tài)路由選擇策略——即非自適應(yīng)路由選擇跨蟹,其特點(diǎn)是簡單和開銷較小,但不能及時(shí)適應(yīng)網(wǎng)絡(luò)狀態(tài)的變化橘沥。
- 動(dòng)態(tài)路由選擇策略——即自適應(yīng)路由選擇窗轩,其特點(diǎn)是能較好地適應(yīng)網(wǎng)絡(luò)狀態(tài)的變化,但實(shí)現(xiàn)起來較為復(fù)雜座咆,開銷也比較大品姓。
分層次的路由選擇協(xié)議
- 因特網(wǎng)采用分層次的路由選擇協(xié)議。
- 因特網(wǎng)的規(guī)模非常大箫措。如果讓所有的路由器知道所有的網(wǎng)絡(luò)應(yīng)怎樣到達(dá),則這種路由表將非常大衬潦,處理起來也太花時(shí)間斤蔓。而所有這些路由器之間交換路由信息所需的帶寬就會(huì)使因特網(wǎng)的通信鏈路飽和。
- 許多單位不愿意外界了解自己單位網(wǎng)絡(luò)的布局細(xì)節(jié)和本部門所采用的路由選擇協(xié)議(這屬于本部門內(nèi)部的事情)镀岛,但同時(shí)還希望連接到因特網(wǎng)上弦牡。
自治系統(tǒng)AS(Autonomous System)
- 自治系統(tǒng) AS 的定義:在單一的技術(shù)管理下的一組路由器,而這些路由器使用一種 AS 內(nèi)部的路由選擇協(xié)議和共同的度量以確定分組在該 AS 內(nèi)的路由漂羊,同時(shí)還使用一種 AS 之間的路由選擇協(xié)議用以確定分組在 AS之間的路由驾锰。
- 現(xiàn)在對(duì)自治系統(tǒng) AS 的定義是強(qiáng)調(diào)下面的事實(shí):盡管一個(gè) AS 使用了多種內(nèi)部路由選擇協(xié)議和度量,但重要的是一個(gè) AS 對(duì)其他 AS 表現(xiàn)出的是一個(gè)單一的和一致的路由選擇策略走越。
因特網(wǎng)有兩大路由選擇協(xié)議
- 內(nèi)部網(wǎng)關(guān)協(xié)議 IGP (Interior Gateway Protocol) 即在一個(gè)自治系統(tǒng)內(nèi)部使用的路由選擇協(xié)議椭豫。目前這類路由選擇協(xié)議使用得最多,如 RIP 和 OSPF 協(xié)議旨指。
- 外部網(wǎng)關(guān)協(xié)議EGP (External Gateway Protocol) 若源站和目的站處在不同的自治系統(tǒng)中赏酥,當(dāng)數(shù)據(jù)報(bào)傳到一個(gè)自治系統(tǒng)的邊界時(shí),就需要使用一種協(xié)議將路由選擇信息傳遞到另一個(gè)自治系統(tǒng)中谆构。這樣的協(xié)議就是外部網(wǎng)關(guān)協(xié)議 EGP裸扶。在外部網(wǎng)關(guān)協(xié)議中目前使用最多的是 BGP-4。
自治系統(tǒng)和內(nèi)部網(wǎng)關(guān)協(xié)議搬素、外部網(wǎng)關(guān)協(xié)議
這里要指出兩點(diǎn)
- 因特網(wǎng)的早期 RFC 文檔中未使用“路由器”而是使用“網(wǎng)關(guān)”這一名詞魏保。但是在新的 RFC 文檔中又使用了“路由器”這一名詞。應(yīng)當(dāng)把這兩個(gè)屬于當(dāng)作同義詞摸屠。
- IGP 和 EGP 是協(xié)議類別的名稱谓罗。但 RFC 在使用 EGP 這個(gè)名詞時(shí)出現(xiàn)了一點(diǎn)混亂,因?yàn)樽钤绲囊粋€(gè)外部網(wǎng)關(guān)協(xié)議的協(xié)議名字正好也是 EGP餐塘。因此在遇到名詞 EGP 時(shí)妥衣,應(yīng)弄清它是指舊的協(xié)議 EGP 還是指外部網(wǎng)關(guān)協(xié)議 EGP 這個(gè)類別。
因特網(wǎng)的路由選擇協(xié)議
- 內(nèi)部網(wǎng)關(guān)協(xié)議 IGP:具體的協(xié)議有多種戒傻,如 RIP 和 OSPF 等税手。
- 外部網(wǎng)關(guān)協(xié)議 EGP:目前使用的協(xié)議就是 BGP。
內(nèi)部網(wǎng)關(guān)協(xié)議RIP(Routing Information Protocol/路由信息協(xié)議)
工作原理
- 路由信息協(xié)議 RIP 是內(nèi)部網(wǎng)關(guān)協(xié)議 IGP中最先得到廣泛使用的協(xié)議需纳。
- RIP 是一種分布式的基于距離向量的路由選擇協(xié)議芦倒。
- RIP 協(xié)議要求網(wǎng)絡(luò)中的每一個(gè)路由器都要維護(hù)從它自己到其他每一個(gè)目的網(wǎng)絡(luò)的距離記錄。
距離的定義
- 從一路由器到直接連接的網(wǎng)絡(luò)的距離定義為 1不翩。
- 從一個(gè)路由器到非直接連接的網(wǎng)絡(luò)的距離定義為所經(jīng)過的路由器數(shù)加 1兵扬。
- RIP 協(xié)議中的“距離”也稱為“跳數(shù)”(hop count),因?yàn)槊拷?jīng)過一個(gè)路由器口蝠,跳數(shù)就加 1器钟。
- 這里的“距離”實(shí)際上指的是“最短距離”
- RIP 認(rèn)為一個(gè)好的路由就是它通過的路由器的數(shù)目少,即“距離短”妙蔗。
- RIP 允許一條路徑最多只能包含 15 個(gè)路由器傲霸,“距離”的最大值為16 時(shí)即相當(dāng)于不可達(dá)∶挤矗可見 RIP 只適用于小型互聯(lián)網(wǎng)昙啄。
- RIP 不能在兩個(gè)網(wǎng)絡(luò)之間同時(shí)使用多條路由。RIP 選擇一個(gè)具有最少路由器的路由(即最短路由)寸五,哪怕還存在另一條高速(低時(shí)延)但路由器較多的路由梳凛。
RIP協(xié)議的三個(gè)要點(diǎn)
- 僅和相鄰路由器交換信息。
- 交換的信息是當(dāng)前本路由器所知道的全部信息梳杏,即自己的路由表韧拒。
- 按固定的時(shí)間間隔交換路由信息,例如十性,每隔 30 秒叭莫。
路由表的建立
- 路由器在剛剛開始工作時(shí),只知道到直接連接的網(wǎng)絡(luò)的距離(此距離定義為1)烁试。
- 以后雇初,每一個(gè)路由器也只和數(shù)目非常有限的相鄰路由器交換并更新路由信息。
- 經(jīng)過若干次更新后减响,所有的路由器最終都會(huì)知道到達(dá)本自治系統(tǒng)中任何一個(gè)網(wǎng)絡(luò)的最短距離和下一跳路由器的地址靖诗。
- RIP 協(xié)議的收斂(convergence)過程較快郭怪,即在自治系統(tǒng)中所有的結(jié)點(diǎn)都得到正確的路由選擇信息的過程。
距離向量算法
P154有一道例題
路由器之間交換信息
- RIP協(xié)議讓互聯(lián)網(wǎng)中的所有路由器都和自己的相鄰路由器不斷交換路由信息刊橘,并不斷更新其路由表鄙才,使得從每一個(gè)路由器到每一個(gè)目的網(wǎng)絡(luò)的路由都是最短的(即跳數(shù)最少)。
- 雖然所有的路由器最終都擁有了整個(gè)自治系統(tǒng)的全局路由信息促绵,但由于每一個(gè)路由器的位置不同攒庵,它們的路由表當(dāng)然也應(yīng)當(dāng)是不同的。
RIP2協(xié)議的報(bào)文格式
RIP2的報(bào)文由首部和路由部分組成
- RIP2 報(bào)文中的路由部分由若干個(gè)路由信息組成败晴。每個(gè)路由信息需要用 20 個(gè)字節(jié)浓冒。地址族標(biāo)識(shí)符(又稱為地址類別)字段用來標(biāo)志所使用的地址協(xié)議。
- 路由標(biāo)記填入自治系統(tǒng)的號(hào)碼尖坤,這是考慮使RIP 有可能收到本自治系統(tǒng)以外的路由選擇信息稳懒。再后面指出某個(gè)網(wǎng)絡(luò)地址、該網(wǎng)絡(luò)的子網(wǎng)掩碼慢味、下一跳路由器地址以及到此網(wǎng)絡(luò)的距離场梆。
RIP協(xié)議的優(yōu)缺點(diǎn)
- RIP 存在的一個(gè)問題是當(dāng)網(wǎng)絡(luò)出現(xiàn)故障時(shí),要經(jīng)過比較長的時(shí)間才能將此信息傳送到所有的路由器纯路。
- RIP 協(xié)議最大的優(yōu)點(diǎn)就是實(shí)現(xiàn)簡單或油,開銷較小。
- RIP 限制了網(wǎng)絡(luò)的規(guī)模驰唬,它能使用的最大距離為 15(16 表示不可達(dá))顶岸。
路由器之間交換的路由信息是路由器中的完整路由表,因而隨著網(wǎng)絡(luò)規(guī)模的擴(kuò)大定嗓,開銷也就增加。
內(nèi)部網(wǎng)關(guān)協(xié)議OSPF(Open Shortest Path Frist/開放最短路徑優(yōu)先)
它是為了克服RIP的缺點(diǎn)在1989年開放出來的
OSPF 協(xié)議的基本特點(diǎn)
- “開放”表明 OSPF 協(xié)議不是受某一家廠商控制萍桌,而是公開發(fā)表的宵溅。
- “最短路徑優(yōu)先”是因?yàn)槭褂昧?Dijkstra 提出的最短路徑算法SPF
- OSPF 只是一個(gè)協(xié)議的名字,它并不表示其他的路由選擇協(xié)議不是“最短路徑優(yōu)先”上炎。
- 是分布式的鏈路狀態(tài)協(xié)議恃逻,而不是像RIP那樣的。
三個(gè)要點(diǎn)
- 向本自治系統(tǒng)中所有路由器發(fā)送信息藕施,這里使用的方法是洪泛法寇损。
- 發(fā)送的信息就是與本路由器相鄰的所有路由器的鏈路狀態(tài),但這只是路由器所知道的部分信息裳食。
- “鏈路狀態(tài)”就是說明本路由器都和哪些路由器相鄰矛市,以及該鏈路的“度量”(metric)。
- 只有當(dāng)鏈路狀態(tài)發(fā)生變化時(shí)诲祸,路由器才用洪泛法向所有路由器發(fā)送此信息浊吏。
鏈路狀態(tài)數(shù)據(jù)庫
- 由于各路由器之間頻繁地交換鏈路狀態(tài)信息而昨,因此所有的路由器最終都能建立一個(gè)鏈路狀態(tài)數(shù)據(jù)庫。
- 這個(gè)數(shù)據(jù)庫實(shí)際上就是全網(wǎng)的拓?fù)浣Y(jié)構(gòu)圖找田,它在全網(wǎng)范圍內(nèi)是一致的(這稱為鏈路狀態(tài)數(shù)據(jù)庫的同步)歌憨。
- OSPF 的鏈路狀態(tài)數(shù)據(jù)庫能較快地進(jìn)行更新,使各個(gè)路由器能及時(shí)更新其路由表墩衙。OSPF 的更新過程收斂得快是其重要優(yōu)點(diǎn)务嫡。
OSPF的區(qū)域(area)
- 為了使 OSPF 能夠用于規(guī)模很大的網(wǎng)絡(luò),OSPF 將一個(gè)自治系統(tǒng)再劃分為若干個(gè)更小的范圍漆改,叫作區(qū)域心铃。
- 每一個(gè)區(qū)域都有一個(gè) 32 位的區(qū)域標(biāo)識(shí)符(用點(diǎn)分十進(jìn)制表示)。
- 區(qū)域也不能太大籽懦,在一個(gè)區(qū)域內(nèi)的路由器最好不超過 200 個(gè)纬傲。
劃分為兩種不同區(qū)域
- 劃分區(qū)域的好處就是將利用洪泛法交換鏈路狀態(tài)信息的范圍局限于每一個(gè)區(qū)域而不是整個(gè)的自治系統(tǒng),這就減少了整個(gè)網(wǎng)絡(luò)上的通信量呀酸。
- 在一個(gè)區(qū)域內(nèi)部的路由器只知道本區(qū)域的完整網(wǎng)絡(luò)拓?fù)湎炻浚恢榔渌麉^(qū)域的網(wǎng)絡(luò)拓?fù)涞那闆r。
- OSPF 使用層次結(jié)構(gòu)的區(qū)域劃分捶码。在上層的區(qū)域叫作主干區(qū)域(backbone area)羽氮。主干區(qū)域的標(biāo)識(shí)符規(guī)定為0.0.0.0。主干區(qū)域的作用是用來連通其他在下層的區(qū)域惫恼。
主干區(qū)域的作用是用來連通其他在下層的區(qū)域档押。從其他區(qū)域來的信息都由區(qū)域邊界路由器進(jìn)行概括。上圖中R3祈纯,R4令宿,R7都是區(qū)域邊界路由器,顯然每一個(gè)區(qū)域至少有一個(gè)區(qū)域邊界路由器腕窥,在主干區(qū)域的路由器叫做主干路由器粒没,如R3,R4簇爆,R5癞松,R6,R7入蛆,一個(gè)主干路由器可以同時(shí)是區(qū)域邊界路由器响蓉,如R3,R4哨毁,R7枫甲,在主干區(qū)域還要有一個(gè)路由器專門和本自治系統(tǒng)外的其他自治系統(tǒng)交換路由信息。這樣的路由器叫做自治系統(tǒng)邊界路由器(R6)
OSPF直接用IP數(shù)據(jù)報(bào)傳送
- OSPF 不用 UDP 而是直接用 IP 數(shù)據(jù)報(bào)傳送。
- OSPF 構(gòu)成的數(shù)據(jù)報(bào)很短言秸。這樣做可減少路由信息的通信量软能。
- 數(shù)據(jù)報(bào)很短的另一好處是可以不必將長的數(shù)據(jù)報(bào)分片傳送。分片傳送的數(shù)據(jù)報(bào)只要丟失一個(gè)举畸,就無法組裝成原來的數(shù)據(jù)報(bào)查排,而整個(gè)數(shù)據(jù)報(bào)就必須重傳。
OSPF的其他特點(diǎn)
- OSPF 對(duì)不同的鏈路可根據(jù) IP 分組的不同服務(wù)類型 TOS 而設(shè)置成不同的代價(jià)抄沮。因此跋核,OSPF 對(duì)于不同類型的業(yè)務(wù)可計(jì)算出不同的路由。
- 如果到同一個(gè)目的網(wǎng)絡(luò)有多條相同代價(jià)的路徑叛买,那么可以將通信量分配給這幾條路徑砂代。這叫作多路徑間的負(fù)載平衡。
- 所有在 OSPF 路由器之間交換的分組都具有鑒別的功能率挣,這就保證了僅在可信賴的路由器之間交換鏈路狀態(tài)信息刻伊。
- 支持可變長度的子網(wǎng)劃分和無分類編址 CIDR。
- 每一個(gè)鏈路狀態(tài)都帶上一個(gè) 32 位的序號(hào)椒功,序號(hào)越大狀態(tài)就越新捶箱。
OSPF分組
- 版本 當(dāng)前為2
- 類型 5種類型分組中的一種
- 分組長度 包括OSPF首部在內(nèi)的分組長度,以字節(jié)為單位
- 路由器標(biāo)識(shí)符 標(biāo)志發(fā)送該分組的路由器的接口的IP地址
- 區(qū)域標(biāo)識(shí)符 分組屬于的區(qū)域的標(biāo)識(shí)符
- 檢驗(yàn)和 用來檢驗(yàn)分組中的差錯(cuò)
- 鑒別類型 目前只有兩種动漾。0(不用)和1(口令)
- 鑒別 鑒別類型為0時(shí)就填入0丁屎,為1時(shí)就填入8個(gè)字符的口令
OSPF的5種分組類型
- 類型1,問候(Hello)分組旱眯,來發(fā)現(xiàn)和維持臨站的可達(dá)性
- 類型2,數(shù)據(jù)庫描述(Database Description)分組删豺,向臨站給出自己的鏈路狀態(tài)數(shù)據(jù)庫中的所有鏈路狀態(tài)項(xiàng)目的摘要信息
- 類型3共虑,鏈路狀態(tài)請(qǐng)求(Link State Request)分組,向?qū)Ψ秸?qǐng)求發(fā)送某些鏈路狀態(tài)項(xiàng)目的詳細(xì)信息
- 類型4呀页,鏈路狀態(tài)更新(Link State Update)分組妈拌,用洪泛法對(duì)全網(wǎng)更新鏈路狀態(tài)
- 類型5,鏈路狀態(tài)確認(rèn)(Link State Acknowledgment)分組赔桌,對(duì)鏈路更新分組的確認(rèn)
OSPF的基本操作
OSPF使用的是可靠的洪泛法
假設(shè)路由器R用洪泛法發(fā)出鏈路狀態(tài)更新分組供炎。圖中的一些小箭頭表示更新分組渴逻。第一次先發(fā)給相鄰的三個(gè)路由器疾党。這三個(gè)路由器將收到的分組再進(jìn)行轉(zhuǎn)發(fā)時(shí),要將其上游路由器除外惨奕⊙┪唬可靠的洪泛法是在收到更新分組后要發(fā)送確認(rèn)(收到重復(fù)更新的分組只需發(fā)送一次確認(rèn),圖中藍(lán)綠箭頭表示確認(rèn)分組)
OSPF的其他特點(diǎn)
- OSPF 還規(guī)定每隔一段時(shí)間梨撞,如 30 分鐘雹洗,要刷新一次數(shù)據(jù)庫中的鏈路狀態(tài)香罐。
- 由于一個(gè)路由器的鏈路狀態(tài)只涉及到與相鄰路由器的連通狀態(tài),因而與整個(gè)互聯(lián)網(wǎng)的規(guī)模并無直接關(guān)系时肿。因此當(dāng)互聯(lián)網(wǎng)規(guī)模很大時(shí)庇茫,OSPF 協(xié)議要比距離向量協(xié)議 RIP 好得多。
- OSPF 沒有“壞消息傳播得慢”的問題螃成,據(jù)統(tǒng)計(jì)旦签,其響應(yīng)網(wǎng)絡(luò)變化的時(shí)間小于 100 ms。
- 若N個(gè)路由器連接在一個(gè)以太網(wǎng)上寸宏,則每個(gè)路由器要向其他N-1個(gè)路由器發(fā)送鏈路狀態(tài)信息宁炫,因而共有N (N-1)個(gè)鏈路狀態(tài)要在這個(gè)以太網(wǎng)上傳送。OSPF協(xié)議對(duì)這種多點(diǎn)接入局域網(wǎng)采用了指定的路由器的方法氮凝,使廣播的信息量大大減少羔巢。指定的路由器代表該局域網(wǎng)上所有的鏈路向連接到該網(wǎng)絡(luò)上的各路由器發(fā)送狀態(tài)信息。
外部網(wǎng)關(guān)協(xié)議BGP
- BGP 是不同自治系統(tǒng)的路由器之間交換路由信息的協(xié)議罩阵。
- BGP 較新版本是 2006 年 1 月發(fā)表的 BGP-4(BGP 第 4 個(gè)版本)竿秆,即 RFC 4271 ~ 4278。
- 可以將 BGP-4 簡寫為 BGP永脓。
BGP使用的環(huán)境與內(nèi)部網(wǎng)關(guān)協(xié)議不同的原因
- 因特網(wǎng)的規(guī)模太大袍辞,使得自治系統(tǒng)之間路由選擇非常困難。對(duì)于自治系統(tǒng)之間的路由選擇常摧,要尋找最佳路由是很不現(xiàn)實(shí)的搅吁。
- 當(dāng)一條路徑通過幾個(gè)不同 AS 時(shí),要想對(duì)這樣的路徑計(jì)算出有意義的代價(jià)是不太可能的落午。
- 比較合理的做法是在 AS 之間交換“可達(dá)性”信息谎懦。
- 自治系統(tǒng)之間的路由選擇必須考慮有關(guān)策略。
- 因此溃斋,邊界網(wǎng)關(guān)協(xié)議 BGP 只能是力求尋找一條能夠到達(dá)目的網(wǎng)絡(luò)且比較好的路由(不能兜圈子)界拦,而并非要尋找一條最佳路由。
BGP發(fā)言人
- 每一個(gè)自治系統(tǒng)的管理員要選擇至少一個(gè)路由器作為該自治系統(tǒng)的**“ BGP 發(fā)言人” **梗劫。
- 一般說來享甸,兩個(gè) BGP 發(fā)言人都是通過一個(gè)共享網(wǎng)絡(luò)連接在一起的,而 BGP 發(fā)言人往往就是 BGP 邊界路由器梳侨,但也可以不是 BGP 邊界路由器蛉威。
BGP交換路由信息
- 一個(gè) BGP 發(fā)言人與其他自治系統(tǒng)中的 BGP 發(fā)言人要交換路由信息,就要先建立 TCP 連接走哺,然后在此連接上交換 BGP 報(bào)文以建立 BGP 會(huì)話(session)蚯嫌,利用 BGP 會(huì)話交換路由信息。
- 使用 TCP 連接能提供可靠的服務(wù),也簡化了路由選擇協(xié)議择示。
- 使用 TCP 連接交換路由信息的兩個(gè) BGP 發(fā)言人束凑,彼此成為對(duì)方的鄰站或對(duì)等站。
BGP發(fā)言人和自治系統(tǒng)AS的關(guān)系
每個(gè)BGP發(fā)言人除了運(yùn)行BGP協(xié)議外栅盲,還必須運(yùn)行自治系統(tǒng)所使用的內(nèi)部網(wǎng)關(guān)協(xié)議汪诉,如OSPF或RIP。
AS的連通圖舉例
- BGP 所交換的網(wǎng)絡(luò)可達(dá)性的信息就是要到達(dá)某個(gè)網(wǎng)絡(luò)所要經(jīng)過的一系列 AS谈秫。
- 當(dāng) BGP 發(fā)言人互相交換了網(wǎng)絡(luò)可達(dá)性的信息后摩瞎,各 BGP 發(fā)言人就根據(jù)所采用的策略從收到的路由信息中找出到達(dá)各 AS 的較好路由。
它是樹形結(jié)構(gòu)不存在回路
BGP發(fā)言人交換路徑向量
BGP協(xié)議的特點(diǎn)
- BGP 協(xié)議交換路由信息的結(jié)點(diǎn)數(shù)量級(jí)是自治系統(tǒng)數(shù)的量級(jí)孝常,這要比這些自治系統(tǒng)中的網(wǎng)絡(luò)數(shù)少很多旗们。
- 每一個(gè)自治系統(tǒng)中 BGP 發(fā)言人(或邊界路由器)的數(shù)目是很少的。這樣就使得自治系統(tǒng)之間的路由選擇不致過分復(fù)雜构灸。
- BGP 支持 CIDR上渴,因此 BGP 的路由表也就應(yīng)當(dāng)包括目的網(wǎng)絡(luò)前綴、下一跳路由器喜颁,以及到達(dá)該目的網(wǎng)絡(luò)所要經(jīng)過的各個(gè)自治系統(tǒng)序列稠氮。
- 在BGP 剛剛運(yùn)行時(shí),BGP 的鄰站是交換整個(gè)的 BGP 路由表半开。但以后只需要在發(fā)生變化時(shí)更新有變化的部分隔披。這樣做對(duì)節(jié)省網(wǎng)絡(luò)帶寬和減少路由器的處理開銷方面都有好處。
BGP共使用四種報(bào)文
- 打開(OPEN)報(bào)文寂拆,用來與相鄰的另一個(gè)BGP發(fā)言人建立關(guān)系奢米。
- 更新(UPDATE)報(bào)文,用來發(fā)送某一路由的信息纠永,以及列出要撤消的多條路由鬓长。
- 保活(KEEPALIVE)報(bào)文尝江,用來確認(rèn)打開報(bào)文和周期性地證實(shí)鄰站關(guān)系涉波。
- 通知(NOTIFICATION)報(bào)文,用來發(fā)送檢測到的差錯(cuò)炭序。
在 RFC 2918 中增加了 ROUTE-REFRESH 報(bào)文啤覆,用來請(qǐng)求對(duì)等端重新通告。
BGP報(bào)文具有通用的首部
路由器在網(wǎng)際互連中的作用
路由器的結(jié)構(gòu)
路由器是一種具有多個(gè)輸入端口和多個(gè)輸出端口的專用計(jì)算機(jī)惭聂,其任務(wù)是轉(zhuǎn)發(fā)分組窗声。也就是說,將路由器某個(gè)輸入端口收到的分組彼妻,按照分組要去的目的地(即目的網(wǎng)絡(luò))嫌佑,把該分組從路由器的某個(gè)合適的輸出端口轉(zhuǎn)發(fā)給下一跳路由器。下一跳路由器也按照這種方法處理分組侨歉,直到該分組到達(dá)終點(diǎn)為止屋摇。
典型的路由器結(jié)構(gòu)
下圖的方框中的1,2,3分別代表物理層,數(shù)據(jù)鏈路層和網(wǎng)絡(luò)層的處理模塊
從圖中可以看出幽邓,整個(gè)路由器結(jié)構(gòu)可以劃分為兩大部分 路由選擇部分和分組轉(zhuǎn)發(fā)部分炮温。
路由選擇部分也叫作控制部分,其核心構(gòu)件是路由選擇處理機(jī)牵舵。路由選擇處理機(jī)的任務(wù)是根據(jù)所選定的路由選擇協(xié)議(上面的內(nèi)部/外部...協(xié)議)構(gòu)造出路由表柒啤,通常經(jīng)常或定期地和相鄰路由器交換路由信息而不斷地更新和維護(hù)路由表畸颅。
分組轉(zhuǎn)發(fā)部分是本節(jié)要討論的問題担巩,它由三部分組成:交換結(jié)構(gòu)、一組輸入端口没炒、一組輸出端口(這里的端口就指的是硬件接口)
圖中的交換結(jié)構(gòu)又稱為交換組織涛癌,它的作用是根據(jù)轉(zhuǎn)發(fā)表對(duì)分組進(jìn)行處理,將某個(gè)輸入端口進(jìn)入的分組從一個(gè)合適的輸出端口轉(zhuǎn)發(fā)出去送火。交換結(jié)構(gòu)本身就是一種網(wǎng)絡(luò)拳话,但這種網(wǎng)絡(luò)完全包含在路由器中,因此交換網(wǎng)絡(luò)可看成是在路由器中的網(wǎng)絡(luò)
轉(zhuǎn)發(fā)和路由器選擇的區(qū)別
- “轉(zhuǎn)發(fā)”(forwarding)就是路由器根據(jù)轉(zhuǎn)發(fā)表將用戶的 IP 數(shù)據(jù)報(bào)從合適的端口轉(zhuǎn)發(fā)出去种吸,僅僅涉及到一個(gè)路由器弃衍。
- “路由選擇”(routing)則是按照分布式算法,根據(jù)從各相鄰路由器得到的關(guān)于網(wǎng)絡(luò)拓?fù)涞淖兓闆r坚俗,動(dòng)態(tài)地改變所選擇的路由镜盯,涉及到很多路由器。
路由表是根據(jù)路由選擇算法得出的猖败。而轉(zhuǎn)發(fā)表是從路由表得出的形耗。
在討論路由選擇的原理時(shí)拱礁,往往不去區(qū)分轉(zhuǎn)發(fā)表和路由表的區(qū)別
輸入端口對(duì)線路上收到的分組的處理
數(shù)據(jù)鏈路層剝?nèi)撞亢臀膊亢蠓蹈桑瑢⒎纸M送到網(wǎng)絡(luò)層的隊(duì)列中排隊(duì)等待處理,這會(huì)產(chǎn)生一定的時(shí)延
有一詳細(xì)的過程請(qǐng)看P167
輸出端口將交換結(jié)構(gòu)傳送來的分組發(fā)送到線路
當(dāng)交換結(jié)構(gòu)傳送過來的分組先進(jìn)行緩存。數(shù)據(jù)鏈路層處理模塊將分組加上鏈路層的首部和尾部褂微,交給物理層后發(fā)送到外部線路呀癣。
分組丟棄
- 若路由器處理分組的速率趕不上分組進(jìn)入隊(duì)列的速率,則隊(duì)列的存儲(chǔ)空間最終必定減少到零棒妨,這就使后面再進(jìn)入隊(duì)列的分組由于沒有存儲(chǔ)空間而只能被丟棄。
- 路由器中的輸入或輸出隊(duì)列產(chǎn)生溢出是造成分組丟失的重要原因纷纫。
交換結(jié)構(gòu)
交換結(jié)構(gòu)是路由器的關(guān)鍵構(gòu)件枕扫,正是這個(gè)交換結(jié)構(gòu)將分組從一個(gè)輸入端口轉(zhuǎn)移到某個(gè)合適的輸出端口。
IP多播
IP多播的基本概念
多播可以明顯地減少網(wǎng)絡(luò)中資源的消耗
IP多播的一些特點(diǎn)
- 多播使用組地址—— IP 使用 D 類地址支持多播辱魁。多播地址只能用于目的地址烟瞧,而不能用于源地址诗鸭。
- 永久組地址——由因特網(wǎng)號(hào)碼指派管理局 IANA 負(fù)責(zé)指派。
- 動(dòng)態(tài)的組成員
- 使用硬件進(jìn)行多播
在局域網(wǎng)上進(jìn)行硬件多播
- 因特網(wǎng)號(hào)碼指派管理局 IANA 擁有的以太網(wǎng)地址塊的高 24 位為 00-00-5E参滴。
- 因此 TCP/IP 協(xié)議使用的以太網(wǎng)多播地址塊的范圍是:從 00-00-5E-00-00-00到 00-00-5E-FF-FF-FF
- D 類 IP 地址可供分配的有 28 位强岸,在這 28 位中的前 5 位不能用來構(gòu)成以太網(wǎng)硬件地址。
D類IP地址與以太網(wǎng)多播地址的映射關(guān)系
有一段介紹P171
網(wǎng)際組管理協(xié)議IGMP和多播路由選擇協(xié)議
IP多播需要兩種協(xié)議
- 為了使路由器知道多播組成員的信息卵洗,需要利用網(wǎng)際組管理協(xié)議 IGMP (Internet Group Management Protocol)。
- 連接在局域網(wǎng)上的多播路由器還必須和因特網(wǎng)上的其他多播路由器協(xié)同工作弥咪,以便把多播數(shù)據(jù)報(bào)用最小代價(jià)傳送給所有的組成員过蹂。這就需要使用多播路由選擇協(xié)議。
IGMP使多播路由器知道多播組成員信息
IGMP的本地使用范圍
- IGMP 并非在因特網(wǎng)范圍內(nèi)對(duì)所有多播組成員進(jìn)行管理的協(xié)議聚至。
- IGMP 不知道 IP 多播組包含的成員數(shù)酷勺,也不知道這些成員都分布在哪些網(wǎng)絡(luò)上。
- IGMP 協(xié)議是讓連接在本地局域網(wǎng)上的多播路由器知道本局域網(wǎng)上是否有主機(jī)(嚴(yán)格講扳躬,是主機(jī)上的某個(gè)進(jìn)程)參加或退出了某個(gè)多播組脆诉。
多播路由選擇協(xié)議比單播路由選擇協(xié)議復(fù)雜的多
- 多播轉(zhuǎn)發(fā)必須動(dòng)態(tài)地適應(yīng)多播組成員的變化(這時(shí)網(wǎng)絡(luò)拓?fù)洳⑽窗l(fā)生變化)。請(qǐng)注意贷币,單播路由選擇通常是在網(wǎng)絡(luò)拓?fù)浒l(fā)生變化時(shí)才需要更新路由击胜。
- 多播路由器在轉(zhuǎn)發(fā)多播數(shù)據(jù)報(bào)時(shí),不能僅僅根據(jù)多播數(shù)據(jù)報(bào)中的目的地址役纹,而是還要考慮這個(gè)多播數(shù)據(jù)報(bào)從什么地方來和要到什么地方去偶摔。
- 多播數(shù)據(jù)報(bào)可以由沒有加入多播組的主機(jī)發(fā)出,也可以通過沒有組成員接入的網(wǎng)絡(luò)促脉。
IGMP是整個(gè)網(wǎng)際協(xié)議IP的一個(gè)組成部分
- 和 ICMP 相似辰斋,IGMP 使用 IP 數(shù)據(jù)報(bào)傳遞其報(bào)文(即 IGMP 報(bào)文加上 IP 首部構(gòu)成 IP 數(shù)據(jù)報(bào)),但它也向 IP 提供服務(wù)瘸味。
- 因此宫仗,我們不把 IGMP 看成是一個(gè)單獨(dú)的協(xié)議,而是屬于整個(gè)網(wǎng)際協(xié)議 IP 的一個(gè)組成部分旁仿。
IGMP可分為兩個(gè)階段
- 第一階段:當(dāng)某個(gè)主機(jī)加入新的多播組時(shí)藕夫,該主機(jī)應(yīng)向多播組的多播地址發(fā)送IGMP 報(bào)文,聲明自己要成為該組的成員枯冈。本地的多播路由器收到 IGMP 報(bào)文后汁胆,將組成員關(guān)系轉(zhuǎn)發(fā)給因特網(wǎng)上的其他多播路由器。
- 第二階段:因?yàn)榻M成員關(guān)系是動(dòng)態(tài)的霜幼,因此本地多播路由器要周期性地探詢本地局域網(wǎng)上的主機(jī)嫩码,以便知道這些主機(jī)是否還繼續(xù)是組的成員。