Learning Objectives
- 說明為什麼需要網域名稱,以及網域名稱由右往左的階層(根、頂級網域、第二層…)
- 說出 .tw、.edu.tw 由誰管理,以及「委派」的意思
- 描述遞迴解析器從根伺服器一路問到權威伺服器的過程
- 解釋快取與 TTL:為什麼第二次查詢比較快、改了 IP 為什麼不會立刻生效
- 分辨 A、AAAA、CNAME、MX、NS 等常見記錄類型
- 說明網域註冊的流程:註冊人、受理註冊機構、註冊管理機構
網址打錯一個字,為什麼就找不到網站
在瀏覽器打 www.exmaple.com(少打對一個字母),常會看到「找不到伺服器的 IP 位址」。這句話透露了一件事:
瀏覽器要連上網站,先得把名稱換成 IP 位址;名稱打錯,這一步就失敗了,根本還沒開始跟網站說話。
網路上的電腦靠 IP 位址找到彼此,例如 192.0.2.10 或 IPv6 的 2001:db8::10。數字對電腦很方便,對人卻很難記;
而且網站換了機房、換了 IP,總不能叫所有使用者都改記新的數字。所以我們用名稱,再由一套系統把名稱翻譯成位址:
這套系統就是 DNS(Domain Name System,網域名稱系統)。
| 比喻 | DNS 裡對應的東西 |
|---|---|
| 通訊錄裡的「名字」 | 網域名稱,例如 www.example.edu.tw |
| 名字旁邊的「電話號碼」 | IP 位址,例如 192.0.2.10 |
| 查通訊錄 | 名稱解析(name resolution) |
早期 ARPANET 的主機不多,由一個中心單位維護一份對照表檔案(HOSTS.TXT),大家定期下載。主機越來越多,一份檔案、一個單位顧不過來, 1983 年 Paul Mockapetris 發表 RFC 882 與 RFC 883,提出分散式、分層管理的網域名稱系統;1987 年由 RFC 1034、RFC 1035 取代,沿用到今天。
這一課要回答:網域名稱怎麼分層、名稱解析一步一步怎麼進行、快取為什麼讓網路變快也讓「改設定」變慢,以及一個網域是怎麼註冊出來的。
這一課用到的網域(
example.com、example.edu.tw…)與 IP(192.0.2.x、198.51.100.x、203.0.113.x、2001:db8::)都是保留給教學與文件用的,不是真的網站。
網域名稱的階層:從右往左讀
網域名稱用句點分成好幾段,從右往左一層一層變細:
www . example . edu . tw .
│ │ │ │ └─ 根(root):寫網址時通常省略最後這個點
│ │ │ └──── 頂級網域(TLD):tw,代表臺灣
│ │ └───────── 第二層:edu,教育單位
│ └───────────────── 第三層:example,某一所學校
└───────────────────────── 主機名稱:www,這所學校的網站
| 層級 | 例子 | 說明 |
|---|---|---|
| 根 | . |
整棵樹的起點,由全世界 13 組根伺服器(名稱 a~m.root-servers.net)提供 |
| 頂級網域(TLD) | .com、.org、.tw、.jp |
分成通用頂級網域(.com、.org…)與國家/地區代碼頂級網域(.tw、.jp…) |
| 第二層以下 | edu.tw、example.com |
由上一層「委派」給某個單位管理 |
| 主機名稱 | www、mail、lib |
網域擁有者自己決定 |
委派(delegation)是 DNS 分散管理的關鍵:每一層只記得「下一層歸誰管」,不記得更下面的細節。
根伺服器知道 .tw 的伺服器在哪裡,但不知道 www.example.edu.tw 的 IP;.tw 的伺服器知道 edu.tw 歸誰管;一路往下,
最後由學校自己的權威伺服器(authoritative name server)回答 www 的位址。
臺灣的例子:
.tw與中文的.台灣由財團法人台灣網路資訊中心(TWNIC)負責註冊管理。.tw底下有類別型網域:com.tw(公司)、org.tw(組織)、edu.tw(教育單位)、gov.tw(政府機關)等。edu.tw由教育部管理;學校取得某校.edu.tw之後,再由學校的計算機中心分配系所.某校.edu.tw這類下一層名稱。
名稱的寫法也有規則:每一段只能用英文字母、數字與連字號(-),不能以連字號開頭或結尾,每一段最多 63 個字元;
大小寫視為相同,WWW.Example.COM 和 www.example.com 是同一個名稱。
名稱解析:解析器一站一站問
你的電腦自己不會從根伺服器問起。它把問題丟給一台遞迴解析器(recursive resolver),通常是學校、公司或電信業者提供的 DNS 伺服器, 由它替你跑完全程,最後只把答案交回來:
- 你的電腦問解析器:「
www.example.edu.tw的 IP 是什麼?」 - 解析器問根伺服器 → 回答是轉介:「
.tw歸 .tw 的伺服器管,去問它」 - 解析器問 .tw 伺服器 → 轉介:「去問
edu.tw的伺服器」 - 解析器問 edu.tw 伺服器 → 轉介:「去問
example.edu.tw的伺服器」 - 解析器問 example.edu.tw 的權威伺服器 → 答案:
192.0.2.10 - 解析器把
192.0.2.10交回你的電腦
- 你的電腦對解析器發出的是遞迴查詢:「請給我最後的答案」。
- 解析器對各層伺服器發出的是反覆查詢(iterative):每一站只回答它知道的部分,常常是一句「我不知道,但你可以去問誰」(轉介,referral)。
- 解析器一開始就知道根伺服器的位址(內建的 root hints),所以總是有起點。
- 13 組根伺服器是 13 個名稱,不是 13 台機器;每一組都用任播(anycast)在世界各地放了很多台,讓查詢就近得到回答。
- DNS 查詢通常用 UDP 的 53 號埠,一來一回的封包很小。
接下來在模擬器裡實際查一次,再查第二次,比較兩次有什麼不同。
快取與 TTL:快的代價是「改了不會立刻生效」
剛才第二次查詢沒有對外問任何伺服器,因為解析器把答案放進了快取(cache)。每一筆答案都帶著一個 TTL(Time To Live,存活時間,單位是秒), 由權威伺服器決定:TTL 300 表示「這個答案可以記 5 分鐘」,時間一到就要重新問。
快取不只一層:
| 誰在快取 | 例子 |
|---|---|
| 瀏覽器 | 最近開過的網站,瀏覽器自己會先記一下 |
| 作業系統 | Windows、macOS、手機都有 DNS 快取 |
| 遞迴解析器 | 全校、全公司的人共用;別人查過的名稱,你查就直接命中 |
快取也記得「轉介」:知道 .tw 伺服器在哪裡之後,查其他 .tw 名稱就不必再問根伺服器。所以根伺服器實際收到的查詢,比全世界上網的次數少得多。
快取帶來一個常見的現象:網站搬家換了新 IP,有些人馬上連到新主機,有些人還連到舊主機。這是因為各地的快取還記著舊答案,要等 TTL 過期才會重問; 常聽到的「DNS 生效要等一段時間」,其實就是在等快取過期。網站管理者在搬家前,通常會先把 TTL 調短。
查不到的答案也會快取(否定快取):解析器查到「這個名稱不存在」,也會記一段時間,避免一直重問。
想一想:解析與快取
遞迴解析器的快取是空的,要查 www.example.edu.tw,它依序問哪些伺服器?
www.example.edu.tw 的 A 記錄 TTL 是 300 秒。解析器查到後,第 2 分鐘你的同學又查同一個名稱,會怎樣?
公司把網站搬到新的 IP,有些員工連到新主機、有些還連到舊主機。最可能的原因是?
DNS 記錄類型:不只是名稱對 IP
權威伺服器裡存的是一筆一筆的資源記錄(resource record),每一筆有名稱、TTL、類型與內容。常見的類型:
| 類型 | 內容 | 例子 |
|---|---|---|
| A | IPv4 位址 | example.com A 198.51.100.7 |
| AAAA | IPv6 位址 | example.com AAAA 2001:db8::7 |
| CNAME | 別名:這個名稱其實是另一個名稱 | www.example.com CNAME example.com |
| MX | 這個網域的郵件要送到哪台主機(數字是優先順序,小的先試) | example.com MX 10 mail.example.com |
| NS | 這個網域由哪些名稱伺服器負責(委派就是靠 NS 記錄) | example.com NS ns1.example.com |
| TXT | 一段文字,常用來證明「這個網域是我的」或設定寄信驗證 | example.com TXT "v=spf1 …" |
一個網域的記錄寫在一起就是區域檔(zone file),概念上長這樣:
example.com. 3600 IN A 198.51.100.7
example.com. 3600 IN AAAA 2001:db8::7
www.example.com. 3600 IN CNAME example.com.
example.com. 3600 IN MX 10 mail.example.com.
mail.example.com. 3600 IN A 198.51.100.25
注意 MX 的內容是名稱不是 IP:寄信的伺服器要先查 MX 得到 mail.example.com,再查它的 A 記錄才拿到 IP。
CNAME 也一樣,解析器拿到別名之後要接著查真正的名稱;如果真正的名稱也歸同一台權威伺服器管,它會在同一個回答裡一併附上。
在 Windows 的命令提示字元可以用 nslookup 名稱 查真實的網域;macOS 與 Linux 也可以用 dig 名稱。
網域怎麼註冊:誰負責什麼
想要一個自己的網域,例如 mystudio.com.tw,流程裡有三個角色:
| 角色 | 英文 | 做什麼 |
|---|---|---|
| 註冊人 | registrant | 你:想要使用這個名稱的人或單位 |
| 受理註冊機構 | registrar | 對外受理申請的公司,幫你查名稱、送件、收費、處理續約 |
| 註冊管理機構 | registry | 管理整個頂級網域的單位,維護「哪個名稱屬於誰、委派給哪些名稱伺服器」;.tw 是 TWNIC |
流程的概念:
- 你向受理註冊機構查詢
mystudio.com.tw有沒有人用。網域名稱先申請先使用,同一個名稱全世界只有一個。 - 填寫註冊人資料、同意服務條款、付費;註冊有使用期限,到期要續約,沒續約名稱就會被釋出。
- 受理註冊機構把申請送到註冊管理機構;註冊管理機構在
.tw的區域資料加上委派:mystudio.com.tw的 NS 是你指定的名稱伺服器。 - 你在那台名稱伺服器(自己架的,或主機商提供的)建立
www、mail等記錄。
從這一刻起,全世界的解析器問到 .tw 伺服器時,都會被轉介到你的名稱伺服器。
有些網域不是誰都能註冊:edu.tw 只給教育單位,學校要經由教育部申請;gov.tw 只給政府機關。
註冊人的聯絡資料可以用 WHOIS 或 RDAP 查詢服務查到一部分,個人資料通常會被遮蔽。
想一想:記錄類型與註冊
學校要讓 www.example.edu.tw 也能用 IPv6 連線,應該在 DNS 加上哪一種記錄?
查 www.example.com 的 A 記錄,權威伺服器回答「www.example.com 是 example.com 的 CNAME」。解析器接下來會做什麼?
某個 .com.tw 網域到期沒有續約,也沒有人再註冊它。過一陣子之後,大家查這個名稱會得到什麼?
重點整理
- DNS 把好記的網域名稱翻譯成 IP 位址;1983 年 Mockapetris 的 RFC 882、883 提出,1987 年由 RFC 1034、1035 取代。
- 網域名稱從右往左分層:根 → 頂級網域(
.tw、.com)→ 第二層(edu.tw)→ …;每一層把下一層委派給別的伺服器管。 .tw與.台灣由 TWNIC 負責註冊管理,edu.tw由教育部管理。- 你的電腦把問題交給遞迴解析器,解析器從根伺服器開始,一路依轉介問到權威伺服器取得答案。
- 答案會依 TTL 快取:第二次查詢更快,但改了 IP 要等快取過期才全面生效;查不到的結果也會被快取。
- 常見記錄:A(IPv4)、AAAA(IPv6)、CNAME(別名)、MX(郵件主機)、NS(委派)、TXT(文字)。
- 註冊網域:註冊人透過受理註冊機構申請,註冊管理機構在頂級網域的區域加上委派;先申請先使用,到期要續約。
下一課:拿到 IP 之後,瀏覽器和網站伺服器怎麼對話?我們來看全球資訊網與 HTTP:網址的結構、請求與回應、狀態碼、Cookie 與 HTTPS。
想動手架網站、設定自己的網域,可以接著上雲端軌。