IT 基礎知識 ch02 DNS 與 HTTP:從網址到網頁
下一章→
CH 02 新手先修

DNS 與 HTTP:從網址到網頁

DNS 解析流程TTL 與快取紀錄類型HTTP 狀態碼CDN 原理

上一章的封包知道怎麼靠 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 為例):

  • ① 瀏覽器先問遞迴解析器(Recursive Resolver)——通常是電信公司提供的,或著名的 8.8.8.8(Google)。它是「幫你跑腿查號的服務台」。
  • ② 服務台先問根伺服器(Root):「.com 的名冊在誰那?」
  • ③ 再問 .com 頂級網域(TLD)伺服器:「example.com 的名冊在誰那?」
  • ④ 最後問 example.com 的權威伺服器(Authoritative):「www.example.com 的 IP 是多少?」拿到答案(如 93.184.216.34)回傳給瀏覽器。
💡 AWS 對應:Route 53 就是「權威伺服器」的角色——你把網域託管在 Route 53,就是把「這個網域的名冊」放在 AWS 手上,由它負責回答全世界的查詢。名字的由來:DNS 用的 Port 就是 53。
  • 如果每開一個網頁都要跑完上面四步,全世界的根伺服器早就掛了。所以查過的答案會被快取(cache)起來:瀏覽器記一份、作業系統記一份、服務台(解析器)也記一份。
  • TTL(Time To Live):每筆 DNS 紀錄都帶一個「保存期限」,單位是秒。TTL=300 表示「這個答案 5 分鐘內可以直接用,不用再來問我」。
  • 權衡:TTL 長 → 查詢少、省錢省力,但改 IP 之後舊答案會殘留很久;TTL 短 → 改動快速生效,但查詢量大增。
  • 實務招式:要搬家(換 IP)之前,先把 TTL 調短(如 60 秒),等全世界的快取都過期後再切換,切完穩定了再調回長 TTL。
⭐ 這解釋了一個常見疑惑:「我明明改了 DNS,為什麼有人連到新站、有人還連到舊站?」——因為各地快取的過期時間不同。等最長 TTL 過去就會一致。

電話簿裡不只一種紀錄。常見類型:

  • A 紀錄:名字 → IPv4 位址(example.com → 93.184.216.34)。最基本的一種。AAAA 是 IPv6 版。
  • CNAME 紀錄:名字 → 另一個名字(www.example.com → myapp.herokuapp.com),像「此人已搬家,請改查新名字」。查的人要再查一次新名字才拿得到 IP。
  • NS 紀錄:指定「這個網域的名冊放在哪些權威伺服器」。
  • MX 紀錄:指定這個網域的郵件要寄到哪台郵件伺服器。

CNAME 有一條重要規定:不能用在「裸域(Zone Apex)」上。裸域就是不帶 www 的根網域(example.com)——DNS 規範要求裸域必須直接給出 IP(A 紀錄),不能「請改查別人」。

  • 麻煩來了:AWS 的 ELB、CloudFront 給你的都是「名字」(如 xxx.elb.amazonaws.com),背後 IP 會變動,你沒辦法寫死 A 紀錄,裸域又不能用 CNAME——卡死。
  • Route 53 的 Alias 紀錄就是 AWS 的特規解法:對外看起來像 A 紀錄(所以裸域可以用),內部卻能指向 ELB/CloudFront/S3 這些 AWS 資源的名字,IP 變動由 AWS 自動追蹤。而且查詢免費。
⭐ 考試口訣:裸域要指向 AWS 資源 → 一定是 Alias(CNAME 在 Zone Apex 是非法的)。指向 AWS 資源時 Alias 幾乎永遠是正解:免費、支援裸域、自動跟 IP。

拿到 IP、建好 TCP 連線(ch01)之後,瀏覽器終於開始「講正事」——講的語言就是 HTTP(HyperText Transfer Protocol)。它是純文字的一問一答:

  • 請求(Request):我要做什麼+對哪個資源。動詞(Method)最常見四個:GET(給我看)、POST(我要新增)、PUT(我要更新)、DELETE(幫我刪除)。
  • 回應(Response):伺服器回覆內容,開頭一定帶一個三位數狀態碼,第一位數字就是分類:
    ・2xx = 成功:200 OK 最常見。
    ・3xx = 轉導:301 永久搬家、302 暫時搬家(瀏覽器會自動再連新網址)。
    ・4xx = 你的問題:403 沒權限、404 找不到、429 請求太頻繁。
    ・5xx = 伺服器的問題:500 程式炸了、502 閘道收到無效回應、503 服務暫時無法使用。
  • HTTPS = HTTP + 加密外衣(TLS)。內容一樣,只是傳輸過程被加密保護,別人偷看不到(原理見基礎篇 ch03)。
💡 AWS 對應:ALB 的健康檢查就是定期對你的機器發 HTTP 請求,「回 200 = 健康、逾時或 5xx = 踢出服務」。監控警報也常以「5xx 比率」判斷服務出事——4xx 是客戶端的錯,5xx 才是你的錯。

ch01 說過延遲取決於距離:伺服器在美國,台灣使用者每個請求都要橫跨太平洋。CDN(Content Delivery Network)的解法很直白:在全世界蓋幾百個小倉庫(邊緣節點),把內容先鋪過去,讓使用者就近取貨——像網購從「美國直郵」變「巷口超商取貨」。

  • Cache Hit(命中):邊緣節點有這個檔案 → 直接給你,超快。
  • Cache Miss(未命中):節點沒有 → 回頭向源站(Origin,你真正的伺服器)要一份,給你的同時自己留一份,下一個人就命中了。
  • 最適合快取的是靜態內容:圖片、影片、CSS/JS——內容不因人而異。動態內容(每個人不同的 API 回應)快取效益低,但走 CDN 仍可受益於「更快進入骨幹網路」。
  • 快取也有 TTL:源站更新了檔案,邊緣節點的舊檔要等過期才更新(或主動下「作廢令」清快取)。
⭐ AWS 對應:CloudFront 就是 AWS 的 CDN,邊緣節點叫 Edge Location,「作廢令」叫 Invalidation。考題「全球使用者、靜態內容、加速/降低源站負載」→ CloudFront(詳見 AWS ch07)。
DNS 紀錄類型速查
類型指向什麼白話注意
A / AAAAIPv4 / IPv6 位址名字直接給號碼裸域只能用這類(或 Alias)
CNAME另一個名字「請改查新名字」不能用在裸域(Zone Apex)
Alias(Route 53 特有)AWS 資源(ELB/CloudFront/S3…)像 A 紀錄但會自動跟著 AWS 資源的 IP 跑裸域可用、查詢免費——考試首選
NS權威伺服器「這個網域的名冊放在哪」託管到 Route 53 時要改這個
MX郵件伺服器「這個網域的信寄到哪」只影響 Email,不影響網站
HTTP 狀態碼速查
狀態碼意思誰的問題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

練習題 點選選項查看解析

0 / 7
01 / 7
使用者在瀏覽器輸入 www.example.com。瀏覽器在「開始傳輸網頁資料」之前,第一件要做的事是什麼?
A 直接對 www.example.com 發送 HTTP 請求
B 透過 DNS 把 www.example.com 解析成 IP 位址
C 先下載網站的憑證
D 對伺服器進行健康檢查
解析
封包只認 IP 不認名字(ch01),所以第一步一定是 DNS 解析:問遞迴解析器 → 根 → TLD → 權威伺服器,拿到 IP 之後才能建立 TCP 連線、發送 HTTP 請求。這也是為什麼 DNS 掛掉時「網路明明是通的」卻什麼網站都開不了。
02 / 7
你把網站搬到新伺服器並更新了 DNS 的 A 紀錄,但一小時後仍有部分使用者連到舊伺服器。最可能的原因是?
A DNS 紀錄設定錯誤
B 舊伺服器還在運作
C 各地的 DNS 快取尚未過期(TTL 還沒走完),仍在回舊答案
D 新伺服器的防火牆擋住了流量
解析
DNS 答案會被瀏覽器、作業系統、遞迴解析器層層快取,各自依 TTL 過期。改紀錄後,快取還沒過期的使用者仍拿到舊 IP。這就是為什麼搬家前的標準動作是「先調短 TTL、等舊快取過期、再切換」。
03 / 7
你想讓裸域 example.com(不帶 www)指向 AWS 的 ALB(ALB 只提供 DNS 名稱 xxx.elb.amazonaws.com,IP 會變動)。在 Route 53 該用什麼紀錄?
A A 紀錄,填入 ALB 目前的 IP
B CNAME 紀錄,指向 xxx.elb.amazonaws.com
C Alias 紀錄,指向該 ALB
D MX 紀錄,指向 xxx.elb.amazonaws.com
解析
兩個選項都被規則卡死:A 紀錄寫死 IP,但 ALB 的 IP 會變;CNAME 不能用在裸域(Zone Apex 的 DNS 規範限制)。Alias 是 Route 53 的特規:對外像 A 紀錄(裸域可用),內部自動追蹤 AWS 資源的 IP 變動,查詢還免費——這是 SAA 的高頻考點。
04 / 7
ALB 的健康檢查連續收到後端機器回應 HTTP 503。這代表什麼?ALB 會怎麼做?
A 503 是客戶端錯誤,ALB 不理會
B 503 是伺服器端錯誤(暫時無法服務),ALB 會把這台機器標記為不健康、不再送流量給它
C 503 表示轉導,ALB 會跟著新網址走
D 503 表示成功,一切正常
解析
狀態碼第一位數字是分類:5xx 都是伺服器端問題(503 = 服務暫時無法使用)。健康檢查期望收到 200,收到 5xx 或逾時就把該目標標為 unhealthy 並停止轉發流量,等它恢復健康再加回來。分辨 4xx(客戶端的錯)與 5xx(伺服器的錯)是看監控和考題的基本功。
05 / 7
一個提供大量圖片與影片的網站,全球使用者都抱怨載入慢,而且源站伺服器頻寬快被吃滿。哪個方案能同時解決「遠端使用者延遲高」和「源站負載重」?
A 把伺服器升級成更大的機型
B 使用 CDN(如 CloudFront)把靜態內容快取到全球邊緣節點
C 把 TTL 調短讓 DNS 更新更快
D 改用 UDP 傳輸圖片
解析
CDN 的兩個效果正好對應兩個痛點:① 內容鋪到離使用者近的邊緣節點 → 距離縮短、延遲下降;② 大部分請求在邊緣就被 cache hit 消化掉 → 源站只需處理 cache miss,負載大減。升級機型解決不了「距離」問題;TTL 是 DNS 的事,與內容傳輸無關。
06 / 7
CloudFront 邊緣節點收到一個請求,但快取裡沒有這個檔案(Cache Miss)。接下來會發生什麼事?
A 直接回 404 給使用者
B 回頭向源站(Origin)取得檔案,回傳給使用者的同時在邊緣留一份快取
C 把請求轉給另一個邊緣節點
D 要求使用者直接連源站
解析
Cache Miss 的標準流程:邊緣節點代替使用者向源站要一份,拿到後回傳給使用者、自己也留一份(依 TTL 保存),之後同一個檔案的請求就會 Cache Hit。所以「第一個使用者稍慢、之後的使用者都快」,而且源站只被打了一次。
07 / 7
下列關於 CNAME 的敘述,哪一個正確?
A CNAME 把名字指向一個 IP 位址
B CNAME 把名字指向另一個名字,且不能設定在裸域(Zone Apex)上
C CNAME 是 Route 53 專有的紀錄類型
D CNAME 用來指定郵件伺服器
解析
CNAME = 「別名」,指向另一個名字(查的人要再解析一次),DNS 規範禁止它出現在裸域上——這正是 Route 53 發明 Alias 的原因。指向 IP 的是 A 紀錄;指定郵件伺服器的是 MX;Route 53 專有的是 Alias 而非 CNAME。

點擊卡片翻面查看答案,共 10 張。

QUESTION
DNS 一句話是什麼?查詢流程的四個角色?
點擊翻面
ANSWER
把「名字」翻譯成「IP」的電話簿
流程:遞迴解析器(跑腿)→ 根 → TLD(.com)→ 權威伺服器(答案在這)
Route 53 = 權威伺服器的角色
點擊翻回
QUESTION
TTL 是什麼?調長調短的權衡?
點擊翻面
ANSWER
DNS 答案的保存期限(秒)
長:查詢少但改動生效慢
短:生效快但查詢量大
搬家前先調短 TTL 是標準動作
點擊翻回
QUESTION
A、CNAME、NS、MX 各指向什麼?
點擊翻面
ANSWER
A = IPv4 位址(AAAA = IPv6)
CNAME = 另一個名字
NS = 這個網域的權威伺服器
MX = 郵件伺服器
點擊翻回
QUESTION
為什麼裸域(example.com)不能用 CNAME?那要用什麼?
點擊翻面
ANSWER
DNS 規範:Zone Apex 必須直接給 IP,不能「請改查別人」
指向 AWS 資源時用 Route 53 的 Alias
(像 A 紀錄、自動跟 IP、免費)
點擊翻回
QUESTION
HTTP 狀態碼四大類?
點擊翻面
ANSWER
2xx = 成功(200)
3xx = 轉導(301 永久 / 302 暫時)
4xx = 客戶端的錯(403 沒權限、404 找不到、429 被限流)
5xx = 伺服器的錯(500 炸了、502/503 後端有問題)
點擊翻回
QUESTION
ALB 健康檢查怎麼判斷機器健不健康?
點擊翻面
ANSWER
定期發 HTTP 請求
回 200 → 健康
逾時或 5xx → 標記 unhealthy、停止送流量
點擊翻回
QUESTION
CDN 的類比與兩大效果?
點擊翻面
ANSWER
把貨先鋪到巷口超商,就近取貨
① 距離縮短 → 延遲下降
② 邊緣消化大部分請求 → 源站負載大減
AWS = CloudFront(節點叫 Edge Location)
點擊翻回
QUESTION
Cache Hit / Cache Miss / Origin 各是什麼?
點擊翻面
ANSWER
Hit:邊緣節點有快取,直接回,超快
Miss:沒有 → 向源站(Origin,你真正的伺服器)要一份並留存
清快取的動作在 CloudFront 叫 Invalidation
點擊翻回
QUESTION
HTTPS 和 HTTP 的關係?
點擊翻面
ANSWER
HTTPS = HTTP + TLS 加密外衣
內容一樣,但傳輸過程加密、無法被偷看
原理(憑證、握手)見基礎篇 ch03
點擊翻回
QUESTION
GET / POST / PUT / DELETE 各代表什麼?
點擊翻面
ANSWER
GET = 給我看(讀取)
POST = 我要新增
PUT = 我要更新
DELETE = 幫我刪除
(這組動詞在基礎篇 ch08 的 REST 會再登場)
點擊翻回