網(wǎng)絡(luò)層的目的是實(shí)現(xiàn)在任意結(jié)點(diǎn)間進(jìn)行數(shù)據(jù)報(bào)傳輸调鲸,它的目的與鏈路層、物理層不是一樣的嗎挽荡?但是通過(guò)它數(shù)據(jù)可以在更大的網(wǎng)絡(luò)中傳輸藐石。
為了能使數(shù)據(jù)更好地在更大的網(wǎng)絡(luò)中傳輸,網(wǎng)絡(luò)層主要實(shí)現(xiàn)三個(gè)功能:異構(gòu)網(wǎng)絡(luò)互聯(lián)定拟、路由與轉(zhuǎn)發(fā)和擁塞控制于微。
(一)異構(gòu)網(wǎng)互聯(lián)
1. 路由器
我們知道,在物理層、鏈路層角雷,可以使用不同的傳輸介質(zhì)和拓?fù)浣Y(jié)構(gòu)將幾臺(tái)祸穷、十幾臺(tái)主機(jī)連接在一起形成一個(gè)小型的局域網(wǎng),把這些組成結(jié)構(gòu)不完全相同的局域網(wǎng)稱為異構(gòu)網(wǎng)勺三,因此將它們連接擴(kuò)大成更大的網(wǎng)絡(luò)雷滚,需要一個(gè)類(lèi)似轉(zhuǎn)接頭的設(shè)備——路由器,路由器不僅僅可以連接異構(gòu)網(wǎng)吗坚,還能隔離沖突域和廣播域祈远,依照IP地址轉(zhuǎn)發(fā)。
下圖對(duì)集線器商源、網(wǎng)橋车份、交換機(jī)和路由器能否隔離沖突域和廣播域進(jìn)行比較:
- 當(dāng)多臺(tái)主機(jī)通過(guò)集線器互聯(lián)時(shí),無(wú)法隔離沖突域牡彻、廣播域扫沼;
- 多臺(tái)主機(jī)通過(guò)網(wǎng)橋、交換機(jī)互聯(lián)時(shí)庄吼,可以隔離沖突域缎除,但無(wú)法隔離廣播域;
-
多臺(tái)主機(jī)通過(guò)路由器互聯(lián)時(shí)总寻,既可以隔離沖突域器罐,又能隔離廣播域。
image.png
2. 路由器組成
路由器作為連接多個(gè)網(wǎng)絡(luò)的結(jié)點(diǎn)渐行,不僅需要完成對(duì)數(shù)據(jù)的分組轉(zhuǎn)發(fā)轰坊,還要選擇傳輸路徑,因此路由器主要由路由選擇和分組轉(zhuǎn)發(fā)組成祟印。
- 路由選擇:是路由器的控制部分肴沫,這部分的任務(wù)是根據(jù)選定的路由選擇協(xié)議構(gòu)造出路由表,同時(shí)定期和其他相鄰路由器交換路由信息從而更新和維護(hù)路由表旁理;
- 分組轉(zhuǎn)發(fā):這部分由交換結(jié)構(gòu)樊零、輸入端口和輸出端口組成
(二)路由與轉(zhuǎn)發(fā)
網(wǎng)絡(luò)層最重要的功能是路由與轉(zhuǎn)發(fā)功能我磁。路由也就是選擇一條合適的路孽文,轉(zhuǎn)發(fā)則是在這條路上遵守協(xié)議。這有點(diǎn)像從某個(gè)多個(gè)國(guó)家的交界城市自駕夺艰,選其中一條路芋哭,那么就遵守這個(gè)國(guó)家的交通協(xié)議。
1. 路由
1.1 路由算法
數(shù)據(jù)通過(guò)一個(gè)又一個(gè)路由器到達(dá)目的地址郁副,路由器怎么知道數(shù)據(jù)應(yīng)該從哪個(gè)端口出發(fā)才能到達(dá)目的地呢减牺?這就需要構(gòu)造路由表。
路由表有兩種構(gòu)造方式:靜態(tài)和動(dòng)態(tài)。
- 靜態(tài)路由:由網(wǎng)絡(luò)管理員手工配置路由信息拔疚;
- 動(dòng)態(tài)路由:通過(guò)路由器間彼此交換的信息來(lái)構(gòu)造路由表肥隆,分為距離-向量算法和鏈路狀態(tài)算法。
- 距離-向量算法:定期把它們的整個(gè)路由選擇表傳送給所有與之直接相鄰的結(jié)點(diǎn)稚失;
- 鏈路狀態(tài)算法:主動(dòng)測(cè)試所有鄰接結(jié)點(diǎn)的狀態(tài)栋艳,定期將鏈路狀態(tài)傳播給所有其他結(jié)點(diǎn)
1.2 層次路由
一個(gè)個(gè)小網(wǎng)絡(luò)可以構(gòu)成一個(gè)區(qū)域,足夠多的區(qū)域互連成一個(gè)網(wǎng)絡(luò)句各,多個(gè)網(wǎng)絡(luò)又形成巨大的互聯(lián)網(wǎng)吸占。要想讓數(shù)據(jù)高效在網(wǎng)絡(luò)中傳輸,采用“分而治之”的理念凿宾。
將互聯(lián)網(wǎng)分為許多較小的自治系統(tǒng)矾屯,系統(tǒng)有權(quán)決定自己內(nèi)部采用什么路由協(xié)議,這便是層次路由初厚。通過(guò)層次路由便可以采用靈活的協(xié)議傳輸數(shù)據(jù)件蚕。數(shù)據(jù)在自治系統(tǒng)內(nèi)傳輸采用內(nèi)部網(wǎng)關(guān)協(xié)議而自治系統(tǒng)之間則采用外部網(wǎng)關(guān)協(xié)議。
1.2.1 內(nèi)部網(wǎng)關(guān)協(xié)議
內(nèi)部網(wǎng)關(guān)協(xié)議有兩種協(xié)議:路由信息協(xié)議(RIP)和開(kāi)放最短路徑優(yōu)先協(xié)議(OSPF)
1.2.2 外部網(wǎng)關(guān)協(xié)議
外部網(wǎng)關(guān)協(xié)議則是邊界網(wǎng)關(guān)協(xié)議(BGP)产禾。內(nèi)部網(wǎng)關(guān)協(xié)議服務(wù)某個(gè)自治系統(tǒng)骤坐,范圍較小,所以盡可能有效地從源站送到目的站下愈,也就是找到一條最佳路徑纽绍。而外部網(wǎng)關(guān)協(xié)議需要面對(duì)更大的網(wǎng)絡(luò)范圍和網(wǎng)絡(luò)環(huán)境,因此更關(guān)注的找到比較好的路徑势似,也就是不能兜圈子拌夏。
BGP工作原理:
各自治系統(tǒng)的管理員選擇至少一個(gè)路由器作為"BGP發(fā)言人";
交換路由信息前要建立TCP連接履因,交換BGP報(bào)文障簿,建立BGP會(huì)話,通過(guò)BGP會(huì)話交換路由信息栅迄;
確認(rèn)相互交換網(wǎng)絡(luò)可到達(dá)性的信息后站故,BGP發(fā)言人找出到達(dá)各自自治系統(tǒng)較好路由;
將三種路由協(xié)議進(jìn)行比較:
2. 轉(zhuǎn)發(fā)
構(gòu)建大規(guī)模毅舆、異構(gòu)網(wǎng)絡(luò)的互聯(lián)網(wǎng)除了硬件的支持外西篓,還需要建立協(xié)議以實(shí)現(xiàn)數(shù)據(jù)報(bào)傳輸服務(wù)——IP協(xié)議。
目前IP協(xié)議有兩個(gè)版本:IPv4和IPv6憋活。
2.1 IPv4
現(xiàn)在主流的IP協(xié)議版本還是IPv4岂津。
2.1.1 組成
IP數(shù)據(jù)報(bào)主要由首部和數(shù)據(jù)部分組成,由TCP報(bào)文段封裝到數(shù)據(jù)部分悦即,再在前端加上一些描述信息的首部吮成,其格式如下圖:
IP協(xié)議使用分組轉(zhuǎn)發(fā)橱乱,當(dāng)報(bào)文過(guò)大時(shí)需要分片。分片的思路如下:
- 確定分片的組數(shù)粱甫;
- 計(jì)算每組的有效數(shù)據(jù)泳叠,并且根據(jù)分片是否為最后一片設(shè)置MF(more fragment)與DF(don't fragment);
- 計(jì)算偏移量茶宵。
2.1.2 IPv4地址與NAT
2.1.2.1 IPv4地址
如果把IP數(shù)據(jù)報(bào)看作是信析二,那么首部中的源地址與目的地址則分別是發(fā)信地址和郵件地址。為了方便路由計(jì)算這些地址节预,并且使IP地址足夠使用叶摄,因此將IP地址進(jìn)行分類(lèi)。
IP地址的格式: {<網(wǎng)絡(luò)號(hào)>,<主機(jī)號(hào)>}安拟,網(wǎng)絡(luò)號(hào)標(biāo)志主機(jī)所連接的網(wǎng)絡(luò)蛤吓,主機(jī)號(hào)標(biāo)志該主機(jī),每個(gè)IP地址都是唯一的糠赦。
IP地址分類(lèi)如下:
通過(guò)分類(lèi)会傲,可以計(jì)算每個(gè)網(wǎng)絡(luò)中最大的主機(jī)數(shù):
2.1.2.2 NAT
網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT)是一種轉(zhuǎn)換機(jī)制,將專(zhuān)用網(wǎng)絡(luò)地址轉(zhuǎn)換為公用地址拙泽,目的是為了對(duì)外隱藏內(nèi)部管理的IP地址淌山,這樣不僅可以保證網(wǎng)絡(luò)安全,還可以解決IP地址不足問(wèn)題顾瞻。
當(dāng)路由器接收到的目的地址是私有地址則一律不進(jìn)行轉(zhuǎn)發(fā)泼疑,而如果是公用地址,則是用NAT轉(zhuǎn)換表將源IP及端口號(hào)映射成全球IP號(hào)荷荤,然后從WAN端口發(fā)送到因特網(wǎng)上退渗。
2.1.3 子網(wǎng)劃分
IP地址有A、B蕴纳、C類(lèi)網(wǎng)絡(luò)號(hào)会油,如果把A類(lèi)網(wǎng)絡(luò)號(hào)分給一個(gè)廣播域,那么這個(gè)廣播域可以接入16,777,212臺(tái)主機(jī)古毛,然而一個(gè)廣播域不可能融入這么多臺(tái)主機(jī)翻翩,因?yàn)檫@樣會(huì)導(dǎo)致廣播域過(guò)飽和而癱瘓,而只給其分配一定數(shù)量的網(wǎng)絡(luò)號(hào)稻薇,則會(huì)浪費(fèi)大量的IP地址嫂冻。因此在IP地址中增加一個(gè)“子網(wǎng)號(hào)字段”,將IP地址劃分為三級(jí)颖低,即IP地址={<網(wǎng)絡(luò)號(hào)>,<子網(wǎng)號(hào)>,<主機(jī)號(hào)>}絮吵,也就是從主機(jī)號(hào)中借用幾個(gè)比特號(hào)作為子網(wǎng)號(hào)弧烤,這個(gè)子網(wǎng)號(hào)是對(duì)內(nèi)劃分的忱屑,對(duì)外仍舊表現(xiàn)為二級(jí)IP地址蹬敲。
主機(jī)或路由器如何判斷一個(gè)網(wǎng)絡(luò)是否進(jìn)行子網(wǎng)劃分了呢?——利用子網(wǎng)掩碼莺戒。
- 掩碼組成:與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ì)算子網(wǎng)號(hào):將IP地址和對(duì)應(yīng)的掩碼號(hào)逐位進(jìn)行AND運(yùn)算名段,即可的出子網(wǎng)的網(wǎng)絡(luò)地址
2.1.4 CIDR
CIDR是無(wú)分類(lèi)域間路由器選擇阱扬,目的是消除A、B伸辟、C類(lèi)網(wǎng)絡(luò)劃分麻惶,這樣可以大幅度提高IP地址空間利用率。相比較子網(wǎng)掩碼劃分信夫,它更加靈活窃蹋。
- 組成:IP::={<網(wǎng)絡(luò)前綴>,<主機(jī)號(hào)>},使用網(wǎng)絡(luò)前綴來(lái)替代子網(wǎng)絡(luò)的概念静稻,用斜線記法表示警没,如128.14.32.5/20,它的掩碼號(hào)為20個(gè)連續(xù)的1和后續(xù)的12個(gè)0振湾,進(jìn)行逐位AND運(yùn)算后得出網(wǎng)絡(luò)前綴杀迹,確定需要的主機(jī)號(hào)數(shù),剩下的便是子網(wǎng)號(hào)押搪。
- 超網(wǎng):將網(wǎng)絡(luò)前綴相同的的連續(xù)IP地址組成"CIDR地址塊"佛南,一個(gè)CIDR地址塊可以表示很多地址,這種地址的聚合叫做路由聚合嵌言,又稱為構(gòu)成超網(wǎng)嗅回。
上圖中,如果R1收到前綴為206.1的IP地址摧茴,它只需要轉(zhuǎn)發(fā)給R2绵载,具體發(fā)往網(wǎng)絡(luò)1還是網(wǎng)絡(luò)2,則由R2計(jì)算得出苛白。
2.1.5 協(xié)議
通過(guò)IP地址娃豹,可以將數(shù)據(jù)從某個(gè)網(wǎng)絡(luò)傳輸?shù)侥康木W(wǎng)絡(luò),但是把信息發(fā)送給哪臺(tái)主機(jī)呢购裙?由于路由器的隔離旱爆,IP網(wǎng)路沒(méi)辦法使用廣播方式查找MAC地址,只有通過(guò)鏈路層的MAC地址以廣播方式尋址谱姓。
因此,IP協(xié)議還包括三個(gè)協(xié)議——ARP民鼓、DHCP和ICMP,共同配合完成數(shù)據(jù)轉(zhuǎn)發(fā)蓬抄。
-
ARP(地址轉(zhuǎn)發(fā)協(xié)議)
ARP工作在網(wǎng)絡(luò)層丰嘉,用于實(shí)現(xiàn)IP地址到MAC地址的映射。每臺(tái)主機(jī)都有ARP高速緩存嚷缭,用來(lái)存放本局域網(wǎng)上各主機(jī)和路由器的IP地址到MAC地址的映射表饮亏。
image.png -
DHCP(動(dòng)態(tài)主機(jī)配置協(xié)議)
DHCP是應(yīng)用層協(xié)議,它給主機(jī)動(dòng)態(tài)地分配IP地址阅爽,當(dāng)一臺(tái)主機(jī)加入新的網(wǎng)絡(luò)時(shí)路幸,通過(guò)客戶/服務(wù)器方式獲取IP地址。
image.png -
ICMP(網(wǎng)際控制報(bào)文協(xié)議)
ICMP是網(wǎng)絡(luò)層協(xié)議付翁,讓主機(jī)或者路由器報(bào)告差錯(cuò)和異常情況劝赔。它的報(bào)文種類(lèi)有兩種——ICMP差錯(cuò)報(bào)告報(bào)文和ICMP詢問(wèn)報(bào)文。- ICMP差錯(cuò)報(bào)告報(bào)文:目標(biāo)主機(jī)或目標(biāo)主機(jī)上的路由器向源主機(jī)報(bào)告差錯(cuò)和異常情況胆敞;
- ICMP詢問(wèn)報(bào)文:包括回送請(qǐng)求和回答請(qǐng)求着帽、時(shí)間戳請(qǐng)求和回答報(bào)文、掩碼地址請(qǐng)求等報(bào)文移层。
2.2 IPv6
IPv6是解決IP地址耗盡的根本手段仍翰。它與IPv4的報(bào)文形式差別如下圖:
IPv6與IPv4地址通信示意圖:
(三)擁塞控制
在通信過(guò)程中,如果分組過(guò)量而導(dǎo)致網(wǎng)路性能下降观话,會(huì)產(chǎn)生擁塞予借。
擁塞的控制方式:
- 開(kāi)環(huán)控制:靜態(tài)的預(yù)防方法,在設(shè)計(jì)網(wǎng)絡(luò)時(shí)事先將所有發(fā)送擁塞的因素考慮周到频蛔,力求網(wǎng)絡(luò)在工作時(shí)不產(chǎn)生擁塞灵迫。
- 閉環(huán)控制:動(dòng)態(tài)控制方法,事先不考慮所有發(fā)生擁塞因素晦溪,而采用監(jiān)測(cè)網(wǎng)絡(luò)系統(tǒng)去監(jiān)測(cè)瀑粥。