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(解封裝)。
圖解:左邊是 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:
- Router 拆開最外層的 Frame,看裡面的 IP 收件人。
- 查一查下一站往哪裡。
- 套上一個新的 Frame,寫上下一站的 MAC Address,再送出去。
所以:
| 標籤 | 一路上會不會改變? |
|---|---|
| Frame 上的 MAC Address | 每一站都換,只負責「這一段」 |
IP 收件人(192.0.2.80) |
一路不變,負責「整段旅程」 |
這就是第 3 課和第 4 課的分工:MAC Address 管一段,IP Address 管全程。
圖解:三段旅程中,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. 動手試試
小互動
幫小比執背包
把以下四層包裝,由最裡面排到最外面。
- 寫著收件人 192.0.2.80 的 IP Header
- 相片的一小塊(Payload)
- 寫著 MAC Address 的 Frame Header
- 寫著 Port 443 的 TCP Header
小互動
這張標籤屬於哪一層?
把以下六張卡分到正確的一層:
-
1
192.0.2.80 -
2
00:00:5E:00:53:01 -
3Port 443
-
4網頁的文字和圖片
-
5
192.168.1.10 -
6Port 53
全部分對了!由內到外:內容(Application)→ Port(Transport)→ IP Address(Internet)→ MAC Address(Link)。
任務:算一算要幾多個小比
- 在手機相簿揀一張相片,看看它的檔案大小(iPhone:向上掃看資料;Android:詳細資料)。
- 用這條算式估計:檔案大小(Byte)÷ 1,460 ≈ 封包數目。1 MB 約等於 1,000,000 Byte。
- 例如 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. 小測驗
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 收件人全程不變。
下一站
小比已經執好背包。沿途為他換送貨袋、指路的,究竟是哪些設備?家裡那個閃燈的盒子,又在做什麼?