DNS分為Client和Server,Client扮演發問的角色,也就是問Server 一個Domain Name,而Server必須要回答此Domain Name的真正IP地址。而當地的DNS先會查自己的資料庫。如果自己的資料庫沒有,則會往該DNS上所設的的DNS尋問,依此得到答案之後,將收到的答案存起來,並回達客戶。真正DNS的運作:有兩種詢問方法,Recursive和Iterative兩種。前面是由DNS代理去問,問的方法是用Iterative方式,後者是由本機直接做Iterative式的詢問。
DNS用戶端向DNS Server的查詢模式,這種方式是將要查詢的封包送出去問,就等待正確名稱的正確回應,這種方式只處理回應回來的封包是否是正確回應或是說是找不到該名稱的錯誤訊息。問的方式是用Iterative的方式。
DNS Server間的查詢模式,由Client端或是DNS Server上所發出去問,這種方式送封包出去問,所回應回來的資料不一定是最後正確的名稱位置,但也不是如上所說的回應回來是錯誤訊息,也許是另外一台DNS的位址(當該台DNS沒有答案時,會傳回一台 "權威授權者"DNS的位址)。再由Client或DNS自己向" 權威授權者"DNS詢問。 一般說來,name resolver對local DNS server都是recursive query,而DNS server之間的 query多是iterative。大部份的DNS server都可以接受recursive和iterative兩種query方式,但是考量負載問題,root name server只接受iterative query。
下面讓我們看看DNS是怎樣運作的:
從這個過程我們可以看出,沒有任何一台DNS主機會包含所有域名的DNS資料,資料都是分散在全部的DNS伺服器中,而NIC只需知道各DNS伺服器位址就可以了。
讓我們用下圖看看查詢www.twnic.net.tw這台主機位址的過程 在這個例子中,www.twnic.net.tw對應資料,是由負責twnic.net.tw這個域名的DNS伺服器管理的。(在DNS術語中,我們稱一個域名為"zone",這個zone可以是您從NIC申請回來的域名,也可以是從該域名之下延伸出來的"sub-zone")。在這台DNS伺服器上面,必須有一個關於twnic.net.tw的檔案,而這檔案裡面必須有一筆關於www的記錄(任何主機都是以"記錄"來表示,稱為Resource Record)。這個記錄可以為一個IP位址,也可以以別名形式來對應一台主機名稱,但無論如何,所對應的主機名稱最終是要被一個IP位址所對應著就是了。