什麼是 DNS ? 它是如何運作的 ?

img

什麼是DNS ?

DNS 全名 Domain Name System 是一種將 IP 地址轉換為人為可讀域名的全球系統。比如說,當用戶嘗試訪問 hanktsai.com 時,他們的 Web 瀏覽器或應用程序會對 DNS 伺服器執行 DNS 查詢,DNS 服務器獲取主機名並將其解析為 Web 瀏覽器可連接的數字 IP 地址,再返回給用戶供瀏覽器使用。


DNS 類型

DNS 系統中有二種類型的查詢方式:

一、 遞迴查詢 - Recursive Query

通常用於用戶端與 DNS 之間的查詢方式,用戶發出一個 DNS 詢問給 DNS 伺服器,如果 DNS 伺服器知道答案,就直接返回 ; 如果不知道,則代替用戶去查詢,然後再返回給用戶。最後返回給用戶端只有答案或找不到,這兩種。

二、 迭代查詢 - Iterative Query

通常用於 DNS 與 DNS 之間的查詢方式,用戶或 DNS 發出查詢請求,如果 DNS 伺服器知道答案,則返回答案 ; 如果不知道,則返回一個 referral ( 最接近查詢域名的另一個權威 DNS 伺服器 ) ,當發起查詢的 DNS 伺服器接收到這 referral ,會依封包內所夾帶的 DNS 伺服器,再去查詢,直到找到答案。


DNS 如何運作 ?

  1. 首先我們開啟瀏覽器輸入http://www.google.com

img

  1. 這時本地主機會去先檢查兩個地方,查看是否有 Record 紀錄

img

  • cache DNS records

  • hosts 檔案

  1. 如果上面兩個地方都找不到紀錄,則本機會跑去問 local DNS, local DNS 是指本機主機所指定的查詢 DNS 伺服器。

img

  1. 接下來,如果 local DNS 伺服器有答案,則返回答案,沒有則代替用戶去查詢,這種查詢方式就是遞迴查詢 ( Recursive Query )

img

  1. 假如 local DNS 伺服器沒有答案,則 local DNS 會開始向 . 詢問,也就是 root domain server。

img

  1. 然而 root domain server 沒有 www.google.com 這筆 record,但它知道 .com 的位置,所以它返回一個 referral 給 local DNS。

img

  1. local DNS 伺服器收到 referral 後,再往 referral 內指定的 .com 伺服器去做查詢

img

  1. .com 伺服器,發現它沒有 www.google.com 這筆 record,但它知道 .google 的位置,則返回 referral 給 local DNS。

img

  1. 最後,local DNS 伺服器收到 referral 後,再往 .google 伺服器查詢

img

  1. 終於在google伺服器查到了 www.google.com 的位置,並返回給 local DNS。

img

  1. local DNS 接收到答案,再返回 IP 位置給用戶端,並保存在自己的快取 ( Cache )。

img




留言