DNS 查詢流程概念筆記

簡介DNS查詢的過程與相關名詞之間的關係

Emmie Lin
Mar 14, 2020

前言

總覺得自己對 DNS 的原理似懂非懂,對某些相關名詞如:Domain Name(域名/網域)、Name Server 等等叫我解釋也很難講出個所以然,於是在狂煩同事(感謝被煩的 MIS 達人同事)與自行整理消化後,覺得不記一下好像有什麼事沒做完的感覺,才有了這篇文章XDD,如果有大大(真的有人會看嗎?)看完發現有什麼錯誤漏洞,可以的話再煩請指正我~非常感謝~

DNS 、IP 和網域的關係

首先,我們普遍所熟知的「網域」,也就是網址裡位於Protocol(https or http)之後那串東西(yahoo.com.tw)

https://yahoo.com.tw

而這串網域,理所當然會指向某個(也可能是多個,但先不討論)IP。當我們在瀏覽器輸入這串網址時,等同發送 http 請求到某台網頁伺服器(通常是提供網頁的電腦)並和它索取資料(網頁)。

會需要網域的原因其實就是因為 IP 對人類來說太難記了,但要連到網路上的某台遠端伺服器又一定得透過 IP 才能找到它,所以才有人想出這套 DNS 系統,讓網域和 IP 產生對應關係方便我們上網。

那問題來了,為什麼在瀏覽器上輸入這串網址時,瀏覽器好像就會自動幫我找到我要連上的那台伺服器並能夠順利瀏覽網頁?

其實這中間就是經過了 DNS Server(local DNS,一般會是由提供我們上網服務的網路供應商(ISP)如 Hinet 在架設維護) 幫我們找到該網域的 IP 後再回傳該 IP 給瀏覽器,我們才得以順利連線並看到網頁。

DNS Server 如何解析網域

終於進入正題,要了解解析網域的流程,必須先知道 DNS 這套系統的架構,以及 Name Server 上紀錄(Record)所代表的意思 (待會會解釋什麼是Name Server)

DNS 階層式架構

DNS 是採用階層式的架構去管理每個域名,如 yahoo.com.tw 這個域名,可以拆解成 .(root) 根域名 、.tw 頂級域名、 .com.tw 次級域名。而每層域名都是由上一層的域名所管理,同時也只負責管理其下一層的域名。

例如:根域名負責管理所有的頂級域名, 而.tw 這個頂級域名則管理所有 .{hostname}.tw 次級域名。

Name Server 與紀錄類型

而所謂的「管理」,又是什麼意思呢?

看得出來「管理」是個動詞,有動詞就一定有個動作(講幹話?),也就代表一定要有個人負責做這件事(在電腦的世界裡那就是工具人 — 電腦,幫電腦默哀三秒),而這台電腦就是所謂的 Name Server(DNS Server),他做的事就是負責記錄下一層域名的資料,並且當有人(電腦)問他某個域名的資料時,他也要把資料給對方,這些資料就是所謂的記錄(Record)包含了許多東西,不過我們可以先知道這幾個就好:

#域名:在該域名之下的那一層所有子域名都會在記錄當中

#記錄類型:(待會會提到的)

  • A(Address):將網域名稱對應到IPv4的32位元位址
  • NS:Name Server 主機名稱,用網域名稱表示

Name Server 與網域的關係

所以其實域名就單純只是個名稱、記號,端看在該 Name Server 上如何設定特定域名的對應,不同的記錄類型代表不同的對應意義,例如:新增一筆 A記錄將某個域名指向某個 IP、 NS 記錄將某個域名指向某台 Name Server 主機等等。但要注意的是,在像是 . 、 .tw 、 .com.tw 這種由特定機構所管理的域名(的Name Server)都只會記錄其下一層的域名所對應的Name Server ,而不會有A類型的記錄,所以你不可能期待 .tw 會對應到某個 IP位址(因為他只會告訴你.tw的 Name Server在哪)。

理解了上面各個名詞與運作模式,查詢的流程直接看圖應該最清楚:

DNS 查詢流程圖

--

--