學習目標
- 理解 DNS 的作用和重要性
- 掌握 DNS 名稱解析的完整流程
- 理解遞迴查詢和迭代查詢的區別
- 了解 DNS 伺服器的層級結構
- 理解 DNS 快取機制
1. DNS 的基本概念
1.1 為什麼需要 DNS?
問題: 網際網路上的電腦使用 IP 位址(如 140.131.1.1)來識別,但人類難以記憶數字。
解決方案: DNS (Domain Name System) 將易記的網域名稱(如 www.ntue.edu.tw)轉換為 IP 位址。
1.2 DNS 的作用
- 名稱解析: 將網域名稱轉換為 IP 位址
- 反向解析: 將 IP 位址轉換為網域名稱
- 負載平衡: 一個網域名稱可以對應多個 IP 位址
- 郵件路由: 協助電子郵件系統找到郵件伺服器
1.3 網域名稱的結構
網域名稱採用階層式結構,從右到左層級遞減:
www.ntue.edu.tw
│ │ │ │
│ │ │ └─ 頂級域 (TLD: Top-Level Domain)
│ │ └──── 二級域 (Second-Level Domain)
│ └──────── 子網域 (Subdomain)
└──────────── 主機名稱 (Hostname)
範例解析:
- .tw: 台灣的國家頂級域
- .edu.tw: 教育機構的二級域
- ntue.edu.tw: 國立臺北教育大學的網域
- www.ntue.edu.tw: 該網域下的 www 主機
2. DNS 伺服器的層級結構
2.1 DNS 階層架構
DNS 採用分散式的階層架構:
根伺服器 (Root Servers)
|
┌────────────────┼────────────────┐
| | |
.com TLD .edu TLD .tw TLD
| | |
┌───┴───┐ ┌───┴───┐ ┌───┴───┐
| | | | | |
google amazon ntue ntu 其他 .tw 網域
2.2 四種類型的 DNS 伺服器
1. 根伺服器 (Root Servers)
- 數量: 全球有 13 個根伺服器(實際有更多鏡像)
- 功能: 知道所有頂級域 (TLD) 伺服器的位址
- 範例:
.com,.edu,.tw等 TLD 的伺服器位址
2. 頂級域伺服器 (TLD Servers)
- 功能: 管理特定頂級域的資訊
- 範例:
.comTLD 伺服器管理所有.com網域.edu.twTLD 伺服器管理所有.edu.tw網域
3. 權威名稱伺服器 (Authoritative Name Servers)
- 功能: 管理特定網域的完整 DNS 記錄
- 範例:
ntue.edu.tw的權威伺服器知道該網域下所有主機的 IP 位址
4. 本地 DNS 伺服器 (Local DNS Server)
- 功能: 為使用者提供 DNS 查詢服務
- 特點: 通常由 ISP 提供,或組織內部設定
- 功能:
- 快取查詢結果
- 代表使用者進行 DNS 查詢
3. DNS 查詢類型
3.1 遞迴查詢 (Recursive Query)
定義: 查詢者要求 DNS 伺服器必須提供最終答案,不能只提供其他伺服器的位址。
特點: - 查詢者(通常是使用者電腦)向本地 DNS 伺服器發出遞迴查詢 - 本地 DNS 伺服器負責找到最終答案並返回
範例:
使用者: "www.ntue.edu.tw 的 IP 是什麼?"
本地 DNS: "我會幫你找到答案"(遞迴查詢)
3.2 迭代查詢 (Iterative Query)
定義: DNS 伺服器可以返回它知道的最佳答案,可能是其他伺服器的位址。
特點: - 查詢者接受部分答案(如其他伺服器的位址) - 查詢者繼續向其他伺服器查詢
範例:
查詢者: "www.ntue.edu.tw 的 IP 是什麼?"
DNS 伺服器: "我不知道,但你可以去問 .tw TLD 伺服器,位址是..."
4. DNS 名稱解析的完整流程
4.1 完整流程步驟
假設使用者在瀏覽器輸入 www.ntue.edu.tw:
步驟 1: 使用者輸入網域名稱
使用者在瀏覽器輸入: www.ntue.edu.tw
步驟 2: 本機快取查詢
作業系統首先檢查本機的 DNS 快取中是否有該網域的記錄。
如果有: 直接返回 IP 位址,流程結束。
如果沒有: 繼續步驟 3。
步驟 3: 遞迴查詢至本地 DNS 伺服器
作業系統向設定的本地 DNS 伺服器(通常由 ISP 提供)發出遞迴查詢請求。
使用者電腦 → 本地 DNS 伺服器
"www.ntue.edu.tw 的 IP 是什麼?"
步驟 4: 本地 DNS 伺服器檢查快取
本地 DNS 伺服器檢查自己的快取。
如果有: 直接返回 IP 位址給使用者。
如果沒有: 本地 DNS 伺服器代表使用者進行迭代查詢。
步驟 5: 查詢根伺服器
本地 DNS 伺服器向根伺服器發出迭代查詢:
本地 DNS → 根伺服器
"www.ntue.edu.tw 的 IP 是什麼?"
根伺服器回應:
"我不知道,但你可以去問負責 .tw 的 TLD 伺服器,
它的位址是 a.dns.tw (203.73.75.1)"
步驟 6: 查詢 TLD 伺服器
本地 DNS 伺服器向 .tw TLD 伺服器查詢:
本地 DNS → .tw TLD 伺服器
"www.ntue.edu.tw 的 IP 是什麼?"
TLD 伺服器回應:
"我不知道,但你可以去問負責 edu.tw 的權威名稱伺服器,
它的位址是 dns.edu.tw (140.111.1.1)"
步驟 7: 查詢權威名稱伺服器
本地 DNS 伺服器向 edu.tw 的權威名稱伺服器查詢:
本地 DNS → edu.tw 權威伺服器
"www.ntue.edu.tw 的 IP 是什麼?"
權威伺服器回應:
"www.ntue.edu.tw 的 IP 位址是 140.131.1.1"
步驟 8: 返回結果並快取
本地 DNS 伺服器: 1. 將 IP 位址返回給使用者的電腦 2. 將這個對應關係快取起來,以加速未來的查詢
步驟 9: 使用者取得 IP 位址
使用者的電腦收到 IP 位址 140.131.1.1,開始與該伺服器建立連線。
4.2 流程圖
使用者輸入 www.ntue.edu.tw
↓
檢查本機快取
↓ (沒有)
查詢本地 DNS 伺服器(遞迴查詢)
↓
本地 DNS 檢查快取
↓ (沒有)
本地 DNS 查詢根伺服器(迭代查詢)
↓
根伺服器回應: "問 .tw TLD 伺服器"
↓
本地 DNS 查詢 .tw TLD 伺服器(迭代查詢)
↓
TLD 伺服器回應: "問 edu.tw 權威伺服器"
↓
本地 DNS 查詢 edu.tw 權威伺服器(迭代查詢)
↓
權威伺服器回應: "IP 是 140.131.1.1"
↓
本地 DNS 快取結果並返回給使用者
↓
使用者取得 IP,建立連線
5. DNS 快取機制
5.1 為什麼需要快取?
- 減少查詢次數: 避免重複查詢相同網域
- 提高速度: 快取查詢幾乎瞬間完成
- 減少網路流量: 減少 DNS 查詢的網路傳輸
- 減輕伺服器負擔: 減少對上層 DNS 伺服器的查詢
5.2 快取的層級
- 本機快取: 作業系統的快取
- 本地 DNS 快取: ISP 的 DNS 伺服器快取
- 瀏覽器快取: 瀏覽器也可能快取 DNS 記錄
5.3 TTL (Time To Live)
每個 DNS 記錄都有一個 TTL 值,表示該記錄在快取中保存的時間。
- TTL 過期: 快取記錄會被刪除,下次查詢需要重新查詢
- 常見 TTL 值: 300 秒(5 分鐘)到 86400 秒(24 小時)
6. DNS 記錄類型
6.1 常見的 DNS 記錄
| 記錄類型 | 說明 | 範例 |
|---|---|---|
| A | IPv4 位址記錄 | www.ntue.edu.tw → 140.131.1.1 |
| AAAA | IPv6 位址記錄 | www.ntue.edu.tw → 2001:288:1234::1 |
| CNAME | 別名記錄 | www → example.com |
| MX | 郵件交換記錄 | mail.ntue.edu.tw → 140.131.1.10 |
| NS | 名稱伺服器記錄 | ntue.edu.tw → dns.ntue.edu.tw |
7. 實際範例
7.1 完整查詢範例
查詢: www.google.com
過程: 1. 本機快取: 沒有 2. 查詢本地 DNS: 沒有快取 3. 查詢根伺服器: "問 .com TLD 伺服器" 4. 查詢 .com TLD: "問 google.com 的權威伺服器" 5. 查詢權威伺服器: "IP 是 172.217.160.78" 6. 返回並快取
7.2 快取命中範例
第二次查詢: www.google.com
過程: 1. 本機快取: 沒有(可能已過期) 2. 查詢本地 DNS: 有快取! 直接返回 IP 3. 完成(不需要向上查詢)
8. DNS 的安全問題
8.1 DNS 快取投毒 (DNS Cache Poisoning)
攻擊方式: 攻擊者偽造 DNS 回應,將錯誤的 IP 位址注入快取。
後果: 使用者被導向惡意網站。
8.2 DNS over HTTPS (DoH) / DNS over TLS (DoT)
解決方案: 加密 DNS 查詢,防止被竊聽和篡改。
9. 練習題
練習題 1
請說明 DNS 名稱解析的完整流程。
參考答案: 1. 使用者輸入網域名稱 2. 檢查本機快取 3. 查詢本地 DNS 伺服器(遞迴查詢) 4. 本地 DNS 檢查快取 5. 本地 DNS 查詢根伺服器(迭代查詢) 6. 根伺服器回應 TLD 伺服器位址 7. 本地 DNS 查詢 TLD 伺服器(迭代查詢) 8. TLD 伺服器回應權威伺服器位址 9. 本地 DNS 查詢權威伺服器(迭代查詢) 10. 權威伺服器回應 IP 位址 11. 本地 DNS 快取並返回給使用者
練習題 2
遞迴查詢和迭代查詢的區別是什麼?
參考答案: - 遞迴查詢: 查詢者要求 DNS 伺服器必須提供最終答案,不能只提供其他伺服器的位址。通常使用者向本地 DNS 伺服器發出遞迴查詢。 - 迭代查詢: DNS 伺服器可以返回它知道的最佳答案(可能是其他伺服器的位址),查詢者繼續向其他伺服器查詢。通常本地 DNS 伺服器向上層伺服器發出迭代查詢。
練習題 3
為什麼需要 DNS 快取?
參考答案: DNS 快取可以減少查詢次數、提高查詢速度、減少網路流量,並減輕 DNS 伺服器的負擔。如果沒有快取,每次查詢都需要從根伺服器開始查詢,會非常慢且浪費資源。
10. 考試重點提醒
- 完整流程: 要能詳細說明從使用者輸入到取得 IP 的每個步驟
- 查詢類型: 理解遞迴查詢和迭代查詢的區別
- 伺服器層級: 理解根伺服器、TLD 伺服器、權威伺服器的角色
- 快取機制: 理解為什麼需要快取和 TTL 的作用
- 實際應用: 能夠解釋實際的 DNS 查詢過程