第 7 課

互聯網的電話簿DNS(網域名稱系統)

電腦只懂數字,為什麼你打網址也可以上網?

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

1. 漫畫開場

也可以直接點擊任何一格
漫畫文字版(畫面及對白)
格 畫面 對白
1 小比拿著收件人寫 example.com 的信;路路看著寫滿數字的指路牌皺眉。 字幕:「阿麥在瀏覽器打了 example.com。」
小比:「路路,送去 example.com!」
路路:「我只看得懂 IP Address(網絡位址),這個名字我不會找……」
2 查查博士走訪三個櫃位:Root Server(根伺服器)、.com、example.com 的權威伺服器。 字幕:「DNS(網域名稱系統)由總目錄開始,一層一層問下去。」
查查博士:「讓我查一查……」
櫃位:「去問 .com。」「去問 example.com 的權威伺服器。」「是 192.0.2.80!」
3 查查博士遞出答案卡,並在電話簿夾上書籤「TTL(存活時間) 3600 秒」。 查查博士:「example.com 就是 192.0.2.80。我夾張書籤,一小時內再問就快了!」
字幕:「查過的答案會暫時記住,這叫 Cache(快取)。」
4 阿麥再問一次,查查博士即時翻到書籤頁回答;小比背包寫上 192.0.2.80 出發。 字幕:「第二次問,直接翻到書籤頁。」
阿麥:「example.com 在哪裡?」
查查博士:「書籤有記錄,192.0.2.80!」
小比:「背包執好,出發囉!」

2. 重點概念

電腦找對方,要用 IP Address,例如 192.0.2.80;但人比較容易記名字,例如 example.com。

DNS(網域名稱系統)就是負責把網址變成 IP Address 的系統,好像互聯網的電話簿:你查名字,它告訴你號碼。

這本電話簿不是一本書放在一個地方,而是由全世界很多部伺服器分工合作,一層一層地查出答案。

3. 看深一點

網址的結構:由右向左讀

www.example.com 這種名字,叫 Domain Name(網域名稱)。它由幾段組成,要由右向左讀,越右邊層級越高:

部分 例子 意思
Root(根) 最右邊一個看不見的「.」 整本電話簿的總目錄
TLD(頂級網域) com 分冊,例如 .com、.org、.hk
第二層網域 example 某個機構或個人登記的名字
子網域 www 由網域擁有者自己再分的名字

完整寫法其實是 www.example.com.,最後那一點代表 Root,平日可以省略。

本課的範例位址 本課假設 example.com 的伺服器在 192.0.2.80(IPv6 是 2001:db8::80)。192.0.2.x 是專門留給教材使用的位址。留意:它以 192 開頭,但不是 Private IP(私人位址);只有 192.168. 開頭的才是。

五個角色:誰在查電話簿?

角色 比喻 工作
你的裝置 想打電話的人 問:「example.com 的號碼是什麼?」
Resolver(解析伺服器) 查查博士 代你一層一層去問,再把答案告訴你
Root Server(根伺服器) 總目錄 不知道答案,但知道每個 TLD 分冊由誰管
TLD 伺服器 分冊 知道 example.com 由哪部 Authoritative Server(權威伺服器)負責
Authoritative Server(權威伺服器) 本人親自接電話 保存 example.com 的正式答案

你的裝置用哪一部 Resolver?通常是連上網絡時,由 DHCP(動態主機設定協定)告訴你的(第 8 課)。在家中,它常常是 Router(路由器) 192.168.1.1,Router 再轉問 ISP(互聯網服務供應商)的 Resolver。

一次完整的查詢

阿麥第一次打 example.com,而大家都沒有記錄時:

  1. 阿麥的電腦問 Resolver:「example.com 是什麼 IP Address?」
  2. Resolver 問 Root Server。Root Server 答:「我不知道,但 .com 由這幾部伺服器負責,去問他們。」
  3. Resolver 問 .com 的 TLD 伺服器。它答:「example.com 由這幾部 Authoritative Server 負責,去問他們。」
  4. Resolver 問 example.com 的 Authoritative Server。它答:「example.com 是 192.0.2.80。」
  5. Resolver 把答案交給阿麥,並把答案記進 Cache(快取)。

整個過程通常只需要幾十毫秒。

圖解:DNS 查詢的五個步驟:阿麥問 Resolver,Resolver 依次問 Root Server、.com TLD 伺服器和 Authoritative Server,最後把答案交回阿麥

圖解:阿麥只問一次,由 Resolver(查查博士)代他走完三個櫃位。Root Server 和 TLD 伺服器只會「指路」,只有 Authoritative Server 才有正式答案。

Cache(快取)與 TTL(存活時間)

如果每次上網都要走完五步,互聯網會慢很多。所以每個人都會把答案暫時記住:

  • 你的瀏覽器和作業系統會記住。
  • Resolver 會記住,其他用同一部 Resolver 的人也受惠。
  • Resolver 也會記住「.com 由誰負責」,下次不用再問 Root Server。

記住多久?每個答案都附帶一個 TTL(存活時間),單位是秒。例如 TTL 3600,表示這個答案可以記住一小時,之後要重新查過。

第 5 課講過 IP 封包的 TTL;DNS 答案的 TTL 是另一樣東西,意思是「這個答案可以快取多少秒」。兩者名字一樣,用途不同。

電話簿上記錄了什麼?

每一條記錄叫 DNS Record(DNS 記錄),常見的有:

記錄類型 意思 例子
A Record(A 記錄) 名字 → IPv4 位址 example.com → 192.0.2.80
AAAA Record(AAAA 記錄) 名字 → IPv6 位址 example.com → 2001:db8::80
CNAME Record(CNAME 記錄) 名字 → 另一個名字(別名) www.example.com → example.com
MX Record(MX 記錄) 這個網域的電郵交給哪部伺服器 example.com 的電郵 → mail.example.com

DNS 查詢通常用 UDP(用戶資料包協定)送出,Port(連接埠)號碼是 53。第 9 課會解釋這是什麼意思。

4. 動手試試

任務一:自己查電話簿

在電腦上打開「命令提示字元」(Windows)或「終端機」(macOS),輸入:

nslookup example.com

你會見到兩部分:

  1. Server/Address:你正在用的 Resolver。在家中,它可能就是你的 Router。
  2. Name/Address:example.com 的 IP Address。可能同時有 IPv4 和 IPv6。

留意: 真實的 example.com 是一個由互聯網標準機構管理的示範網站,查到的位址會和本課假設的 192.0.2.80 不同。這是正常的:本課用 192.0.2.80,是為了不指向任何真實的伺服器。

再試試查兩次同一個名字。第二次通常快一點,因為答案已在 Cache 裡。

任務二:沒有 DNS 會怎樣?

在一張紙上寫下你最常去的三個網站名字,再想一想:如果要記住它們的 IP Address,你記得到嗎?這就是 DNS 存在的原因。

小互動

查一個名字的正確次序

第一次查詢 example.com,而大家都沒有 Cache。把五個步驟排好次序。

  1. Resolver 問 .com 的 TLD 伺服器
  2. Resolver 把答案 192.0.2.80 交給阿麥,並記進 Cache
  3. 阿麥的電腦問 Resolver:example.com 是什麼 IP Address?
  4. Resolver 問 example.com 的 Authoritative Server
  5. Resolver 問 Root Server

小互動

這是哪一種 DNS 記錄?

把以下五張卡分到正確的記錄類型:

  1. 1example.com → 192.0.2.80

  2. 2example.com → 2001:db8::80

  3. 3www.example.com → example.com

  4. 4example.com 的電郵交給 mail.example.com

  5. 5shop.example.com → 192.0.2.81

5. 比喻的極限

  • 不是一本電話簿,而是一整座圖書館。 全世界沒有一部伺服器知道所有答案;DNS 是分散在世界各地、分層負責的系統。
  • 一個名字可以有很多個號碼。 大型網站常常有多個 IP Address,不同地方的人可能得到不同答案,好讓大家連到最近的伺服器。
  • 號碼可以改變,舊答案可能過時。 網站搬了伺服器,Cache 裡的舊答案要等 TTL 過期才會更新。
  • 查查博士只負責查號碼,不負責送信。 DNS 查到 IP Address 後,真正的資料傳送和 DNS 無關。
  • 傳統的 DNS 查詢沒有加密。 同一個網絡上的人有機會看到你查了哪些名字;現在有加密的 DNS 查詢方法,但不是所有裝置都預設使用。

6. 小測驗

第 1 題,共 3 題DNS(網域名稱系統)的主要工作是什麼?
第 2 題,共 3 題第一次查詢 example.com 時,Resolver(解析伺服器)問 Root Server(根伺服器),Root Server 會回答什麼?
第 3 題,共 3 題一個 DNS 答案的 TTL(存活時間)是 3600。這代表什麼?

7. 重點筆記

  • DNS(網域名稱系統)把 Domain Name(網域名稱)變成 IP Address,是互聯網的電話簿。
  • 網址由右向左讀:Root → TLD(頂級網域,例如 .com)→ 第二層網域 → 子網域。
  • Resolver(解析伺服器)代你依次問 Root Server、TLD 伺服器和 Authoritative Server(權威伺服器)。
  • 答案會被 Cache(快取)起來,保存多久由 TTL 決定。
  • A Record 對應 IPv4,AAAA Record 對應 IPv6;DNS 查詢通常用 UDP Port 53。

下一站

我們一直說 192.168.1.10 是阿麥的位址,Resolver 是 192.168.1.1。但這些設定是誰給他的?家裡這麼多裝置,又怎樣共用一個 Public IP(公共位址)出門?