第 8 課

誰給我位址?DHCP(動態主機設定協定)與 NAT(網絡位址轉換)

連上 Wi-Fi(無線網絡)的一刻,是誰給你一個地址?

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

1. 漫畫開場

也可以直接點擊任何一格
漫畫文字版(畫面及對白)
格 畫面 對白
1 阿麥回到家,手上的地址卡空白(0.0.0.0),拿著擴音器廣播。 字幕:「阿麥剛連上家中的 Wi-Fi,還沒有 IP Address(網絡位址)。」
阿麥:「有沒有人可以給我一個地址?」
2 路路坐在酒店前台,遞出房卡:192.168.1.10、Default Gateway(預設閘道) 192.168.1.1、DNS(網域名稱系統) 192.168.1.1、租約 24 小時。 字幕:「DHCP(動態主機設定協定)好像酒店前台派房卡。」
路路:「192.168.1.10 給你,租用 24 小時。出門找我,查名字也找我!」
阿麥:「謝謝!」
3 小比出門經過管理處;路路把寄件人 192.168.1.10 改成 203.0.113.1,在記錄簿寫下對照。 字幕:「全家共用一個 Public IP(公共位址)出門,這叫 NAT(網絡位址轉換)。」
路路:「私人室號不能在街上用,我幫你換成大廈地址,順便記一筆!」
4 回覆的小比寫著收件人 203.0.113.1 Port(連接埠) 40001;路路翻記錄簿,改回 192.168.1.10。 字幕:「回信到了,管理處照記錄轉交。」
路路:「40001 號……是阿麥的!這邊走,這條路最快!」

2. 重點概念

新裝置連上網絡時,還沒有 IP Address。DHCP(動態主機設定協定)就是自動分配 IP Address 和其他設定的協定,好像酒店前台派房卡:你報到,前台給你一個房號,租用一段時間。

家中的裝置用的是 Private IP(私人位址),不能直接在互聯網上使用。NAT(網絡位址轉換)讓全家裝置共用 Router(路由器)上的一個 Public IP(公共位址),好像大廈管理處代收代寄信件。

3. 看深一點

想看動畫詳解? 網絡小故事 14. 大廈管理處:NAT(網絡位址轉換)與 Port Forwarding(連接埠轉發)

DHCP 給你的不只是位址

一次 DHCP,會同時給你上網需要的幾樣設定:

設定 阿麥在家得到的 用途
IP Address 192.168.1.10 你在這個網絡的位址
Subnet Mask(子網絡遮罩) 255.255.255.0(即 /24) 分辨誰和你在同一個 Subnet(子網絡)
Default Gateway(預設閘道) 192.168.1.1 出門找誰(第 4、6 課)
DNS 伺服器 192.168.1.1 查名字找誰(第 7 課)
Lease Time(租約時間) 24 小時 這個位址借給你多久

在家中,這些工作全部由家用 Router 負責:它同時是 DHCP 伺服器、Default Gateway 和 DNS 的轉介站。

四個步驟:DORA

DHCP 分配位址有四個步驟,取英文第一個字母,叫 DORA:

步驟 英文 誰說 說什麼
1 Discover(發現) 阿麥(廣播) 「有沒有 DHCP 伺服器?我需要一個位址!」
2 Offer(提供) 路路 「192.168.1.10 給你,可以嗎?」
3 Request(請求) 阿麥(廣播) 「我要 192.168.1.10!」
4 Acknowledge(確認) 路路 「批准!租用 24 小時。」

為什麼第 1 步要廣播?因為阿麥還沒有 IP Address,也不知道 DHCP 伺服器在哪裡,只好向整個 LAN(區域網絡)大叫。這時他的寄件人位址寫 0.0.0.0(「我還沒有位址」),收件人寫 255.255.255.255(IPv4 的「同一個 LAN 內所有人」);Frame(訊框)上的收件人則是第 3 課的 FF:FF:FF:FF:FF:FF。

第 3 步為什麼又要廣播?因為一個 LAN 裡可能有多於一部 DHCP 伺服器都作出了 Offer。阿麥大聲說出自己選了哪一個,其他伺服器就知道可以把位址留給別人。

圖解:DHCP 的四個步驟 DORA:Discover 廣播、Offer、Request 廣播、Acknowledge,以及最後阿麥得到的設定

圖解:左邊是阿麥,右邊是家中 Router(DHCP 伺服器)。第 1 和第 3 步用廣播;四步完成後,阿麥得到 IP Address、Subnet Mask、Default Gateway、DNS 伺服器和租約時間。

租約:借的,不是送的

DHCP 的位址是借給你的。租約時間過了一半,裝置就會問 Router 可否續租,通常都會批准,所以你在家裡的位址往往很少改變。

如果你離開了(例如拿著手機出門),租約到期後,位址就會收回,分給其他裝置。這就是為什麼第 4 課說,就算坐著不動,IP Address 也有可能改變。

找不到 DHCP 伺服器會怎樣? 很多系統會自己選一個 169.254.x.x 的位址。這種位址只能和同一條線上的裝置溝通,不能上網。如果你見到自己的位址是 169.254 開頭,通常表示 DHCP 出了問題。

NAT(網絡位址轉換):大廈管理處

第 4 課說過,Private IP 不會在互聯網上出現。那麼阿麥(192.168.1.10)怎樣上 example.com(192.0.2.80)?

答案是:家用 Router 在封包出門時,把寄件人改成自己的 Public IP,並記下一筆對照。家中有很多部裝置,怎樣分得清回信是誰的?Router 同時會改寫 Port(連接埠)號碼(第 9 課會詳細介紹 Port),每個對話用一個不同的號碼。

阿麥和家中另一部裝置同時上 example.com,Router 的 NAT 記錄簿可能是這樣的:

家中裝置(Private) 出門後變成(Public) 對方
192.168.1.10,Port 50000 203.0.113.1,Port 40001 192.0.2.80,Port 443
192.168.1.11,Port 50000 203.0.113.1,Port 40002 192.0.2.80,Port 443

兩部裝置剛巧都用了 Port 50000,但出門後分別變成 40001 和 40002,所以不會混亂。

回信到達時:

  1. 回信的收件人是 203.0.113.1,Port 40001。
  2. Router 翻查記錄簿:40001 是 192.168.1.10 的 Port 50000。
  3. Router 把收件人改回 192.168.1.10,Port 50000,送進家中 LAN。

圖解:NAT 出門時把 192.168.1.10:50000 改成 203.0.113.1:40001,回信時按記錄簿改回來

圖解:上半部是出門的封包,寄件人被改寫;下半部是回來的封包,收件人按記錄簿改回。互聯網上只看到 203.0.113.1。

嚴格來說,這種連 Port 一起改寫的做法叫 PAT(連接埠位址轉換),也有人叫 NAPT。今天家用 Router 說的「NAT」,幾乎都是指它。

NAT 的副作用:陌生人找不到你

記錄簿只有「家中裝置主動寄出」的對話。如果互聯網上有人主動寄信到 203.0.113.1,而記錄簿沒有對應的一行,Router 就不知道應該轉交給誰,通常會直接丟掉。

  • 好處:家中裝置不會被陌生人直接找到,多了一層保護。
  • 壞處:如果你想在家中架設伺服器,或者玩某些網上遊戲,就要在 Router 設定 Port Forwarding(連接埠轉發),事先寫好「寄到某個 Port 的信,交給哪部裝置」。

IPv6 的位址多到用不完,每部裝置都可以有自己的 Public 位址,所以一般不用 NAT。

4. 動手試試

任務一:看看你的租約

系統 步驟
Windows 在「命令提示字元」輸入 ipconfig /all,找「租用取得」和「租用到期」,以及「DHCP 伺服器」
macOS 系統設定 → 網絡 → Wi-Fi → 詳細資料 → TCP/IP,看「設定 IPv4」是否為「使用 DHCP」
iPhone 設定 → Wi-Fi → ⓘ,看「設定 IP」是否為「自動」;最底有「更新租約」
Android Wi-Fi 網絡詳細資料 → 進階選項 → IP 設定是否為「DHCP」

想一想:你的 DHCP 伺服器位址,和 Default Gateway 一樣嗎?

任務二:比較兩個位址

第 4 課你已經找過自己的 Private IP,也用搜尋器看過自己的 Public IP。現在你知道:兩者不同,就是因為家中 Router 做了 NAT。

小互動

DHCP 的正確次序

把 DORA 四個步驟排好次序。

  1. Request:阿麥廣播「我要 192.168.1.10!」
  2. Discover:阿麥廣播「有沒有 DHCP 伺服器?」
  3. Acknowledge:路路回覆「批准!租用 24 小時。」
  4. Offer:路路回覆「192.168.1.10 給你,可以嗎?」

小互動

DHCP 還是 NAT?

把以下六張卡分到正確的功能:

  1. 1新裝置連上 Wi-Fi 時,自動得到 192.168.1.10

  2. 2封包出門時,寄件人由 192.168.1.10 變成 203.0.113.1

  3. 3告訴裝置 Default Gateway 是 192.168.1.1

  4. 4回信到達時,按記錄簿找出是哪部裝置的

  5. 5租約過了一半,裝置要求續租

  6. 6讓全家裝置共用一個 Public IP

5. 比喻的極限

  • 酒店前台不會要求你「退房」。 現實中裝置離開時,未必會通知 DHCP 伺服器;伺服器要等租約到期才會收回位址。
  • 不是每部裝置都用 DHCP。 Router、伺服器和打印機常常用人手設定的固定位址;Router 也可以設定「某個 MAC Address(硬體位址)永遠拿到同一個位址」。
  • 管理處不只一層。 有些 ISP(互聯網服務供應商)位址不夠,會在自己的網絡裡再做一次 NAT,所以你的 Router 對外位址也可能不是真正的 Public IP。
  • NAT 不是防火牆。 它令陌生人較難找到你,但真正的保安工作要靠 Firewall(防火牆)(網絡小故事 19)。
  • 路路的記錄簿會過期。 NAT 記錄在對話結束或一段時間沒用後就會刪除,所以回信不能遲太久才到。

6. 小測驗

第 1 題,共 3 題DHCP 的四個步驟,正確的次序是哪一個?
第 2 題,共 3 題為什麼 DHCP Discover 要用廣播送出?
第 3 題,共 3 題阿麥(192.168.1.10)上 example.com 時,example.com 的伺服器看到的寄件人位址是什麼?

7. 重點筆記

  • DHCP(動態主機設定協定)自動派發 IP Address、Subnet Mask、Default Gateway、DNS 伺服器和租約時間。
  • DHCP 的四個步驟是 DORA:Discover、Offer、Request、Acknowledge;Discover 和 Request 用廣播。
  • 位址是租借的,租約過了一半會續租;見到 169.254 開頭的位址,通常表示找不到 DHCP 伺服器。
  • NAT(網絡位址轉換)讓全家共用一個 Public IP:出門時改寫寄件人和 Port,回來時按記錄簿改回。
  • 外面的人不能主動找到 NAT 後面的裝置,除非設定 Port Forwarding(連接埠轉發)。

下一站

NAT 的記錄簿裡出現了很多 Port 號碼:50000、40001、443……它們到底是什麼?為什麼有些資料要「先握手」才送?