National Central University
Uedu Main Site
Explore Uedu
Student Console
Register as Member/Login
Research Informed Consent Center
Survey Center
Educational Big Data Challenge
Claim or create a course
Try an AI Scenario Task
Support & Messages
Uptime Data

UeduGPTs

--

Jupyters

3

Local AI

--

Uedu Code

--

中央大學 AQI 80 24°C PM2.5 21
AI Reply Desktop Notifications

Show a desktop notification when the AI TA finishes replying

Chat Message Notifications

Notify me when classmates post messages in the forum

Sound notification

Play an alert sound whenever there is a new notification

Unit 02

分層模型

OSI 七層與 TCP/IP 四層、封裝與解封裝
Interaction 25 minute(s)

Learning Objectives

  • 說明網路為什麼要分層,以及「每一層只和上下層與對方同一層打交道」的意思
  • 對照 OSI 七層與 TCP/IP 四層,說出每一層的工作與代表協定
  • 描述封裝與解封裝的過程,並說出各層資料單位的名稱(訊框、封包、區段/資料報)
  • 說明接收端怎麼依標頭欄位(類型、協定、目的埠)把資料交給正確的上一層
  • 計算標頭的額外負擔,說明為什麼小封包的效率比較低

為什麼要分層

寄一個包裹:你只管寫好內容、填上收件人;物流公司決定走哪條路線;貨車司機只管把車開到下一站。 你不需要知道貨車走哪條高速公路,司機也不需要拆開包裹看內容。每個角色只做自己的事,並且和上下游約定好交接的方式。

網路也是這樣切成好幾層(layer):

  • 每一層提供一種服務給上一層,並使用下一層的服務。例如傳輸層把「資料送到對方的某個程式」這件事,交給網路層去「送到對方那台電腦」。
  • 每一層和對方的同一層用協定溝通:你電腦的 TCP 和伺服器的 TCP 用 TCP 的規則對話,中間的路由器不需要懂 TCP。
  • 某一層換掉,其他層不受影響:從網路線換成 Wi-Fi,瀏覽器和網頁伺服器完全不用改。

這樣的分工讓網路能一直演進:新的應用程式不用重新設計線路,新的線路技術也不用改應用程式。 計算機概論的「TCP/IP」那一課介紹過分層的概念,這一課實際拆開一個封包看看。

OSI 七層與 TCP/IP 四層

有兩個常見的分層模型。OSI 參考模型(ISO/IEC 7498-1)分七層,是教學與溝通的共同語言; TCP/IP 模型是網際網路實際使用的分法,RFC 1122 把它分成四層。很多教科書把 TCP/IP 的最下層再拆成兩層,變成五層,這一軌也這樣對照:

OSI 七層 TCP/IP 四層 這一層的工作 代表協定 資料單位(PDU)
7 應用層、6 表現層、5 會議層 應用層 程式之間的對話內容與格式 HTTP、DNS、SMTP 資料、訊息
4 傳輸層 傳輸層 送到對方的哪一個程式(連接埠);TCP 另外負責可靠傳送 TCP、UDP 區段(TCP)、資料報(UDP)
3 網路層 網路層(網際網路層) 跨越很多網路,送到對方那台電腦(IP 位址、路由) IPv4、IPv6、ICMP 封包
2 資料連結層 連結層 在同一段連線或區域網路裡送到下一站(MAC 位址) 乙太網路、Wi-Fi 訊框
1 實體層 (連結層包含) 把位元變成電、光或無線電的訊號 網路線、光纖、無線電規格 位元

OSI 的表現層(資料格式、加密)與會議層(對話的建立與管理)在 TCP/IP 裡沒有獨立出來,由應用程式自己處理。 大家常說的「第 2 層交換器」「第 3 層」「第 7 層負載平衡」,用的就是 OSI 的層號。

注意一個常見的誤解:路由器只處理到第 3 層,交換器只處理到第 2 層。它們轉送時不會打開 TCP 或 HTTP 的內容; 只有兩端的主機會處理全部的層(防火牆、NAT 等設備會例外地看傳輸層,後面的課會講)。

封裝與解封裝

資料往下送的時候,每一層都在前面加上自己的標頭(header),把上一層交下來的整包東西當成自己的「內容」,這叫封裝(encapsulation):

應用層                               [ HTTP 請求 ]
傳輸層                     [TCP 標頭][ HTTP 請求 ]                     ← 區段
網路層             [IP 標頭][TCP 標頭][ HTTP 請求 ]                     ← 封包
連結層  [乙太網路標頭][IP 標頭][TCP 標頭][ HTTP 請求 ][FCS]               ← 訊框
實體層  0101100011110101…                                              ← 位元

接收端反過來,每一層讀掉自己的標頭、依標頭裡的欄位決定交給上面哪一個協定,這叫解封裝(decapsulation):

哪一層 看哪個欄位 例子
連結層 乙太網路標頭的類型(EtherType) 0x0800 → 交給 IPv4;0x0806 → ARP;0x86DD → IPv6
網路層 IP 標頭的協定 6 → TCP;17 → UDP;1 → ICMP
傳輸層 TCP/UDP 標頭的目的埠 80 → 網頁伺服器;53 → DNS 伺服器

這三個欄位串起了整疊協定:同一條網路線上同時跑著網頁、DNS、ping,接收端靠它們一路分派到正確的程式。

互動練習:一層一層封裝,再一層一層拆開

按「下一步」,看資料從傳送端的應用層一路往下、變成位元,再到接收端一路往上。點封包上的任何一段,可以看那一層標頭的每個欄位與實際的位元組(十六進位)。 最下面把協定放進正確的層:拖曳,或點一下協定再點一層。

標頭的額外負擔

標頭是送資料必須付出的成本。一個走乙太網路的 TCP 封包,最少要加上:

項目 位元組
乙太網路標頭(目的 MAC、來源 MAC、類型) 14
IPv4 標頭(沒有選項時) 20
TCP 標頭(沒有選項時) 20
FCS(訊框結尾的檢查碼) 4
合計 58

實際線上還要再加 8 位元組的前置碼與起始符號,訊框之間至少要隔 12 位元組的時間。

  • 送 1,460 位元組的資料(乙太網路一個訊框裝得下的最大量):資料占 1,460 ÷ 1,518 ≈ 96%,很划算。
  • 送 41 位元組的小請求:資料只占 41 ÷ 99 ≈ 41%,一半以上是標頭。
  • 乙太網路的資料部分最少要 46 位元組,太小的封包還要補 0,浪費更多。

所以程式設計上,「很多很小的封包」通常比「少數幾個大封包」浪費頻寬;這也是 TCP 會把應用程式的資料湊成較大區段再送的原因之一。 (實際的 TCP 標頭常帶有選項,會比 20 位元組多;這裡用最小值計算。)

互動練習:在模擬網路裡看真的封包欄位

PC1 已經設定好 DNS 伺服器。執行 http www.example.com 之後,點封包紀錄的任一列,下方會依層列出那個訊框的欄位: 乙太網路(第 2 層)、IPv4(第 3 層)、TCP 或 UDP(第 4 層),以及最上面的應用資料。

小測驗:分層與 PDU

1.

下列哪一組「協定 — 層」的對應是正確的?

2.

傳輸層用 TCP 時,這一層的資料單位叫什麼?

3.

從網路線換成 Wi-Fi,瀏覽器不需要修改,最主要是因為:

4.

路由器轉送一個 HTTP 請求時,最高會處理到 OSI 的第幾層?

第 1 次作答

小測驗:封裝與額外負擔

1.

接收端的網路層看到 IP 標頭的協定欄位是 17,會把內容交給誰?

2.

用乙太網路送 TCP,應用資料 100 位元組。訊框總共多少位元組(不算前置碼)?

3.

應用資料只有 1 位元組(例如遠端終端機打一個字),用 TCP 經乙太網路送出。資料部分(IP 封包)只有 41 位元組,接下來會怎樣?

第 1 次作答

重點整理

  • 分層讓每一層只做自己的事:使用下一層的服務、服務上一層,和對方的同一層用協定溝通;換掉一層不影響其他層。
  • OSI 七層是共同語言(第 2 層交換、第 3 層路由、第 7 層應用);TCP/IP 實際分成應用、傳輸、網路、連結四層。
  • 資料單位:應用層的資料、傳輸層的區段(TCP)或資料報(UDP)、網路層的封包、連結層的訊框、實體層的位元。
  • 封裝是每一層加上自己的標頭;解封裝時依類型(0x0800)、協定(6、17)、目的埠(80、53)一路交給正確的程式。
  • 標頭有成本:TCP 經乙太網路至少 58 位元組;小封包的效率低,太小還要補到 64 位元組。

下一課從最下面開始:乙太網路的訊框長什麼樣子,交換器怎麼知道往哪個埠送。

這一課完成了!
Next lesson:乙太網路與交換器
你目前沒有登入,學習進度只存在這個瀏覽器。 Login 後,進度會跟著帳號,換電腦也看得到。