第 5 課

小比執背包Packet(封包)與 Network Layers(網絡分層)

一張相片是怎樣「坐」在網線上出門的?

帶路角色:小比閱讀時間約 10 分鐘

1. 漫畫開場

也可以直接點擊任何一格
漫畫文字版(畫面及對白)
格 畫面 對白
1 阿麥身旁有一張巨型相片,小比的背包只有相片一角那麼大。 字幕:「阿麥想把一張 3 MB 的相片寄到 example.com。」
阿麥:「小比,幫我寄這張相片!」
小比:「這……這張相片比我大幾千倍啊!」
2 相片被切成很多小塊,一排小比各背一塊,背包寫著編號。 字幕:「大資料會被切成一小份一小份,每一份就是一個 Packet(封包)。」
小比:「分開出發,到達後再砌回原樣!」
3 小比示範「一層包一層」:信 → 信封:Port(連接埠)443 → 背包:收件人 192.0.2.80 → 送貨袋:MAC Address(硬體位址)。 字幕:「每一層都在外面加上自己的標籤,這叫 Encapsulation(封裝)。」
小比:「背包執好,出發囉!」
4 路路為小比換上新的外層送貨袋;舊袋丟進回收箱,背包上的收件人不變。 字幕:「每過一站,最外層的送貨袋都會換新。」
路路:「送貨袋我幫你換,背包上的地址一個字也不改!」

2. 重點概念

在網絡上,資料不會一整塊送出,而是切成很多小份。每一小份叫 Packet(封包),好像一個個背著背包的小比。

背包叫 Header(標頭),寫著收件人、寄件人等資料;背包裡的信叫 Payload(資料內容),是真正要送的東西。

出發前,資料要經過幾層處理,每一層在外面加一張自己的標籤,好像一層包一層的禮物紙,這叫 Encapsulation(封裝)。

3. 看深一點

本課的範例位址 本課假設 example.com 的伺服器在 192.0.2.80。192.0.2.x 是專門留給教材使用的 Public IP(公共位址),不會指向任何真實的伺服器。留意:它以 192 開頭,但不是 Private IP(私人位址);只有 192.168. 開頭的才是。

為什麼要切成小份?

第 2 課講過 Packet Switching(封包交換):把資料切成小份,每份各自找路,線路由大家共用。好處有三個:

  • 公平:一個人傳大檔案,不會霸佔整條線,其他人的小封包可以插空隙通過。
  • 出錯只補一小份:某一份在路上遺失,只要重送那一份,不用由頭再來。
  • 可以走不同的路:某條路塞車,後面的封包可以改道。

一個封包可以有多大?最常見的 Ethernet(以太網)每次最多載 1,500 個 Byte(位元組),這個上限叫 MTU(最大傳輸單位)。扣除標頭之後,每個封包大約可以載 1,460 個 Byte 的資料。

所以,一張 3 MB(約 3,000,000 個 Byte)的相片,大約要切成 2,000 多個封包。

背包裡有什麼?Header(標頭)與 Payload(資料內容)

部分 比喻 內容
Header(標頭) 小比的背包 收件人、寄件人、編號、檢查碼等「送貨資料」
Payload(資料內容) 背包裡的信 真正要送的資料,例如相片的一小塊

Header 好像信封上的字:郵差只看信封,不用拆開信。網絡設備也一樣,大多只看 Header 就決定怎樣送。

一層包一層:TCP/IP Model(TCP/IP 模型)

寄一個封包,要同時解決很多問題:資料是什麼格式?送給對方哪一個程式?對方在哪個網絡?下一站是誰?

工程師把這些工作分成幾層,每層只負責一件事,這就是 Network Layers(網絡分層)。本網站主要用 TCP/IP Model(TCP/IP 模型),它有四層:

層 名稱 負責什麼 加上的標籤寫著 例子
4 Application Layer(應用層) 準備要送的內容 網頁、相片、訊息本身 HTTPS(加密網頁傳輸協定)、DNS(網域名稱系統)
3 Transport Layer(傳輸層) 送給對方電腦上的哪個程式;要不要確保送達 Port(連接埠)號碼、編號 TCP(傳輸控制協定)、UDP(用戶資料包協定)
2 Internet Layer(互聯網層) 送到哪個網絡、哪部裝置 寄件人和收件人的 IP Address(網絡位址) IPv4、IPv6
1 Link Layer(鏈路層) 在這一段 LAN(區域網絡)內送到下一站 寄件人和收件人的 MAC Address Ethernet、Wi-Fi(無線網絡)

寄出時,資料由第 4 層往下走,每層在外面加上自己的 Header,這就是 Encapsulation(封裝)。收到時,由第 1 層往上走,每層拆走自己那張標籤,這叫 Decapsulation(解封裝)。

圖解:一張相片由應用層往下,經過傳輸層、互聯網層、鏈路層,每層加上一個標頭;右邊對照 OSI 模型七層

圖解:左邊是 Encapsulation 的過程,每往下一層,外面就多一個 Header;右邊是 TCP/IP Model 四層和 OSI Model(OSI 模型)七層的對照。

每一層的包裝,各有名字

同一份資料,在不同層有不同叫法。日後看英文課本時會常常見到:

層 這一層的包裝叫
Application Layer(應用層) Data(資料)
Transport Layer(傳輸層) Segment(區段);用 UDP 時叫 Datagram(資料包)
Internet Layer(互聯網層) Packet(封包)
Link Layer(鏈路層) Frame(訊框)

第 3 課的 Frame(訊框),就是最外層的送貨袋:它的 Header 寫著 MAC Address,尾部還有一段檢查碼,用來發現傳送途中有沒有出錯。在網線或無線電波上,Frame 最後會變成一連串 0 和 1 的訊號。

日常說話中,大家常常把每一層的包裝都叫「封包」。本網站也會這樣說,但你要知道嚴格的叫法。

每過一站,換一次送貨袋

資料由阿麥的電腦(192.168.1.10)送去 example.com 的伺服器(192.0.2.80)時,中途要經過很多部 Router(路由器)。每到一部 Router:

  1. Router 拆開最外層的 Frame,看裡面的 IP 收件人。
  2. 查一查下一站往哪裡。
  3. 套上一個新的 Frame,寫上下一站的 MAC Address,再送出去。

所以:

標籤 一路上會不會改變?
Frame 上的 MAC Address 每一站都換,只負責「這一段」
IP 收件人(192.0.2.80) 一路不變,負責「整段旅程」

這就是第 3 課和第 4 課的分工:MAC Address 管一段,IP Address 管全程。

圖解:封包由阿麥的電腦經過兩部 Router 去到伺服器,每一段的 MAC Address 都不同,IP 收件人一直是 192.0.2.80

圖解:三段旅程中,Frame 上的 MAC Address 每段都不同;背包裡的 IP 收件人 192.0.2.80 由頭到尾不變。

兩個細節:Router 每轉送一次,會把 IP Header 裡的 TTL(存活時間)減 1,避免封包永遠兜圈;家用 Router 還會改寫寄件人位址,這叫 NAT(網絡位址轉換),第 8 課再講。

OSI Model(OSI 模型):另一套分層方法

你日後在課本或考試中,會見到另一套七層的 OSI Model(OSI 模型)。它是 1980 年代訂立的參考模型,分得更細;真正在互聯網上運行的,則是 TCP/IP。

TCP/IP Model(四層) OSI Model(七層)
Application Layer 7 Application、6 Presentation、5 Session
Transport Layer 4 Transport
Internet Layer 3 Network
Link Layer 2 Data Link、1 Physical

業界常說的「Layer 2(第二層)設備」和「Layer 3(第三層)設備」,例如 Switch(交換器)和 Router,就是用 OSI Model 的編號。下一課會再見到它們。

4. 動手試試

小互動

幫小比執背包

把以下四層包裝,由最裡面排到最外面。

  1. 寫著收件人 192.0.2.80 的 IP Header
  2. 相片的一小塊(Payload)
  3. 寫著 MAC Address 的 Frame Header
  4. 寫著 Port 443 的 TCP Header

小互動

這張標籤屬於哪一層?

把以下六張卡分到正確的一層:

  1. 1192.0.2.80

  2. 200:00:5E:00:53:01

  3. 3Port 443

  4. 4網頁的文字和圖片

  5. 5192.168.1.10

  6. 6Port 53

任務:算一算要幾多個小比

  1. 在手機相簿揀一張相片,看看它的檔案大小(iPhone:向上掃看資料;Android:詳細資料)。
  2. 用這條算式估計:檔案大小(Byte)÷ 1,460 ≈ 封包數目。1 MB 約等於 1,000,000 Byte。
  3. 例如 3 MB 的相片:3,000,000 ÷ 1,460 ≈ 2,055 個封包。

想一想:一條一分鐘的高清影片,可能有幾十 MB,那要多少個小比出發?

5. 比喻的極限

  • 封包不是一個「人」走完全程。 小比好像由頭走到尾;其實每一站都在複製訊號、重新發送,走在網線上的只是電子訊號或光。
  • 禮物紙不是完全一層包一層。 比喻中每層都完整包住裡面;但 Frame 除了前面的 Header,尾部還有一段檢查碼,而有些 Header 欄位會在途中改變(例如 TTL)。
  • 分層不是鐵律。 真實世界裡有些設備會「跨層」工作,例如家用 Router 做 NAT 時會改寫 Port 號碼,而 Port 屬於 Transport Layer。
  • 封包不一定按次序到達。 小比們可能走不同的路,後出發的可能先到。把它們砌回正確次序,是第 9 課 TCP(傳輸控制協定)的工作。
  • 大小不是固定的。 1,500 Byte 是 Ethernet 最常見的上限,其他網絡可以不同,封包也可以比上限小得多。

6. 小測驗

第 1 題,共 3 題一個 Packet(封包)中,負責寫上收件人和寄件人等資料的部分叫什麼?
第 2 題,共 3 題在 TCP/IP Model(TCP/IP 模型)中,寫著 IP Address 的標籤由哪一層加上?
第 3 題,共 3 題封包由阿麥的電腦經過兩部 Router 去到 example.com 的伺服器。一路上,哪一項會在每一站改變?

7. 重點筆記

  • 資料會被切成很多小份的 Packet(封包);Ethernet 常見的上限(MTU)是 1,500 Byte。
  • 封包由 Header(標頭)和 Payload(資料內容)組成:Header 寫送貨資料,Payload 是真正的內容。
  • TCP/IP Model 有四層:Application、Transport、Internet、Link;OSI Model 有七層,作參考用。
  • 寄出時一層包一層,叫 Encapsulation(封裝);收到時一層拆一層,叫 Decapsulation(解封裝)。
  • MAC Address 每一站都換;IP 收件人全程不變。

下一站

小比已經執好背包。沿途為他換送貨袋、指路的,究竟是哪些設備?家裡那個閃燈的盒子,又在做什麼?