網(wǎng)絡(luò)層
網(wǎng)絡(luò)層是計(jì)算機(jī)網(wǎng)絡(luò)體系結(jié)構(gòu)中的關(guān)鍵一層,主要負(fù)責(zé)將數(shù)據(jù)包從源主機(jī)跨越多跳網(wǎng)絡(luò)路徑傳送到目的主機(jī)。其核心功能是實(shí)現(xiàn)主機(jī)到主機(jī)的通信,并為傳輸層提供無(wú)連接或面向連接的服務(wù)。
一、核心功能與服務(wù)
- 轉(zhuǎn)發(fā):當(dāng)一個(gè)數(shù)據(jù)包到達(dá)路由器的輸入鏈路時(shí),路由器需要根據(jù)其目的地址,通過(guò)查表將其移動(dòng)到合適的輸出鏈路。這是一個(gè)數(shù)據(jù)平面的功能。
- 路由:確定數(shù)據(jù)包從源到目的地所采用的路徑。路由算法(如鏈路狀態(tài)、距離向量)負(fù)責(zé)構(gòu)建和維護(hù)路由器的轉(zhuǎn)發(fā)表。這是一個(gè)控制平面的功能。
- 連接建立:某些網(wǎng)絡(luò)層架構(gòu)(如ATM)需要在數(shù)據(jù)傳輸前,在源和目的地之間建立一條虛擬路徑。
網(wǎng)絡(luò)層可以為傳輸層提供兩種服務(wù)模型:
- 無(wú)連接服務(wù):不事先建立連接,每個(gè)數(shù)據(jù)包獨(dú)立路由。例如:Internet的網(wǎng)絡(luò)層使用IP協(xié)議提供“盡力而為”的無(wú)連接服務(wù)。
- 面向連接服務(wù):數(shù)據(jù)傳輸前需建立連接(虛電路),所有數(shù)據(jù)包沿同一路徑傳輸,按序到達(dá)。例如:ATM網(wǎng)絡(luò)。
二、核心協(xié)議:IP協(xié)議(IPv4)
IP協(xié)議是Internet網(wǎng)絡(luò)層的核心。
- IP數(shù)據(jù)報(bào)格式:
- 關(guān)鍵字段:版本、首部長(zhǎng)度、服務(wù)類(lèi)型、總長(zhǎng)度、標(biāo)識(shí)、標(biāo)志、片偏移、生存時(shí)間、協(xié)議(指示上層協(xié)議,如TCP=6,UDP=17)、首部檢驗(yàn)和、源IP地址、目的IP地址。
- 生存時(shí)間:TTL,每經(jīng)過(guò)一個(gè)路由器減1,為0時(shí)丟棄,防止數(shù)據(jù)包無(wú)限循環(huán)。
- 分片與重組:由于鏈路層MTU限制,過(guò)大的IP數(shù)據(jù)報(bào)需要在路由器上分片,在目的主機(jī)上重組。
- IPv4編址:
- IP地址(如192.168.1.1)是32位的標(biāo)識(shí)符,與接口(而非主機(jī))相關(guān)聯(lián)。
- 分類(lèi)編址:A、B、C、D、E類(lèi)地址,已過(guò)時(shí)。
- CIDR(無(wú)類(lèi)別域間路由):現(xiàn)代使用方式,格式為
a.b.c.d/x,其中x是網(wǎng)絡(luò)前綴的長(zhǎng)度。支持地址聚合,減少路由表項(xiàng)。
- 私有IP地址:保留給內(nèi)部網(wǎng)絡(luò)使用(如10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16),通過(guò)NAT訪問(wèn)公網(wǎng)。
- 動(dòng)態(tài)主機(jī)配置協(xié)議:DHCP允許主機(jī)從網(wǎng)絡(luò)服務(wù)器動(dòng)態(tài)獲取IP地址、子網(wǎng)掩碼、默認(rèn)網(wǎng)關(guān)和DNS服務(wù)器地址。過(guò)程包括:發(fā)現(xiàn)、提供、請(qǐng)求、確認(rèn)。
- 網(wǎng)絡(luò)地址轉(zhuǎn)換:NAT使私有網(wǎng)絡(luò)內(nèi)的多臺(tái)主機(jī)可以共享一個(gè)或少量公網(wǎng)IP地址訪問(wèn)互聯(lián)網(wǎng)。NAT路由器會(huì)修改進(jìn)出數(shù)據(jù)包的IP地址和端口號(hào),并維護(hù)轉(zhuǎn)換表。
三、路由算法
路由算法的目標(biāo)是找到從源到目的地“好”的路徑(通常指代價(jià)最小)。
- 鏈路狀態(tài)算法:如Dijkstra算法。
- 每個(gè)路由器掌握完整的網(wǎng)絡(luò)拓?fù)浜玩溌反鷥r(jià)信息。
- 通過(guò)洪泛鏈路狀態(tài)信息,讓所有節(jié)點(diǎn)擁有一致的全網(wǎng)視圖。
- 計(jì)算從本節(jié)點(diǎn)到所有其他節(jié)點(diǎn)的最短路徑。
- 集中式算法,復(fù)雜度高,但結(jié)果穩(wěn)定、無(wú)環(huán)路。
- 距離向量算法:如Bellman-Ford算法。
- 每個(gè)路由器維護(hù)到所有目的地的代價(jià)估計(jì)(距離向量),并定期與鄰居交換。
- 分布式、迭代、異步執(zhí)行。
- 可能遇到計(jì)數(shù)到無(wú)窮和路由環(huán)路問(wèn)題,可通過(guò)毒性逆轉(zhuǎn)等技術(shù)緩解。
- 核心公式:$dx(y) = \minv \{ c(x,v) + d_v(y) \}$。
四、路由實(shí)踐:自治系統(tǒng)內(nèi)與系統(tǒng)間
- 自治系統(tǒng):AS是在單一技術(shù)管理下的一組路由器集合(如一個(gè)ISP)。內(nèi)部運(yùn)行相同的路由協(xié)議。
- 內(nèi)部網(wǎng)關(guān)協(xié)議:IGP,用于AS內(nèi)部路由。
- RIP:基于距離向量,使用跳數(shù)作為度量,最大跳數(shù)為15。通過(guò)UDP交換路由信息。
- OSPF:基于鏈路狀態(tài),使用洪泛鏈路狀態(tài)信息和Dijkstra算法。直接通過(guò)IP承載。支持分層。
- 外部網(wǎng)關(guān)協(xié)議:EGP,用于AS間路由。
- BGP:事實(shí)上的標(biāo)準(zhǔn)。是一種路徑向量協(xié)議。路由器之間交換的是完整的路徑信息(AS序列),而不僅僅是距離。基于策略的路由選擇是關(guān)鍵。
五、關(guān)鍵技術(shù)與協(xié)議
- ICMP協(xié)議:互聯(lián)網(wǎng)控制報(bào)文協(xié)議,用于主機(jī)和路由器之間交換網(wǎng)絡(luò)層控制信息(如目的不可達(dá)、回顯請(qǐng)求/應(yīng)答)。
ping和traceroute工具就是基于ICMP。 - IPv6:
- 動(dòng)機(jī):解決IPv4地址耗盡問(wèn)題,簡(jiǎn)化首部格式,提升性能與安全性。
- 主要特點(diǎn):128位地址空間;固定40字節(jié)基本首部;無(wú)分片(路徑MTU發(fā)現(xiàn));原生支持安全與QoS。
- IP組播:允許一個(gè)發(fā)送者向一組接收者高效發(fā)送數(shù)據(jù)。使用D類(lèi)地址。需要組播路由協(xié)議(如PIM)。
- 軟件定義網(wǎng)絡(luò):SDN是一種新興的網(wǎng)絡(luò)架構(gòu),其核心思想是將控制平面(決策邏輯)與數(shù)據(jù)平面(轉(zhuǎn)發(fā)功能)分離。控制平面由一個(gè)集中式的SDN控制器實(shí)現(xiàn),通過(guò)南向API(如OpenFlow)對(duì)網(wǎng)絡(luò)中的交換機(jī)進(jìn)行編程和管理。這帶來(lái)了前所未有的靈活性、可編程性和自動(dòng)化能力。
六、重要概念
- 虛電路 vs 數(shù)據(jù)報(bào)網(wǎng)絡(luò):網(wǎng)絡(luò)層兩大分組交換體系。
- IP地址與MAC地址:網(wǎng)絡(luò)層地址是邏輯的、分層的,用于全局尋址;鏈路層地址是物理的、扁平的,用于局部尋址。ARP協(xié)議完成兩者映射。
- 路由器結(jié)構(gòu):主要包括輸入/輸出端口、交換結(jié)構(gòu)、路由處理器。轉(zhuǎn)發(fā)發(fā)生在輸入端口或交換結(jié)構(gòu)中。
- 路由與轉(zhuǎn)發(fā)的區(qū)別:路由是“規(guī)劃路徑”,轉(zhuǎn)發(fā)是“沿路移動(dòng)”。
- 最長(zhǎng)前綴匹配:在查找轉(zhuǎn)發(fā)表時(shí),當(dāng)存在多個(gè)匹配的表項(xiàng)時(shí),選擇網(wǎng)絡(luò)前綴最長(zhǎng)的那一個(gè)。這是CIDR路由查找的關(guān)鍵。
網(wǎng)絡(luò)層是連接不同網(wǎng)絡(luò)、實(shí)現(xiàn)全球互聯(lián)的基石。理解IP協(xié)議的工作原理、路由算法的思想以及Internet的路由層次結(jié)構(gòu),是掌握計(jì)算機(jī)網(wǎng)絡(luò)的核心。