上一章的封包知道怎麼靠 IP 找到目的地了,但人類記的是「網址」不是 IP——中間的翻譯就是 DNS。本章把 DNS 的查詢流程、紀錄類型、快取行為講白話,再補上 HTTP 請求與狀態碼,最後解釋 CDN 為什麼能讓網站變快。讀完後 AWS ch07(Route 53、CloudFront)和 ch03 的健康檢查會直接看懂。
你記得住 www.google.com,但封包只認 IP(ch01 講過)。DNS(Domain Name System)就是把「名字」翻譯成「號碼」的電話簿——輸入網址後,瀏覽器做的第一件事就是查 DNS 拿到 IP,之後才開始寄封包。
查一次電話簿的完整流程(以 www.example.com 為例):
8.8.8.8(Google)。它是「幫你跑腿查號的服務台」。93.184.216.34)回傳給瀏覽器。電話簿裡不只一種紀錄。常見類型:
example.com → 93.184.216.34)。最基本的一種。AAAA 是 IPv6 版。www.example.com → myapp.herokuapp.com),像「此人已搬家,請改查新名字」。查的人要再查一次新名字才拿得到 IP。CNAME 有一條重要規定:不能用在「裸域(Zone Apex)」上。裸域就是不帶 www 的根網域(example.com)——DNS 規範要求裸域必須直接給出 IP(A 紀錄),不能「請改查別人」。
xxx.elb.amazonaws.com),背後 IP 會變動,你沒辦法寫死 A 紀錄,裸域又不能用 CNAME——卡死。拿到 IP、建好 TCP 連線(ch01)之後,瀏覽器終於開始「講正事」——講的語言就是 HTTP(HyperText Transfer Protocol)。它是純文字的一問一答:
GET(給我看)、POST(我要新增)、PUT(我要更新)、DELETE(幫我刪除)。200 OK 最常見。301 永久搬家、302 暫時搬家(瀏覽器會自動再連新網址)。403 沒權限、404 找不到、429 請求太頻繁。500 程式炸了、502 閘道收到無效回應、503 服務暫時無法使用。ch01 說過延遲取決於距離:伺服器在美國,台灣使用者每個請求都要橫跨太平洋。CDN(Content Delivery Network)的解法很直白:在全世界蓋幾百個小倉庫(邊緣節點),把內容先鋪過去,讓使用者就近取貨——像網購從「美國直郵」變「巷口超商取貨」。
| 類型 | 指向什麼 | 白話 | 注意 |
|---|---|---|---|
| A / AAAA | IPv4 / IPv6 位址 | 名字直接給號碼 | 裸域只能用這類(或 Alias) |
| CNAME | 另一個名字 | 「請改查新名字」 | 不能用在裸域(Zone Apex) |
| Alias(Route 53 特有) | AWS 資源(ELB/CloudFront/S3…) | 像 A 紀錄但會自動跟著 AWS 資源的 IP 跑 | 裸域可用、查詢免費——考試首選 |
| NS | 權威伺服器 | 「這個網域的名冊放在哪」 | 託管到 Route 53 時要改這個 |
| MX | 郵件伺服器 | 「這個網域的信寄到哪」 | 只影響 Email,不影響網站 |
| 狀態碼 | 意思 | 誰的問題 | AWS 場景 |
|---|---|---|---|
| 200 OK | 成功 | 沒問題 | ALB 健康檢查判定「健康」的依據 |
| 301 / 302 | 永久 / 暫時轉導 | 不是問題,是指路 | ALB 可設定 80 → 443 轉導 |
| 403 Forbidden | 沒有權限 | 客戶端 | S3 沒開權限、WAF 擋下請求時常見 |
| 404 Not Found | 找不到資源 | 客戶端 | S3 物件不存在 |
| 429 Too Many Requests | 請求太頻繁被限流 | 客戶端 | API Gateway 節流(throttling)觸發 |
| 500 / 502 / 503 | 伺服器錯誤 / 閘道收到無效回應 / 暫時無法服務 | 伺服器端 | 後端掛了;ALB 後面沒有健康目標時回 502/503 |
點擊卡片翻面查看答案,共 10 張。