DNS 域名系統完整架構
授權機制與區域劃分
DNS 採分層授權模型:NIC 分配頂級域,下授權各級域管理機構。區域 為獨立管理的 DNS 子樹,每區域需一主一從名稱伺服器。根伺服器掌握所有頂級域授權伺服器資訊。
DNS 訊息格式詳解
12 bytes Header | Variable Length Sections
+----------------+----------------+----------------+----------------+
| ID | Flags | QDCOUNT | ANCOUNT |
+----------------+----------------+----------------+----------------+
| NSCOUNT | ARCOUNT | | |
+----------------+----------------+----------------+----------------+
| Questions (QDCOUNT) |
+---------------------------------------------------+
| Answers (ANCOUNT) |
+---------------------------------------------------+
| Authority (NSCOUNT) |
+---------------------------------------------------+
| Additional (ARCOUNT) |
+---------------------------------------------------+
Flags 欄位位元解析
| 欄位 | 位數 | 說明 |
| QR | 1 | 0=查詢, 1=回應 |
| Opcode | 4 | 0=標準查詢, 1=反向查詢, 2=伺服器狀態 |
| AA | 1 | 授權回答 |
| TC | 1 | 截斷標誌 (UDP >512 bytes) |
| RD | 1 | 期望遞迴查詢 |
| RA | 1 | 支援遞迴查詢 |
| Rcode | 4 | 0=無錯誤, 3=名稱錯誤 |
資源記錄 (RR) 類型
| 類型 | 值 | 用途 |
| A | 1 | 主機名 → IPv4 位址 |
| PTR | 12 | IP 位址 → 主機名 (反向查詢) |
| CNAME | 5 | 別名 → 規範名稱 |
| MX | 15 | 郵件交換記錄 |
| NS | 2 | 授權名稱伺服器 |
| HINFO | 13 | 主機 CPU/OS 資訊 |
反向查詢機制
IP 位址反轉並附加 in-addr.arpa:140.252.13.33 → 33.13.252.140.in-addr.arpa。頂級域對應網路號,層層遞減至主機號。
傳輸協定選擇
- 預設 UDP 埠 53,回應 >512 bytes 時截斷 (TC=1)
- 截斷時客戶端改用 TCP 重發查詢
- 區域傳送 (AXFR) 強制使用 TCP
TFTP 簡易檔案傳輸協定
五種封包類型
| Opcode | 名稱 | 格式 |
| 1 | RRQ (讀請求) | Opcode | 檔名\0 | 模式\0 |
| 2 | WRQ (寫請求) | Opcode | 檔名\0 | 模式\0 |
| 3 | DATA (資料) | Opcode | 區塊編號 | 資料 (512 bytes) |
| 4 | ACK (確認) | Opcode | 區塊編號 |
| 5 | ERROR (錯誤) | Opcode | 錯誤碼 | 錯誤訊息\0 |
運作流程與特性
- 停止等待協定:每個資料區塊必須收到 ACK 才發送下一個
- 區塊編號:從 1 開始,65535 後歸零
- 傳輸結束:資料區塊 < 512 bytes 表示最後一包
- 模式:netascii (文字轉換) 或 octet (二進位)
- 安全性:無認證機制,僅用於開機載入等受信環境
BOOTP 開機協定
解決 RARP 缺陷
- RARP 僅回傳 IP 位址,無法提供閘道、開機檔案等資訊
- RARP 使用連結層廣播,無法跨路由器
- BOOTP 基於 UDP,支援跨網段透過轉發代理 (Relay Agent)
BOOTP 封包結構
op(1) | htype(1) | hlen(1) | hops(1) | xid(4) | secs(2) | flags(2)
ciaddr(4) | yiaddr(4) | siaddr(4) | giaddr(4)
chaddr(16) | sname(64) | file(128) | vend(64)
關鍵欄位說明
| 欄位 | 說明 |
| op | 1=請求, 2=回應 |
| htype/hlen | 硬體類型/長度 (乙太網: 1/6) |
| xid | 交易 ID,客戶端隨機產生,伺服器原樣返回 |
| secs | 客戶端啟動後秒數,備用伺服器延遲回應用 |
| ciaddr | 客戶端已知 IP (否則為 0) |
| yiaddr | 伺服器指派的客戶端 IP |
| siaddr/giaddr | 伺服器 IP / 轉發代理 IP |
| chaddr | 客戶端硬體位址 (MAC) |
| sname/file | 開機伺服器名稱 / 開機檔案完整路徑 |
| vend | 廠商擴展區域 (DHCP 使用) |
埠號與運作
- 伺服器埠:67,客戶端埠:68
- 客戶端廣播請求 (IP: 0.0.0.0 → 255.255.255.255)
- 通常搭配 TFTP 下載開機檔案