2007年12月24日 星期一

DNS運作原理

DNS運作原理
DNS分為Client和Server,Client扮演發問的角色,也就是問 Server 一個Domain Name,而Server必須要回答此Domain Name的真正IP地址,DNS是怎麼來作名稱解析的?


DNS的工作原理
DNS分為Client和Server,Client扮演發問的角色,也就是問Server一個Domain Name,而Server必須要回答此Domain Name的真正IP地址。而當地的DNS先會查自己的資料庫。如果自己的資料庫沒有,則會往該DNS上所設的的DNS詢問,依此得到答案之後,將收到的答案存起來,並回答客戶。

DNS伺服器會根據不同的授權區(Zone),記錄所屬該網域下的各名稱資料,這個資料包括網域下的次網域名稱及主機名稱。

在每一個名稱伺服器中都有一個快取暫存區(Cache),這個快取暫存區的主要目的是將該名稱伺服器所查詢出來的名稱及相對的IP位址記錄在快取暫存區中,這樣當下一次還有另外一個用戶端到次伺服器上去查詢相同的名稱 時,伺服器就不用在到別台主機上去尋找,而直接可以從暫存區中找到該筆名稱記錄資料,傳回給用戶端,加速用戶端對名稱查詢的速度。例如:

當DNS用戶端向指定的DNS伺服器查詢網際網路上的某一台主機名稱
DNS伺服器會在該資料庫中找尋用戶所指定的名稱
如果沒有,該伺服器會先在自己的快取暫存區中查詢有無該筆紀錄,如果找到該筆名稱記錄後,會從DNS伺服器直接將所對應到的IP位址傳回給用戶端
如果名稱伺服器在資料記錄查不到且快取暫存區中也沒有時,伺服器首先會才會向別的名稱伺服器查詢所要的名稱。例如:
DNS用戶端向指定的DNS伺服器查詢網際網路上某台主機名稱
當DNS伺服器在該資料記錄找不到用戶所指定的名稱時,會轉向該伺服器的快取暫存區找尋是否有該資料
當快取暫存區也找不到時,會向最接近的名稱伺服器去要求幫忙找尋該名稱的IP位址
在另一台伺服器上也有相同的動作的查詢,當查詢到後會回覆原本要求查詢的伺服器
該DNS伺服器在接收到另一台DNS伺服器查詢的結果後,先將所查詢到的主機名稱及對應IP位址記錄到快取暫存區中
最後在將所查詢到的結果回覆給用戶端

範例
我們舉例說明,假設我們要查詢網際網路上的一個名稱為www.seed.net.tw,從此名稱我們知道此部主機在台灣TW,爾且要找的組織名稱seed.net.tw此網域下的www主機,以下為名稱解析過程的每一步驟。

《Step 1》在DNS的用戶端(Reslover)鍵入查詢主機的指令,如:

c:\ping www.seed.net.tw
pinging www.seed.net.tw 【192.72.80.36】with 32bytes of data
reply from 192.72.80.36 bytes time <10ms ttl 253

《Step 2》而被指定的DNS伺服器先行查詢是否屬於該網域下的主機名稱,如果查出改主機名稱並不屬於該網域範圍,之後會再查詢快取暫存區的紀錄資料,查是否有此機名稱。

《Step 3》查詢後發現暫存區中沒有此紀錄資料,會取得一台根網域的其中一台伺服器,發出說要找www.seed.net.tw的Request。

《Step 4》在根網域中,向Root Name Server詢問,Root Name Server記錄了各Top Domain分別是由哪些DNS Server負責,所以他會回應最接近的Name Server為控制TW網域的DNS伺服主機。

《Step 5》Root Name Server已告訴Local DNS Server哪部Name Server負責.tw這個Domain,然後Local DNS再向負責發出找尋www.seed.net.tw的名稱Request。

《Step 6》在.tw這個網域中,被指定的DNS伺服器在本機上沒有找到此名稱的的紀錄,所以會回應原本發出查詢要求的DNS伺服器說最近的伺服器在哪裡?他會回應最近的主機為控制net.tw網域的DNS伺服主機。

《Step 7》原本被查詢的DNS伺服器主機,收到繼續查詢的IP位置後,會再向net.tw的網域的DNS Server發出尋找www.seed.net.tw名稱搜尋的要求。

《Step 8》net.tw的網域中,被指定的DNS Server在本機上沒有找到此名稱的記錄,所以會回覆查詢要求的DNS Server告訴他最接近的伺服器在哪裡?他就回應最接近為控制seed.net.tw的網域的DNS主機。

《Step 9》原本被查詢的DNS Server,在接收到應繼續查詢的位置,在向seed.net.tw網域的DNS Server發出尋找www.seed.net.tw的要求,最後會在seed.net.tw的網域的DNS Server找到www.seed.net.tw此主機的IP。

《Step 10》所以原本發出查詢要求的DNS伺服器,再接收到查詢結果的IP位置後,回應回給原查詢名稱的DNS用戶端。


兩種真正DNS的查詢模式
有兩種詢問原理,分為Recursive和Interactive兩種。前者是由DNS代理去問,問的方法是用Interactive方式,後者是由本機直接做Interactive式的詢問。由上例可以看出,我們一般查詢名稱的過程中,實際上這兩種查詢模式都是交互存在著的。

遞迴式(Recursive):DNS用戶端向DNS Server的查詢模式,這種方式是將要查詢的封包送出去問,就等待正確名稱的正確回應,這種方式只處理回應回來的封包是否是正確回應或是說是找不到該名稱的錯誤訊息。
交談式(Interactive):DNS Server間的查詢模式,由Client端或是DNS Server上所發出去問,這種方式送封包出去問,所回應回來的資料不一定是最後正確的名稱位置,但也不是如上所說的回應回來是錯誤訊息,他回應回來告訴你最接近的IP位置,然後再到此最接近的IP上去尋找所要解析的名稱,反覆動作直到找到正確位置。

沒有留言: