发新话题
打印

DNS 的查詢過程

本主题由 unicorn23 于 24-1-2008 15:42 设置高亮

DNS 的查詢過程

本站常說的 DNS 是什麼 ?

我們要談一談,那麼 DNS 的 (1)架構是怎樣? (2)查詢原理是怎樣?總是要先知道架構才能知道如何查詢的吶!所以底下我們先來介紹一下整體的架構。
DNS 的架構:



上面就是一個簡單的 DNS 階層架構囉,最上方一定是 . (小數點) 這個 root 的 DNS 主機,他底下管理的就只有 com, edu, gov, mil, org 與以國家為分類的第二層的主機名稱了!例如台灣地區最上層的領域名稱是以 .tw 為開頭,管理這個領域名稱的這部機器的 IP 是在台灣,但是他的記錄則是記錄在 . (root)那部機器裡面的!還有其他的國家的最上層如 .cn 指的是大陸, .de 指的是德國一樣!那麼每個國家之下記錄的主要的下層有哪些領域呢? 呵呵!主要就是有這六大類:

名稱 代表意義
com 公司、行號、企業
org 組織、機構
edu 教育單位
gov  政府單位  
net  網路、通訊  
mil  軍事單位  

其實最早之前在 . (root)之下只有這六大類的 domain name ,但是網路成長的速度太快了,因此後來又多出這些以國碼來分的 domain name ,如此一來,在該國家之內,只要向該國家申請 domain name 即可,不需要再到最上層去申請囉!也因此,在這些國碼之下,還是有這六大類的 domain name 為主的哩!當然啦,在目前,由於網際網路持續的發燒,說實在的 domain name 實在是有點不太夠用,所以又有相當多的領域名稱被設計出來,例如目前台灣 ISP 提供的 .idv.tw 的個人網站啦!

好了,再強調一次, DNS 系統是以所謂的階層式的管理,所以,請注意喔!那個 .tw 只記錄底下那一層的這六個主要的 domain 的主機而已!至於例如 edu.tw 底下還有個 ncku.edu.tw 這部機器,那就直接授權交給 edu.tw 那部機器去管理了!也就是說『每個上一層的 DNS 主機,所記錄的資訊,其實只有其下一層的主機名稱而已!』至於再下一層,則直接『授權』給下層的某部主機來管理囉!呵呵!所以您就應該會知道 DNS 到底是如何管理的吧! ^_^

會這樣設定的原因不是沒有道理的! 這樣設計的好處就是:每部機器管理的只有下一層的 hostname 對應 IP 而已,所以減少了管理上的困擾!而下層 Client 端如果有問題,只要詢問上一層的 DNS server 即可!不需要跨越上層,除錯上面也會比較簡單呢!

DNS 的搜尋流程:
剛剛說過 DNS 是以類似『樹狀目錄』 的型態來進行名稱的管理的!所以每一部 DNS 主機都『僅管理下一層 DNS 主機的名稱轉譯』而已, 至於下層的下層,則『授權』給下層的 DNS 主機來管理啦!這樣說好像很繞口,好吧!我們就以下圖來說一說原理囉:




首先,當您在瀏覽器的網址列輸入 http://aerosol.ev.ncku.edu.tw 時,您的電腦就會依據相關設定( 在 Linux 底下就是利用 /etc/resolv.conf 這個檔案 ) 所提供的 DNS 的 IP 去進行連線查詢,好了,由於目前最常見的 DNS 主機就屬 Hinet 的 168.95.1.1 這個 DNS 了,所以我們就拿他來做例子吧!嗯!這個時候, hinet 的這部主機會這樣工作:


先查看本身有沒有紀錄:
剛剛說過啦,由於 DNS 是層階式的架構,任何一部 DNS 都僅記錄下一層裡面的主機名稱對應的 IP 而已,由於 hinet 並非學術網路裡面的主機,所以自然也就沒有辦法直接提供給 client 端關於 aerosol.ev.ncku.edu.tw 這部機器的 IP 了,所以啦,一般而言,這個時候 168.95.1.1 就會向最頂層,也就是 . (root) 的主機查詢 .tw 這部機器的位址;

向最頂層 ( root )查詢:
由於 168.95.1.1 沒有紀錄我們主機的 IP ,這個時候他就會向『最頂層』的 . (root) 這部主機來查詢 . (root) 的下一層,也就是 .tw 這部機器的資料了!這個時候, . (root) 就會告訴 168.95.1.1 說『嘿!您要查 .tw 這個網域的管理者呀!?喝!我這裡有  .tw 這個網域的管理的主機之 IP 資訊,您可以直接去找他!』;

向第二層查詢:
168.95.1.1 接著又到 .tw 去查詢,而該部機器管理的又僅有 .edu.tw, .com.tw, gov.tw... 那幾部主機,經過比對後發現我們要的是 .edu.tw 的網域,所以這個時候 .tw 又告訴 168.95.1.1 說:『您要去管理 .edu.tw 這個網域的主機那裡查詢,我有他的 IP !』;

向下層持續查詢:
好了,一步一步下來, .edu.tw 可以查到管理 .ncku.edu.tw 的主機 IP ; .ncku.edu.tw 可以查到管理 .ev.ncku.edu.tw 的主機 IP ,而最後我們 aerosol.ev.ncku.edu.tw 就可在管理 .ev.ncku.edu.tw 網域的那部主機的設定紀錄當中查詢到啦!

記錄暫存記憶體:
查到了 IP 之後,這部 168.95.1.1 的 DNS 機器總不會在下次有人查詢 aerosol.ev.ncku.edu.tw 的時候再跑一次這樣的流程吧!粉遠粉累的吶!而且也很耗系統的資源與網路的頻寬,所以呢, 168.95.1.1 這個 DNS 很聰明的會先記錄一份 aerosol.ev.ncku.edu.tw 對應 IP 的資訊在自己的暫存記憶體當中,以方便下一次又有人對同一個主機名稱的要求之查詢!最後則將結果回報給 client 端!當然啦,那個記憶在 cache 當中的資料,其實是有時間性的,當過了 DNS 設定記憶的時間(通常可能是 24 小時),那麼該記錄就會被釋放喔!

由這樣的分層負責您發現了什麼?嗯!那就是:


當一個『合法』的 DNS 主機裡面的設定修改了之後,來自世界各地任何一個 DNS 的要求,都會正確無誤的顯示正確的主機名稱對應 IP 的資訊,因為他們會一層一層的尋找下來,所以,要找您的主機名稱對應的 IP 就一定得要透過您的上層 DNS 主機的紀錄才行!所以只要您的主機名字是經過上層『合法的 DNS』主機的設定的,那麼就可以在 Internet 上面被查詢到啦!呵呵!很簡單維護吧,機動性也很高。

在主機的暫存記憶體記錄當中,由於是有時間性的,
所以當您的主機名稱在 DNS 當中被修改了之後,但是由於之前的舊資訊還記憶在其他的 DNS 主機的暫存記憶體裡面,所以啦,可能在別人以非您的 DNS 主機來查詢您的主機名稱時,就會得到先前的舊資訊,這個時間差不多可能是 10 分鐘到 2 天左右,這也是為什麼我們常說當您修改了一個 domain name 之後,可能要 2 ~ 3 天後才能全面的啟用的緣故啦!

TOP

或者这里已经变成电脑课室了。。您太专业了。。您真内行
人生有两件事情要做的,
一件是该做的,
一件是想做的.

TOP

回复 #2 小康 的帖子

不敢当,90%是copy paste的。。。

TOP

发新话题