第四章 網(wǎng)絡(luò)層
虛電路服務(wù)和數(shù)據(jù)報服務(wù):
- 虛電路(電話機(jī)采用這種服務(wù)): 可靠通信由網(wǎng)絡(luò)來保證悟狱,通信前必須建立連接。
- 數(shù)據(jù)報服務(wù): 不提供可靠通信,不需要建立連接禁漓。
因特網(wǎng)的網(wǎng)絡(luò)層采用數(shù)據(jù)報服務(wù)赢乓,網(wǎng)絡(luò)層向上只提供簡單靈活的忧侧,無連接的,盡最大努力交付的數(shù)據(jù)報服務(wù)牌芋。網(wǎng)絡(luò)層不提供服務(wù)質(zhì)量的承諾蚓炬。
IP地址
IP地址分為兩個部分,網(wǎng)絡(luò)號 和 主機(jī)號 躺屁。網(wǎng)絡(luò)號標(biāo)志主機(jī)所連接到的網(wǎng)絡(luò)肯夏,一個網(wǎng)絡(luò)號在整個因特網(wǎng)范圍內(nèi)必須是唯一的。主機(jī)號標(biāo)志主機(jī)犀暑,一個主機(jī)號在它前面的內(nèi)網(wǎng)絡(luò)號所指明的網(wǎng)絡(luò)范圍內(nèi)必須是唯一的驯击。
由此可見,一個IP地址在整個因特網(wǎng)范圍內(nèi)是唯一的耐亏。
IP地址分為三類徊都。
IP地址 網(wǎng)絡(luò)號 主機(jī)號 子網(wǎng)數(shù) 主機(jī)數(shù) 第一個網(wǎng)絡(luò)號 最后一個網(wǎng)絡(luò)號
A類 8位(0開頭) 24位 126(2^7-2) 2^24-2 1 126
B類 16位(10開頭) 16位 2^14-1 2^16-2 128.1 191.255
C類 24位(110開頭) 8位 2^21-1 2^8-2 192.0.1 223.255.255
B類和C類之所以減1是因為10和110開頭使得不會出現(xiàn)網(wǎng)絡(luò)號全部為0的情況,而128.0.0.0和192.0.0.0都是不指派的苹熏,所以減1碟贾。而主機(jī)號里面,主機(jī)號全部為0都是表示該網(wǎng)絡(luò)轨域,而全部為1作為本地軟件環(huán)回測試袱耽。
IP地址和硬件地址
硬件地址是數(shù)據(jù)鏈路層和物理層使用的地址,而IP地址是網(wǎng)路層和以上各層使用的地址干发,是一種邏輯地址朱巨。
使用IP地址的IP數(shù)據(jù)報一旦交給了數(shù)據(jù)鏈路層,就被封裝成了MAC幀枉长。MAX幀在傳送時使用的源地址和目的地址都是硬件地址冀续,寫在MAX幀的首部琼讽。
地址解析協(xié)議ARP(address resolution protocol)
ARP是用來解決知道機(jī)器的IP地址,找出相應(yīng)的硬件地址的問題洪唐。
原理:每個主機(jī)ARP高速緩存中存放一個從IP地址到硬件地址的映射表钻蹬,并且經(jīng)常動態(tài)更新這個映射表。
過程:主機(jī)A有了主機(jī)B的IP地址凭需,但是發(fā)現(xiàn)沒有主機(jī)B的硬件地址问欠,于是在本網(wǎng)絡(luò)中 廣播 發(fā)送一個ARP請求分組,這個請求分組的內(nèi)容主要是主機(jī)A自己的IP地址和硬件地址粒蜈,并想知道IP為XXX主機(jī)B的硬件地址顺献。其他所有主機(jī)都會收到這個ARP分組,主機(jī)B會發(fā)回A自己的硬件地址枯怖,而其他主機(jī)都會不理睬這個ARP請求分組注整。主機(jī)A至此就可以獲得主機(jī)B的硬件地址。
同時度硝,ARP緩存中的每一個映射地址項目都設(shè)置了 生存時間 肿轨,凡超過生存時間的項目就從高速緩存中刪除掉。
劃分子網(wǎng)和構(gòu)造超網(wǎng)
三級IP地址
為了可以劃分子網(wǎng)塘淑,IP地址從二級變成三級IP地址萝招,在原有的主機(jī)號劃分為子網(wǎng)號和主機(jī)號兩部分,但是該網(wǎng)絡(luò)對外依然表現(xiàn)為一個網(wǎng)絡(luò)存捺。
子網(wǎng)掩碼
如果只用網(wǎng)絡(luò)號和主機(jī)好二級IP地址,有時候不需要那么多的IP曙蒸,容易造成IP地址的嚴(yán)重浪費捌治。于是用子網(wǎng)掩碼來再細(xì)分IP地址。
將子網(wǎng)掩碼和IP地址進(jìn)行逐位的 與 運算纽窟,就可以得出其網(wǎng)絡(luò)地址肖油。
如果網(wǎng)絡(luò)沒有劃分子網(wǎng),子網(wǎng)掩碼就使用默認(rèn)子網(wǎng)掩碼臂港。
- A類地址的默認(rèn)子網(wǎng)掩碼是255.0.0.0
- B類地址的默認(rèn)子網(wǎng)掩碼是255.255.0.0
- C類地址的默認(rèn)子網(wǎng)掩碼是255.255.255.0
子網(wǎng)數(shù) = 2^n-2森枪,n是子網(wǎng)號的位數(shù)。
使用子網(wǎng)掩碼后路由表必須包含三項內(nèi)容:目的網(wǎng)絡(luò)地址审孽,子網(wǎng)掩碼,下一跳地址县袱。在路由轉(zhuǎn)發(fā)中需要用路由表中的每一行的子網(wǎng)掩碼和目的IP地址相與操作,如果與目的網(wǎng)絡(luò)地址符合則進(jìn)行轉(zhuǎn)發(fā)佑力。
無分類編址CIDR(Classless Inter-Domain Routing 構(gòu)成超網(wǎng))
CIDR消除了傳統(tǒng)的A類式散,B類和C類地址以及劃分子網(wǎng)的概念,從三級IP地址又變回了 無分類兩級地址打颤。IP地址分為網(wǎng)絡(luò)前綴和主機(jī)號兩部分暴拄,使用斜線記法漓滔,例如128.14.35.7/20,20表示前20位是網(wǎng)絡(luò)號乖篷,后12位是主機(jī)號响驴。
另外CIDR可以很方便地推出最小地址和最大地址,例如128.14.35.7/20的最小地址是128.14.32.0(后12位都是0)和128.14.47.255(后12位都是1)撕蔼,但是一般最小地址和最大地址都不使用踏施。
由于一個CIDR地址塊中有很多地址,所以在路由表中就利用CIDR地址塊來查找目的網(wǎng)絡(luò)罕邀,這種地址的聚合常稱為 路由聚合(構(gòu)成超網(wǎng)) 畅形。
最長前綴匹配
采用CIDR后路由表中的項目改成只有 網(wǎng)絡(luò)前綴 和 下一跳地址 。匹配方法也變成了直接匹配網(wǎng)絡(luò)前綴诉探。但是在查找路由表時可能會得到不止一個匹配結(jié)果日熬。因此應(yīng)當(dāng)從匹配結(jié)果中選擇具有最長網(wǎng)絡(luò)前綴的路由(最長前綴匹配)。
為了加快最長前綴匹配的查找肾胯,有很多算法竖席。最常用的就是 二叉線索 ,一棵不平衡的二叉樹(左0右1)敬肚。首先為每個路由表中下一跳地址計算出 唯一前綴 毕荐,用所有的唯一前綴構(gòu)成這棵二叉線索樹,然后只需要在這棵二叉線索樹查找出唯一前綴即可艳馒。
另外還有一些壓縮技術(shù)進(jìn)一步加速二叉線索的查找速度憎亚,例如有幾個IP地址的唯一前綴都是1011開頭,那只要目的IP地址是1011開頭弄慰,則可以直接從第五層開始(跳過前4層第美。)。
網(wǎng)際控制報文協(xié)議ICMP
為了更有效地轉(zhuǎn)發(fā)IP數(shù)據(jù)報和提高交付成功的機(jī)會陆爽,在網(wǎng)絡(luò)層使用ICMP(Internet Control Message Protocol)什往。允許主機(jī)或路由器報告差錯情況和提供有關(guān)異常情況的報告。ICMP報文是裝在IP數(shù)據(jù)報中慌闭,作為數(shù)據(jù)部分存在别威。
最典型的ICMP應(yīng)用就是PING,用來測試兩個主機(jī)之間的連通性驴剔。PING是應(yīng)用層直接使用網(wǎng)絡(luò)層ICMP的一個例子省古,它沒有通過運輸層的TCP或UDP。
路由選擇協(xié)議
路由選擇協(xié)議就是解決路由表中的路由是怎么得出的問題仔拟。
自治系統(tǒng)(AS)衫樊,一個網(wǎng)絡(luò)對其他AS表現(xiàn)出的是一個單一的和一致的路由選擇策略。
路由選擇協(xié)議劃分為兩大類:
內(nèi)部網(wǎng)關(guān)協(xié)議IGP(Interior Gateway Protocol):即在一個自治系統(tǒng)內(nèi)部使用的路由選擇協(xié)議,如RIP和OSPF科侈。
外部網(wǎng)關(guān)協(xié)議EGP(External Gateway Protocol):自治系統(tǒng)之間使用的路由選擇協(xié)議载佳,如BGP-4
RIP(Routing Information Protocol)
RIP是一種分布式的基于距離向量的路由選擇協(xié)議,網(wǎng)絡(luò)中的每一個路由器都要維護(hù)自己到其他每一個目的網(wǎng)絡(luò)的距離記錄臀栈。從一個路由器到直接連接的網(wǎng)絡(luò)距離定義為1蔫慧,每隔一個路由器距離就加1,RIP允許一條路徑最多只能包含15個路由器,因此16以上的都被認(rèn)為不可達(dá)权薯。
RIP協(xié)議規(guī)定姑躲,路由器一開始只知道到直接連接的網(wǎng)絡(luò)距離,每一個路由僅僅和相鄰路由交換信息盟蚣,每次交換的信息是當(dāng)前本路由所知道的全部信息黍析,即自己的路由表。這樣繼續(xù)下去屎开,每個路由都最終擁有整個自治系統(tǒng)的全局路由信息阐枣。
OSPF(開放最短路徑優(yōu)先 Open Shortest Path First)
OSPF使用分布式的鏈路狀態(tài)協(xié)議。每個路由向本自治系統(tǒng)中所有相鄰路由發(fā)送信息奄抽,收到信息的路由再向其他路由發(fā)送信息(除了剛剛發(fā)來消息的路由)蔼两,信息內(nèi)容就是與本路由相鄰的所有路由器的鏈路狀態(tài),稱為"度量"逞度,用來表示費用额划,距離,時延档泽,帶寬等等俊戳,有時候會叫"代價"。另外只有當(dāng)鏈路狀態(tài)發(fā)生變化時茁瘦,路由器才向所有路由發(fā)送信息品抽。
OSPF由于各路由器之間頻繁地交換鏈路狀態(tài)信息,因此所有路由最終都能建立一個 鏈路狀態(tài)數(shù)據(jù)庫(即全網(wǎng)的拓?fù)浣Y(jié)構(gòu)圖) 甜熔,而RIP每個路由只知道到所有網(wǎng)絡(luò)的距離以及下一跳路由,卻不知道全網(wǎng)拓?fù)浣Y(jié)構(gòu)突倍。
BGP(邊界網(wǎng)關(guān)協(xié)議腔稀,方便起見,BGP-4簡稱BGP)
BGP只能力求尋找一條能夠到達(dá)目的網(wǎng)絡(luò)且比較好的路由羽历,并非尋找一條最佳路由焊虏。
BGP要求每一個自治系統(tǒng)的管理員至少配置一個路由器作為該自治系統(tǒng)的BGP發(fā)言人,以此簡化邊界路由選擇秕磷。
IP多播
也叫組播诵闭,即一對多同時通信。例如視頻服務(wù),視頻服務(wù)器只需要發(fā)送一次數(shù)據(jù)疏尿,其他路由在轉(zhuǎn)發(fā)過程中瘟芝,復(fù)制自己需要轉(zhuǎn)發(fā)的分組,最終把數(shù)據(jù)傳到各客戶端中褥琐。
NAT(Network Address Translation)
使用NAT技術(shù)锌俱,在專用網(wǎng)絡(luò)內(nèi)部使用專用IP地址,可以節(jié)約寶貴的IP地址敌呈。
裝有NAT軟件的路由器叫做NAT路由贸宏,它至少有一個有效的外部全球IP地址,所有使用本地地址的主機(jī)在和外界通信時磕洪,都要在NAT路由器上將其本地地址轉(zhuǎn)換成全球IP地址吭练,才能和互聯(lián)網(wǎng)連接。
NAT路由器會維護(hù)一個NAT地址轉(zhuǎn)換表析显,用來做本地地址和外界全球IP地址的轉(zhuǎn)換工作鲫咽,因此一個NAT路由具有多少個全球IP地址時,就只能 同時 使多少個主機(jī)接入因特網(wǎng)叫榕。