DNS服務器之理論基礎

一、什么是DNS

    DNS全稱為Domain Name System,即域名系統,其作用就是將我們經常使用的“網址”解析為IP地址。

    在互聯網上通信需要借助于IP地址,但人類對于數字的記憶能力遠不如文字,那么將IP地址轉換成容易記憶的文字是個好辦法,可是計算機只能識別0、1代碼,這時就需要一種機制來解決IP地址與主機名的轉換問題。

    早期由于網絡上的主機數量有限,主機名和IP的解析借助于hosts文件即可完成,Linux中此文件一般存放路徑為/etc/hosts,在此文件中手動記錄每個主機名與其IP的對應關系;但hosts文件的內容不能自動更新,一旦主機名或IP地址發生變化,需要手動對每一臺主機進行更新。

    隨著互聯網的發展,網絡上可供人們訪問的網站越來越多,hosts文件已經不能滿足需求;為了解決此問題,伯克利大學研究出了一套系統,被稱為BIND(Berkeley Internet Name Domain),也就是現在流行的DNS。

    DNS利用樹形目錄結構,將主機名的管理分配給不同的層級,這樣可以實現更加快速的完成主機名的查找,修改主機名解析時也更加方便。

二、相關概念

    1、域

        TLDTop Level Domain (頂級域名)

            組織域:.com, .org, .net, .edu,.gov,.mil,.cc,…

            國家域:.cn, .us, .tw, .iq,…

            反向域: .in-addr-arpa

        上面提到過,DNS采用分級的授權管理機制,其結構如下所示:

            blob.png

        根域與一級域由IANA直接管理。

    2、FQDN

        FQDN全稱為Fully Qualified Domain Name,即完全合格域名。

        FQDN由兩個部分組成:主機名和域名。因為DNS是逐級管理的,所以在不同的層級中主機名與域名也是不同的;以www.google.com為例,在第二層中,.com就是域名,google就是主機名,而到了第三層中,.google.com就成了域名,www就成了主機名。

        注意:主機名與域名并不是依據"."來劃分的,主機名中也可以包含"."號的,主要還是要根據域名的注冊情況來劃分。

    3、正向解析

        從FQDN轉換為IP地址稱為正向解析。

    4、反向解析 

        從IP地址轉換為FQDN稱為反向解析。   

    5、區域

        正向解析或反向解析中,每個域的記錄就是一個區域。

三、DNS的解析庫

    DNS的主要作用是進行主機名的解析。

    解析:根據用戶提供一種名稱,去查詢解析庫,以得到另一種名稱。       

    正向解析與反向解析使用不同的解析庫。

    正向解析庫:

         資源記錄:rr(resource record)

                   有類型的概念;用于此記錄解析的屬性。

         SOAStart of Authority,起始授權記錄,一個區域文件只能有一個。

         NSName Server,可以有多個。

         MXMail eXchange,郵件交換器。標明域內的郵件服務器,MX記錄有優先級屬性(0-99);數字越小,優先級越高。

         AFQDNàIP,專用于正向解析庫。

         PTRIPàFQDN,專用于反向解析庫。

         AAAAFQDNàIPv6,專用于正向解析庫。

         CNAMECanonical Name,正式名稱。

    解析庫文件同步的過程:區域傳送(單方向傳送)

            完全區域傳送:axfr

                將整個區域傳送到各服務器。

            增量區域傳送:ixfr

                只將區域有改動的記錄傳送到各服務器。

四、DNS的查詢過程

    DNS采用兩種查詢機制:遞歸和迭代。

    blob.png

    客戶端向DNS服務器發起查詢請求,DNS服務器搜索本地解析庫沒有結果,于是向根域發起查詢請求,根域告訴DNS服務器.com服務器上有它需要的資源,DNS服務器又向.com服務器發起查詢請求,結果被告知.google.com服務器上有它想要的結果,最后終于在.google.com服務器上找到了解析記錄,并返回給了客戶端。

    在上面的查詢過程中,客戶端只發起了一次請求,并得到了最后的結果,這種查詢方式被稱為遞歸。

    而DNS服務器在查詢過程中不停的發起請求,直到找到想要的結果,這種查詢方式被稱為迭代。

    這就好比你想知道某日本微電影女星的健康狀況,你去問了小A,雖然小A也不知道,但他好面子想表現,于是他向小B咨詢,小B讓他問問小C,小C讓他利用翻墻軟件去日本的網站上去看看,最后終于知道了答案并將告訴了你,在這個求知過程中你向小A發起的詢問就是遞歸的,對于你來說是最省心,而對于小A來說是比較悲催的;小A的發起查詢就是迭代的,對于小A來說是比較辛苦的,但對于小B、小C來說是基本上沒什么工作量的。

    注意:根不會為任何請求遞歸。

    DNS服務器并不需要在客戶端每次發起請求時都執行迭代查詢,DNS服務器會將之前的查詢結果在本地存儲一份,如果客戶端再次請求此資源,可以馬上做出響應,這個存儲空間稱為本地DNS緩存。

    另外我們可能還經常會聽到兩個概念權威DNS服務器和非權威應答。

    權威DNS服務器說的容易理解一點,就是如果本地DNS的配置文件中寫明了FQDN與IP的對應關系的,并授權管理這個域時,那么就稱這臺DNS服務器是該域的權威DNS服務器。

    客戶端得到的DNS查詢結果是從本地DNS緩存中獲得的,那么稱這個解析結果為非權威應答;非權威應答的結果不一定是正確的,有可能權威DNS服務器上記錄已修改,而緩存中還是未更新的記錄。

五、DNS的查詢順序

    1、本地hosts文件

    2、本地DNS緩存

    3、本地DNS服務器

    4、發起迭代查詢

六、DNS使用的端口號

    DNS協議使用udp/tcp的53端口提供服務,客戶端向DNS服務發起請求時,使用udp的53端口;DNS服務器間進行區域傳送的時候使用TCP的53端口。

七、DNS服務器類型

    1、DNS服務器

        為客戶端提供域名解析的主要區域,主DNS服務器宕機,會啟用從DNS服務器提供服務。

    2、DNS服務器

        主服務器DNS長期無應答,從服務器也會停止提供服務。

        主從區域之間的同步采用周期性檢查+通知的機制,從服務器周期性的檢查主服務器上的記錄情況,一旦發現修改就會同步,另外主服務器上如果有數據被修改了,會立即通知從服務器更新記錄。

    3、緩存服務器

        服務器本身不提供解析區域,只提供非權威應答。

    4、轉發服務器

        當DNS服務器的解析區域(包括緩存)中無法為當前的請求提供權威應答時,將請求轉發至其它的DNS服務器,此時本地DNS服務器就是轉發服務器。

       

       

原創文章,作者:petmaster,如若轉載,請注明出處:http://www.www58058.com/3760

(0)
petmasterpetmaster
上一篇 2015-04-28
下一篇 2015-04-29

相關推薦

  • keepalived高可用haproxy配合varnish實現wordpress的動靜分離

    haproxy和nginx都可以作為七層和四層反代服務器對外提供服務,此文通過haproxy和keealived配置varnish搭建wordpress的動靜分離站點 一、實驗環境 五臺虛擬機: haproxy-1:搭建haproxy和keepalived服務,ip地址:192.168.11.176 haproxy-2:搭建haproxy和keepalive…

    2017-07-03
  • 馬哥教育網絡班21期+第5周課程練習

    1.顯示/boot/grub/grub.conf中至少以一個空白字符開頭的行 [root@itop ~]# grep "^[[:space:]]\+" /boot/grub/grub.conf 2.顯示/etc/rc.d/rc.sysinit文件中以#開頭,后面至少一個空白字符,而后又有至少一個非空…

    Linux干貨 2016-08-08
  • Linux基礎

    Linux入門以及文件重定向、用戶管理、軟件管理等

    Linux干貨 2018-03-17
  • 文件共享服務之SAMBA

    文件共享服務之SAMBA 文件共享服務之SAMBA 一、samba出現的意義 二、samba協議描述 三、samba為客戶端的實現 四、samba為服務端的實現 五、使用圖形界面配置SAMBA 一、samba出現的意義 首先nfs實現系統文件掛載linux與linux之間,linux到windows之間實現的并不是那么理想 FTP可以實現linux和wind…

    Linux干貨 2016-04-19
  • Redis 代理服務Twemproxy

    1、twemproxy explore       當我們有大量 Redis 或 Memcached 的時候,通常只能通過客戶端的一些數據分配算法(比如一致性哈希),來實現集群存儲的特性。雖然Redis 2.6版本已經發布Redis Cluster,但還不是很成熟適用正式生產環境。 Redis 的 Clust…

    Linux干貨 2015-04-04
  • 馬哥教育網絡班21期-第4周課程練習

    1、復制/etc/skel目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其它用戶均沒有任何訪問權限。     cp -R /etc/skel /home/tuser1     chmod g-rwx,o-r…

    Linux干貨 2016-08-03
欧美性久久久久