【計算機網路筆記】4.1 Overview of Network Layer
【計算機網路筆記】4.1 Overview of Network Layer
Hello Guys, I’m LukeTseng. 歡迎你也感謝你點入本篇文章,本系列主要讀本為《Computer Networking: A Top-Down Approach, 8th Edition》,就是計算機網路的聖經,會製作該系列也主要因為修課上會用到。若你喜歡本系列或本文,不妨動動你的手指,為這篇文章按下一顆愛心吧,或是追蹤我的個人公開頁也 Ok。
為了讓各位有更清晰的圖像,我們從一個簡單的網路情境出發。
想像有兩台主機(Host)(或稱終端系統(End System))H1 與 H2,它們之間隔著幾台路由器(Router)。
當 H1 要傳送資訊給 H2 時,H1 的網路層會從上層的傳輸層接收區段(Segment),將其封裝成資料包(Datagram),然後傳送給與它直接相連的路由器 R1。
在接收端 H2,網路層會從鄰近的路由器 R2 接收這些資料包,將裡面的傳輸層區段提取出來,並往上傳遞給 H2 的傳輸層。
於此有一個非常重要的細節:路由器內部的協定堆疊(Protocol Stack)是被截斷的,即路由器最高只實作到網路層,並不執行應用層或傳輸層的協定(Protocol)。
在這樣的架構下,路由器扮演了兩個層面的關鍵角色:
- 資料層(Data Plane)的主要任務:將資料包從路由器的輸入連結(Link)轉移到正確的輸出連結。
- 控制層(Control Plane)的主要任務:協調網路上每一台路由器的區域轉送動作,確保資料包能端到端(End-to-End)沿著正確路徑,順利從來源端送達目的端。
上方敘述如下圖 4.1:

Image Source:Computer Networking: A Top-Down Approach (8th ed., p. 335, Figure 4.1)
4.1.1 Forwarding and Routing: The Data and Control Planes(轉送及繞送:資料層與控制層)
當在手機上點擊一部 YouTube 影片時,這些資料是如何穿越全世界無數的路由器,精準無誤地送到你的設備上?要解答該問題,就必須理解小節 4.1.1 中提到的兩個決定性動作:「轉送」與「繞送」,以及它們背後的「資料層」與「控制層」。
該節摘要:網路層透過資料層(Data Plane)的硬體執行快速的局部傳遞,並由控制層(Control Plane)的軟體規劃全局的傳輸路徑,兩者合作將資料送達目的地。
術語解析
- 轉送(Forwarding):當一個資料包(Datagram)抵達路由器的輸入連結(Link)時,路由器將該資料包移動到適當的輸出連結的「局部動作」,這發生在極短的奈秒(nanosecond, ns)等級,通常由硬體執行。
- 繞送(Routing):決定資料包從來源端到目的端所經過的完整端到端路徑的「全域過程」,發生於較長的秒(second)等級,通常由軟體執行。
- 轉送表(Forwarding Table):路由器內部的一個關鍵資料結構,路由器會讀取到達資料包的標頭欄位值,並以此為索引來查詢轉送表,藉此決定輸出的介面。
- 軟體定義網路(Software-Defined Networking, SDN):一種現代網路架構,其核心精神是將控制層的繞送功能從實體路由器中抽離,交由遠端的伺服器(控制器)來集中運算與派發轉送表。
如果把一趟從高雄開車到台北的旅程當作網路傳輸,繞送(Routing)就是出發前拿著地圖規劃出整趟旅程的路線;而轉送(Forwarding)則是開車來到某個特定的交流道時,看路標要切入哪一條閘道離開的當下動作。
轉送表:連接控制層與資料層的橋樑
轉送和繞送是兩個不同的動作,但兩者間必須緊密合作,這兩者之間的橋樑就是轉送表(Forwarding Table)。
當資料包抵達時,路由器(執行資料層功能)會提取標頭值,對照轉送表來找出對應的輸出介面,但轉送表一開始是如何建立的?這牽涉到控制層(Control Plane)的兩種不同實作方法,請見下一節。
控制層的兩種架構:傳統 vs. SDN
- 傳統的每路由器控制(Per-router control):在傳統方法中,繞送演算法(Algorithm)同時執行在每一台路由器中。
- 路由器內部的繞送組件會透過繞送協定(Routing Protocol)與其他路由器互相通訊,共同計算出轉送表的值。
- 在這種模式下,資料層(Data Plane)和控制層(Control Plane)是緊密結合在同一台機器裡的。
- SDN 的邏輯集中式控制(Logically centralized control):此為一種較新的架構。
- 實體路由器只負責單純的轉送(資料層)工作。
- 繞送(控制層)功能則被移到遠端的控制器(Remote Controller)上,該遠端控制器會計算出最佳路徑,並將設定好的轉送表派發給各個路由器。
下圖 4.2 為繞送演算法決定轉送表中的值。

Image Source:Computer Networking: A Top-Down Approach (8th ed., p. 337, Figure 4.2)
下圖 4.3 為遠端控制器決定及分送轉送表中的值。

Image Source:Computer Networking: A Top-Down Approach (8th ed., p. 338, Figure 4.3)
傳統 vs. SDN 比較表
| 比較項 | 傳統架構(Per-router control) | SDN 架構 |
|---|---|---|
| 控制層位置 | 分散存在於每台實體路由器中 | 位於遠端的邏輯集中式控制器(Remote Controller) |
| 運作方式 | 路由器之間互相交換繞送訊息來計算轉送表 | 遠端控制器計算完轉送表後,直接派發給各路由器 |
| 資料層與控制層關係 | (單體式的, Monolithic)緊密耦合,綁定於單一硬體內 | (分離式的, Separated)明確解耦,硬體負責轉送,軟體負責控制 |
| 系統彈性與除錯 | 除錯較難,若需更改邏輯需更動所有路由器設定 | 除錯較易,因採用開放式軟體架構,方便程式化與創新 |
耦合與解耦屬於軟體工程術語,簡單來說耦合就是衡量模組間的依賴程度(如傳統架構是轉送與繞送這兩塊模組都綁在一個路由器裡面,就稱為高耦合、緊密耦合),解藕反之。
小結
- 網路層的運作可拆解為:
- 資料層(Data Plane)負責的轉送(Forwarding)(ns 奈秒級、硬體實作)
- 控制層負責的繞送(Routing)(s 秒級、軟體實作)。
- 轉送表是關鍵:無論背後的繞送邏輯多麼複雜,最終產出都是一份供路由器快速查閱的轉送表(Forwarding Table)。
- 架構的範式(Paradigm)轉移:從傳統的「每路由器控制(Per-router control)」到 SDN 的「集中式控制(centralized control)」,可看到網路架構如何透過軟硬體解耦來獲得更高的可程式化能力與靈活性。
4.1.2 Network Service Model(網路服務模型)
當把封包(Packet)交給網路層(Network Layer)傳送時,網路層能給我們什麼樣的保證?是使命必達,還是盡力而為?這是網路服務模型要解答的問題。
該節摘要:網路服務模型(Network Service Model)定義了在傳送端與接收端的主機(Host)之間,封包進行端到端(end-to-end)傳遞時的特性與服務保證。
上層協定(如傳輸層(Transport Layer)與應用層(Application Layer))需要知道底層網路能提供什麼樣的傳輸品質,才能決定要在軟體層面(或網路邊緣)實作多少補救機制,因而需要網路服務模型。
術語解析
- 網路服務模型(Network Service Model):定義封包在傳送端與接收端之間傳輸時,網路所承諾的端到端傳遞特性。
- 盡力而為的服務(Best-effort Service):網際網路所採用的網路層單一服務模型。
- 網路會「盡最大努力」來傳送封包,但「不保證」封包一定送達、不保證順序、不保證延遲時間,也不保證吞吐量(Throughput)與頻寬。
- 就像是寄平信,郵遞員會盡力幫你送,但若中途遺失或遲到,郵局概不負責。
- 非同步傳輸模式(Asynchronous Transfer Mode, ATM):一種與網際網路不同的網路架構,其服務模型能夠提供保證依序傳遞、有邊界的延遲,以及保證最小頻寬等嚴格承諾。
理想的網路服務模型
如果資源無限,網路層理論上可以為封包傳遞提供多種完美的服務保證,而這些可能的服務包含:
- 投遞保障(Guaranteed delivery):確保發送的封包最終一定能抵達目的地。
- 有限延遲的傳遞保障(Guaranteed delivery with bounded delay):不僅保證送達,還保證在特定的時間內(例如 100 毫秒 ms 內)送達。
- 依序的封包傳遞(In-order packet delivery):保證封包抵達目的地的順序與發送時的順序完全一致。
- 最低頻寬保障(Guaranteed minimal bandwidth):模擬出一條具有特定傳輸速率(如 1 Mbps)的專屬連結(Link),只要發送速率不超過此標準(即發送速率低於此標準頻寬),封包就能全數送達。
- 安全性(Security):網路層自動在來源端加密所有資料包,並在目的端解密,提供機密性保障。
理想很豐滿,現實很骨感(網際網路的盡力而為服務)
目前網際網路的網路層僅提供一種服務,亦即盡力而為的服務(best-effort service)。
盡力而為的服務不會提供先前上述的那六項保證,即不提供任何服務的委婉說法。
在此課本提到了另一種網路架構 ATM(Asynchronous Transfer Mode),ATM 網路提供了以下這些保證:
- 保證依序的延遲
- 保證有限的延遲
- 保證最低頻寬
| 網路架構 | 服務模型 | 傳遞保證(Delivery) | 順序保證(In-order) | 延遲保證(Delay) | 頻寬保證(Bandwidth) |
|---|---|---|---|---|---|
| Internet | 盡力而為(Best-effort) | 無保證 | 無保證 | 無保證 | 無保證 |
| ATM | CBR / VBR 等 | 有保證 | 有保證 | 有邊界保證 | 保證最小頻寬 |
:::info
- CBR(Constant Bit Rate, CBR):模擬傳統的實體專線(Leased Line),為連線提供固定且持續的傳輸頻寬。
- VBR(Variable Bit Rate, VBR):VBR 允許傳輸率隨時間變動,適用於資料量會突發(Burst)但仍需一定品質保證的應用,進一步分為兩種類型:
- 即時式變動傳輸率(Real-Time VBR, rt-VBR):針對需要嚴格延遲限制但流量不固定的應用。
- 非即時式變動傳輸率(Non-Real-Time VBR, nrt-VBR):支援可容忍一定延遲、不需要極高即時性,但要求低遺失率的傳輸。
:::
除了 ATM 這種網路架構以外,也有其他如 Intserv(Integrated Services) 這種旨在提供端到端的延遲保障與無壅塞通訊的網路架構。
為什麼盡力而為(都不保證)的網際網路依然能成功?
既然網際網路什麼都不保證,為什麼我們還能順暢地看 Netflix 或打 game?
雖然網際網路曾提出過 Intserv 架構試圖保證端到端延遲,但網際網路最終依舊靠著這套極簡模型取得壓倒性勝利,主要有兩個原因:
- 充足的頻寬佈建(Adequate bandwidth provisioning):只要底層硬體與頻寬給得夠足,發生嚴重延遲或掉包的機率就會自然降低。
- 具備頻寬適應能力的應用層協定(Bandwidth-adaptive application-level protocols):應用程式(例如前幾章學過、用於影片串流的 DASH 協定)非常聰明,能夠動態適應頻寬的變化,從而在不完美的網路上提供足夠好的使用者體驗。
小結
- 服務模型決定了網路的基調:網路服務模型定義了在端到端傳輸時,可對網路抱有什麼樣的期望。
- 網際網路的極簡哲學:Internet 採用盡力而為(Best-effort)模型,將路由器(Router)核心的複雜度降到最低,不提供任何延遲、頻寬或傳遞上的保證。
- 聰明的邊緣設備彌補了核心的不足:正因為網路層盡力而為,網際網路高度依賴終端系統的聰明設計(如充裕的頻寬規劃與適應性應用層協定),來達到令人滿意的服務品質。
總整理
網路層基本運作
- 封裝與傳遞:發送端將傳輸層的區段(Segment)封裝為資料包(Datagram),經由路由器(Router)傳送至接收端。
- 路由器限制:實體路由器內部的協定堆疊被截斷,最高僅實作至網路層(不負責傳輸層與應用層的工作)。
轉送與繞送:資料層 vs. 控制層 (4.1.1)
網路層的運作由「轉送(Forwarding)」與「繞送(Routing)」兩個動作組成,分別對應硬體與軟體層面。
- 轉送(Forwarding) -> 硬體面、資料層(Data Plane)
- 繞送(Routing) -> 軟體面、控制層(Control Plane)
轉送表(Forwarding Table) 則是連接兩者的橋樑(路由器依據標頭查詢轉送表來決定輸出介面)。
| 比較項目 | 轉送(Forwarding) | 繞送(Routing) |
|---|---|---|
| 邏輯層面 | 資料層(Data Plane) | 控制層(Control Plane) |
| 功能定位 | 局部動作(Local):將資料包從輸入移至正確輸出連結 | 全局過程(Global):規劃端到端的完整傳輸路徑 |
| 執行主體 | 路由器硬體 | 軟體(路由器內部演算法或遠端伺服器) |
| 處理速度 | 奈秒級(ns) | 秒級(s) |
| 生活比喻 | 開車到特定交流道時,看路標切入閘道的動作 | 出發前拿著地圖規劃整趟旅程的路線 |
控制層的兩種架構:傳統 vs. SDN
探討控制層如何計算並分發轉送表給資料層。
| 特性 | 傳統架構(Per-router control) | SDN 架構(Logically centralized) |
|---|---|---|
| 控制層位置 | 分散存在於每台實體路由器中 | 集中於遠端控制器(Remote Controller) |
| 架構設計 | 轉送與繞送緊密耦合(Monolithic) | 軟硬體明確解耦(Separated) |
| 運作方式 | 路由器之間互相交換訊息,共同計算轉送表 | 遠端控制器計算出最佳路徑後,直接派發轉送表 |
| 系統彈性 | 缺乏彈性,更改邏輯需更動所有路由器,除錯困難 | 具備高可程式化能力,開放式架構易於創新與除錯 |
網路服務模型 (Network Service Model) (4.1.2)
網路服務模型定義了封包在端到端傳輸時,底層網路能給予的承諾(如投遞保障、順序、有限延遲、最低頻寬等)。
網際網路 (Internet) 的選擇:盡力而為 (Best-effort)
- 核心概念:Internet 採用極簡哲學,將路由器複雜度降至最低。不提供任何保證(可能掉包、不保證順序、無延遲與頻寬保障)。
- 對比架構:ATM(Asynchronous Transfer Mode)網路則提供嚴格保障(如 CBR 固定頻寬、VBR 變動頻寬等)。
為什麼「盡力而為」的 Internet 依然成功?
儘管網路層沒有提供任何傳輸品質保證,但依靠以下兩點彌補了核心網路的不足:
- 硬體基礎:充足的頻寬佈建(Adequate bandwidth provisioning),頻寬夠大就能大幅降低延遲與掉包率。
- 軟體補救:聰明的終端邊緣設備與具備頻寬適應能力的應用層協定(如影音串流的 DASH 協定),能動態適應網路變化以維持使用者體驗。

