DNS系統基本是採樹狀階層式(hierarchy)的架構。網際網路上有十來個最上層的頂層root DNS servers,在這些系統中,記錄著所有最頂層( Top Level Domain,以下簡稱TLD ),TLD DNS servers的資料,經由這些最頂層負責的DNS servers,我們可以從root DNS servers一層一層,一路往下。找到各domain zone實際負責的(authoritative)DNS servers。(所謂的TLD,就像"tw."表臺灣,"cn."表中國大陸,...)
整個INTERNET上的電腦如此眾多,如何保證兩部電腦不會有相同的domain name/IP是一個很重要的問題。利用domain name space來避免上述問題,幾個重要的觀念如下:
將整個internet分成許多domain,每個domain下又細分為許多domain,然後這些細分的domain視實際需求又再細分成許多domain,一直循環下去。基本上每個domain內的mapping由一部主機負責管理。
剛才提到每個domain都可因實際需求再細分成許多sub domain。上層的domain可以將其分出的某個sub domain的domain name與IP mapping交由另一部機器管理,這個動作我們稱之為delegation(授權)。
在講到domain name <-> IP mapping,其實應該看成兩個命名空間: 一個是domain name -> IP,稱之為forward mapping,在這個命名空間中就是先分成前面提到的那些top domain,再細分sub domain,再細分...。比如說www.twnic.net.tw->210.17.9.228代表在負責twnic.net.tw這個sub domain的機器上,可以查到其mapping table上有一筆記錄是www->210.17.9.228。一個是IP->domain name稱為reverse mapping。在這個命名空間中,所有的IP組成一個叫作arpa.in-addr的top domain,然後再依IP層層細分...。比如說210.17.9.228->www.twnic.net.tw代表在負責9.17.210.in-addr.arpa (注意是反過來寫,因為top domain要在最後面)這個sub domain的機器上,可以查到其mapping table上有一筆記錄是228->www.twnic.net.tw
負責記錄forward/reverse mapping的機器會執行一個叫name server的軟體,透過這個軟體回應來自其它機器對domain name或IP的查詢。
主要名稱伺服器由它所在的主機上的檔案中取得管理地帶的資料。如果您的學校擁有自己的網域(Domain),則必須建立自己的DNS系統,來回答網路上對您學校中,所有與網際網路有關的電腦名稱與IP地址的轉換服務。
次要名稱伺服器是由其他管理這個地帶的名稱伺服器中取得地帶的資料。為了網路穩定度的考慮,通常你需要一部次要名稱伺服器,以備不時之需。
每個DNS都會將查詢過的Domain Name給cache起來,所以每個DNS都快取名稱伺服器的功能。硬碟中沒有該Domain的database 檔案。
我們除了能夠用slave來分擔master工作、減少網路流量之外,還可以透過另外一種DNS機制來減低網路流量的,那就是forwarder設定了。所謂的forwarder,就是當某一台DNS主機遇到非本機負責zone(slave zone也屬於本機負責的範圍)之查詢請求的時候,將不直接向root zone查詢而把請求轉交給指定的forwarder(一台或多台)主機代為查詢。
相當於是DNS server的client端,通常是以函式庫的方式被放在整套作業系統中,各類的應用程式經由呼叫這個resolver函式庫可以很容易地向DNS server進行查詢,得到所要的資料。