DNS 解析流程 | Resolving Domain Requests | Advance Web Development Quiz | #3
此文章是 FrontendMaster 課程的筆記
問題:連連看,把數字與英文字母對應起來
Browser sends request to [A]
[A] queries [B]
[B] responds with [C] IP address
[A] queries [C]
[C] responds with [D] IP address
[A] queries [D]
[D] responds with website's [E]
[1] Recursive DNS Resolver
[2] Root Name Server
[3] IP Address
[4] Top Level Domain Name Server
[5] Authoritative Name Server瀏覽器是怎麼知道網站的 IP 位置的?
當使用者輸入網址後,瀏覽器只知道網域的名稱,例如:www.google.com,這個時候瀏覽器必須透過一系列的請求獲取真實的 IP 位址,才能夠開始發送 HTTP 請求。
名詞解釋
- IP Address:連線到網路的裝置都會有自己的一個特殊的 IP 位址
- Recursive DNS Resolver (遞迴 DNS 解析器):DNS 遞迴解析器是一種 DNS 伺服器,接受遞迴查詢並透過發出必要的請求來處理回應。接收由使用者端發送的查詢,並把查詢結果回傳。
- Root Name Server (根名稱伺服器):是把可讀的名稱轉譯成 IP 位址的第一步。世界上只有 13 個 IP 位址提供根伺服器,不過事實上每個 IP 位址都有多個伺服器,一方面降低發生意外時無法使用,另一方面是可以分配給不同鄰近區域的使用者來提升速度
- Top Level Domain Name server (TLD Name server、頂層網域名稱伺服器):這是搜尋特定 IP 位址的下一步,此伺服器維護共用通用網域副檔名的所有網域名稱的資訊。例如
.com,此伺服器維護所有以.com為結尾的網站資訊 - Authoritative Name Server (權威名稱伺服器):這通常是遞迴 DNS 解析查詢的最後一步。其包含網域名稱的資訊,例如:
google.com - ISP(Internet Service Provider、網際網路服務提供商):提供使用者上網服務的公司,例如中華電信、遠傳電信、台灣大哥大等。
瀏覽器發起請求前是怎麼獲取該網站的 IP 位址的?
- 瀏覽器一開始會把查詢送給「遞迴 DNS 解析器」,這通常是 ISP 提供的 DNS,或是像 Google DNS、Cloudflare DNS 這種公共 DNS。
- 遞迴解析器如果沒在快取裡找到,就會去問「根名稱伺服器」。
- 根名稱伺服器不會直接給你網站 IP,而是回覆「頂級網域名稱伺服器」的 IP,例如負責
.com、.net、.nl等等的那一層。 - 遞迴解析器再去查詢對應的 TLD 名稱伺服器,TLD 伺服器會回傳「權威名稱伺服器」的 IP,也就是負責某個網域(像
website.com)的那台 DNS 伺服器。 - 遞迴解析器最後再去問這台權威名稱伺服器,權威伺服器裡面有你的網域實際的 DNS 記錄(
A record、AAAA等),會回傳網站真正的 IP 位址。 - 遞迴解析器把這個 IP 回傳給瀏覽器,瀏覽器就可以根據這個 IP 去連線該 Web server,開始建立 TCP 連線、送出 HTTP 請求,取得資源。
快取與 TTL
遞迴 DNS 解析器通常會做快取:對於常訪問的網站,不需要每次都從 Root → TLD → Authoritative 走完一輪,而是根據 DNS 記錄上的 TTL(Time To Live)決定快取多久,TTL 到期才會再重新查詢。
答案:
Browser sends request to [A]
[A] queries [B]
[B] responds with [C] IP address
[A] queries [C]
[C] responds with [D] IP address
[A] queries [D]
[D] responds with website's [E]
[A] - [1] Recursive DNS Resolver
[B] - [2] Root Name Server
[E] - [3] IP Address
[C] - [4] Top Level Domain Name Server
[D] - [5] Authoritative Name Server