dns

(轉自http://jwx.zgz.cn/cl/7.41.htm)

數據庫

7.4.1 DNS協議及應用數組

 


    DNS屬於應用層的協議,DNS提供了將人類易於理解的主機名或域名轉換爲計算機或網絡可識別的數字地址的機制,從而使得互連網的普遍應用成爲可能。

    1、 DNS涉及的基本概念
    (1)域名及頂級域
    1)域名
    域名(Domain Name)一般是用戶所在的主機名。域名格式是由若干部分組成,每一個部分又稱子域名,它們之間用「.」分開,每一個部分最少由兩個 字母或數字組成。城名一般按分層結構來構造,每一個子域名都有其特定的含義。從右到左,子域名分別表示不一樣的國家或地區的名稱(只有美國能夠省略表示國家的 頂級域名)、組織類型、組織名稱、分組織名稱和計算機名稱等,如www.example.com既是一個域名的典型例子。
    2)域名地址的最後一部分子域名稱爲高層域名(或頂級域名)
    它大體上能夠分紅兩類:一類是組織性頂級域名;另外一類是地理性頂級域名。
    ① 組織性頂級域名的出發點是爲了說明擁有並對那些Internet主機負有責任的組織的類型。    表7-36給出部分組織的分類及它們所對應的組織性頂級域名。
 

【轉】DNS協議及應用

表7-36 組織性頂級域名緩存

????② 組織性域名除了國際性組織域名外,其它類型的組織在Internet誕生時就已存在了,但隨着Internet的日益國際化,這種組織性頂級域名已難以知足需求了,因而便產生一種新的地理性頂級域名。地理性項級域名用兩個字母的縮寫形式來徹底地表示某個國家和地區。
    (2)域名系統的構成
    Internet中的域名地址與IP地址是等價的,它們之間經過域名系統DNS進行映射變換。實際上,DNS系統是一種分佈式地址信息數據庫系 統,採用客戶機/服務器模式,服務器中包含整個數據庫的某部分信息,並供客戶查詢。DNS容許局部控制整個數據庫的某些部分,但數據庫的每一部分均可經過 全網查詢獲得。
    網絡上的每臺主機都有域名,指向主機相關信息,像IP地址等。主機也能夠有一個或多個域的別名,它只是簡單地從一個域名(別名)指向另外一個域名 (正式域名)。DNS採用層次結構的優勢:各個組織在它們的內部能夠自由地選擇域名,只要保證組織內的唯一性便可,而沒必要擔憂與其它組織內的域名相沖突。
    域名系統採用的是客戶機/服務器模式,由三部分構成:域名數據庫、域名服務器和地址解析器。
    各自功能以下:
     地址解析器是客戶方,負責查詢域名服務器、解釋從服務器返回來的應答、將信息返回給請求方等工做。
     域名服務器(Domain Name Server)是服務器方,存儲並管理着所管轄區域的域名數據庫,負責接收來自於地址解析器的請求,按照請求類型,進行遞歸與非遞歸查詢。同時將查詢結果返回給地址解析器(網絡中的每臺主機既可做爲客戶方,也可做爲服務器方)。
     域名數據庫
    域名數據庫是一個大型的分佈在整個網絡上的分佈式數據庫,存儲了按層次管理的相關的數據,該層次結構可理解爲一棵倒放的樹(見圖10-2),樹中 的每一個結點均表明一個域,並存儲着與該域相關的區域和資源記錄(RRs),以供域名服務器查詢使用。域名系統的構成如圖7-37所示。
 

【轉】DNS協議及應用

圖7-37 DNS結構安全

????(3)資源記錄
    在一個域名服務器的配置文件裏包含若干個資源記錄,以幫助地址解析器進行地址解析。配置文件中資源記錄所含的信息見表7-38資源記錄示例,表中有關記錄的內容及意義參照有關DNS報文格式進行解讀。
 

【轉】DNS協議及應用

表7-38配置文件中資源記錄示例服務器

????(4)域名數據的分類
    域名數據分爲兩類數據:受權數據和緩衝數據。
    1)受權數據
    受權數據是通過受權的數據,該數據來自於負責存儲該類數據的域名服務器,受權數據是最近獲得的新數據,於是被認爲是正確數據。該類數據使用價值 高,但爲了得到受權數據其時間花費的代價也高。一般主機在發出地址解析請求時要在報文頭中要指出是否須要受權數據(見圖10-30報文頭格式)。
    2)緩衝數據
    緩衝數據是早先請求或交互操做的應答數據,被主機存儲在本地緩衝區內。這類數據與受權數據相比,使用價值略低一些,但時間花費的代價低。一般,在互聯網穩定狀態下,緩衝數據在某種程度上也是頗有用的。
    (5)域名區域
    若是整個網絡中只有一臺域名服務器且其中存儲了全部的DNS的信息,那麼域名轉換處理就簡單的多了,由於網絡中任意一個主機對域名查詢的請求均發 向這唯一的一臺域名服務器,它負責進行查詢處理並將結果反饋給發出查詢的主機便可。可是這種解決方案不管從數據的存儲量仍是從數據的傳輸速度要求都沒法適 應不斷變化的網絡及用戶的需求。爲了知足變化的網絡及龐大數據的存儲量仍是從數據的傳輸速度,DNS採用了一種樹形結構對域名數據庫進行組織和管理,樹中 的每個節點表明域名系統的域。域能夠進一步劃分紅子域,每一個域都有一個域名並由不一樣的組織管理,並定義了它在數據庫中的位置。咱們已經知道,在DNS 中,一個完整的域名是從該域向上直到根的全部標記組成的字符串,標記之間要用「.」分隔開。
    1)域名區域的定義
    爲了便於對樹中各節點表明域名信息進行有效的管理,就引出了域名區域的概念。域名區域是指一個域名服務器負責管理的命名空間的一部分。域名服務器負責維護本身管理區域的受權數據。域名區域構成見圖10-2。
    域名區域是由資源記錄中的一組受權數據定義的。其內容有:
     域名區域中全部節點的資源記錄。
     域名區域中頂級節點的信息。如在圖7-39中,Exam2.com區域的頂級節點是Exam2.com,Exam2.com節點可保存管理該區域全部節點的信息。
     委託子區域信息(被委託給本區域中其它子區域管理的區域)。
 

【轉】DNS協議及應用
圖7-39 DNS區域和子區域示意圖網絡

????2)利用域名區域信息進行域名地址解析
    當某個主機請求得到域名payroll.h2.Exam2.com的IP地址時,其地址解析程序首先從樹的根節點得到域.com 的域名信息,而後從.com的域名服務器得到其管轄下的子區域Exam2.com的域名信息,這樣逐級向下進行查詢,直到到達payroll.h2.Exam2.com子區域的域名服務器,並從中得到其相應的IP地址,並反饋給地址解析程序。
    (6)遞歸查詢與非遞歸查詢
    綜上所述,一個單一的域名服務器沒法對每個域名查詢進行完整的回答,可是它能夠對查詢路徑做出準確的響應。即,當一個域名服務器存儲了一個域名 查詢所請求域的全部受權信息,它可直接給出須要的查詢結果,不然,它必須給出具備所需信息的最近的域名服務器,以便繼續查詢。所謂最近的域名服務器通常是 圖7-39所示的區域樹中父節點的域名服務器,一旦查詢到具備目標域名信息的域名服務器,該域名服務器自動將目標地址信息發送到請求方。不然該域名服務器 繼續向請求方推薦另外一個更接近目標的域名服務器,上述過程一直持續到請求方獲得正確的結果或在使用受權信息訪問某個域名服務器時出現錯誤爲止。這種查詢過 程可能會反覆屢次。
    1) 遞歸查詢
    所謂遞歸查詢是指接收請求的第一個域名服務器必須自始至終對請求進行處理,或向其它域名服務器進行請求且最終得到受權數據,並對請求進行應答。採用遞歸查詢時,當所請求的域名信息在自身緩衝區時,域名服務器直接返回緩衝數據。此時遞歸查詢請求標誌無效(見DNS報頭介紹)。有關遞歸查詢見圖7-40所示。
    2)非遞歸查詢
    所謂非遞歸查詢是指接收請求的第一個域名服務器能夠返回可靠數據(自己有時),也能夠返回指向其它服務器的指針(至關於將查詢的接力棒傳給了最接近的域名服務器)。遞歸查詢與非遞歸查詢的區別可從圖7-40看出。
    主機的地址解析程序在查詢時能夠指定是否用遞歸仍是非遞歸查詢方式。非遞歸查詢方式與遞歸查詢方式相比響應速度快。
    2、DNS的報文格式
    DNS報文由報頭和正文段構成,DNS有四類正文段:查詢段、應答段、受權段和附加段。其具體構成見7-41所示。
 

【轉】DNS協議及應用

圖7-41 DNS報文結構分佈式

????    其中正文段中的查詢段用於主機向域名服務器發出地址解析請求,應答段、受權段、附加段用於域名服務器向主機返回地址解析結果。DNS報文頭和正文段的格式具體介紹以下。
    (1) DNS報文報頭格式
    DNS報文報頭格式如圖7-42所示。
 

【轉】DNS協議及應用

7-42 DNS報頭格式ide

????各個字段意義簡述以下:
     ID:這是由生成DNS查詢的程序指定的16位的標誌符。該標誌符也被隨後的應答報文所用,申請者利用這個標誌將應答和原來的請求對應起來。
     QR:該字段佔1位,用以指明DNS報文是請求(0)仍是應答(1)。
     OPCODE:該字段佔4位,用於指定查詢的類型。值爲0表示標準查詢,值爲1表示逆向查詢,值爲2表示查詢服務器狀態,值爲3保留,值爲4表示通知,值爲5表示更新報文,值6~15的留爲新增操做用。
     AA:該字段佔1位,僅當應答時才設置。值爲1,即意味着正應答的域名服務器是所查詢域名的管理機構或者說是被受權的域名服務器。
     TC:該字段佔1位,表明截斷標誌。若是報文長度比傳輸通道所容許的長而被分段,該位被設爲1。
     RD:該字段佔1位,是可選項,表示要求遞歸與否。若是爲1,即意味 DNS解釋器要求DNS服務器使用遞歸查詢。
     RA:該字段佔1位,表明正在應答的域名服務器能夠執行遞歸查詢,該字段與查詢段無關。
     Z:該字段佔3位,保留字段,其值在查詢和應答時必須爲0。
     RCODE:該字段佔4位,該字段僅在DNS應答時才設置。用以指明是否發生了錯誤。
    容許取值範圍及意義以下:
    0:無錯誤狀況,DNS應答表現爲無錯誤。
    1:格式錯誤,DNS服務器不能解釋應答。
    2:嚴重失敗,由於名字服務器上發生了一個錯誤,DNS服務器不能處理查詢。
    3:名字錯誤,若是DNS應答來自於受權的域名服務器,意味着DNS請求中提到的名字不存在。
    4:沒有實現。DNS服務器不支持這種DNS請求報文。
    5:拒絕,因爲安全或策略上的設置問題,DNS名字服務器拒絕處理請求。
    6 ~15 :留爲後用。
     QDCOUNT:該字段佔16位,指明DNS查詢段中的查詢問題的數量。
     ANCOUNT:該字段佔16位,指明DNS應答段中返回的資源記錄的數量,在查詢段中該值爲0。
     NSCOUNT:該字段佔16位,指明DNS應答段中所包括的受權域名服務器的資源記錄的數量,在查詢段中該值爲0。
     ARCOUNT:該字段佔16位,指明附加段裏所含資源記錄的數量,在查詢段中該值爲0。
    (2)DNS正文段
    在DNS報文中,其正文段封裝在圖7-42所示的DNS報文頭內。DNS有四類正文段:查詢段、應答段、受權段和附加段。
    1)查詢段的格式
    圖7-43給出了查詢段的格式。各字段意義爲:
     QNAME:該字段是可變長字段,其中包含一個被請求的域名,用一系列標籤表示,每個標籤由一個八進制後面跟着一個表示長度的八進制數組成。
     QTYPE: 該字段佔16位,指定查詢的資源類型(Type),該字段將一個類型值與一條指定的資源記錄相匹配(有些通用的QTYPE值能夠和與多條資源記錄相匹 配),其值能夠是A(請求主機IP地址)、NS(請求受權域名服務器)或CNAME(請求返回規範名稱,或者是某主機使用的與別名對應的真實名稱)。
     QCLASS: 該字段佔16位,指定查詢的類別(Class),如Inet用以表示互聯網和IP地址查詢。
 

【轉】DNS協議及應用

圖7-43 DNS報文中查詢段的格式大數據

????2)應答段、受權段、附加段的格式
    查詢段是主機向域名服務器發出的將域名轉換爲IP地址的請求報文,域名服務器按照主機查詢類型,通過查詢資源記錄數據庫後返回含有資源記錄的應答 段、受權段或附加段,資源記錄告訴主機所查詢的信息。應答段、受權段、附加段具備相同的格式,其格式如圖7-44所示。
    各字段意義介紹以下:
     NAME:該字段是可變長字段,資源記錄對應的域名(與主機發出的查詢段中QNAME相同)。
     TYPE:佔16位,該字段與查詢段中的QTYPE相同。
     CLASS:佔16位,該字段與查詢段中的QCLASS相同。
     TTL:佔32位,該字段表示資源記錄的生命週期(以秒爲單位),通常用於當地址解析程序取出資源記錄後決定保存及使用緩存數據的時間。
     RDLENTH:佔16位,該字段表示資源數據的長度(以字節爲單位)。
     RDATA:該字段是可變長字段,表示按查詢段要求返回的相關資源記錄的數據。其TYPE值是A,則返回4個字節的主機IP地址,若是 TYPE值是NS,則返回受權域名服務器的域名,若是TYPE值是CNAME,則返回規範名稱,或者是該主機使用的與別名對應的真實名稱)。
 

【轉】DNS協議及應用
圖7-44DNS應答段、受權段或附加段的格式spa

????3、DNS的工做過程及示例
    (1)DNS的工做過程
    域名系統是一個分佈式系統,其管理和控制也是分佈式的。一個用戶A在查找另外一用戶B的域名時,域名系統的工做過程如圖7-45所示。
 

【轉】DNS協議及應用
圖7-45 DNS基本工做過程

????    在DNS查找域名的過程當中,域名服務器爲了獲得一個IP地址經常須要查詢多個域名服務器。因而,在查詢地址的同時,本地域名服務器也就得 到了許多其它域名服務器的信息,像它們的IP地址、所負責的區域等,本地域名服務器將這些信息連同最終查詢到的主機IP地址所有存放在它的緩衝區中,以便 未來參考。當下次解析器再查詢與這些域名相關的信息時,就能夠直接引用。這樣,就大大減小了查詢時間。
    (2)DNS工做實例
    如下給出一個要求查找域名是www.internet-standard.com的IP地址的DNS查詢實例。
    1)DNS查詢報文
    查詢主機發出的DNS查詢報文見圖7-46所示。其DNS查詢報文中報頭意義以下:
     QR=0:表示爲查詢段。
     OPCODE=0000:表示爲標準查詢。
     AA=0:表示爲未要求受權。
     TC=0:未截斷。
     RD=1:表示爲要求遞歸查詢。
     RA=0:該項與應答有關,與查詢無關,所以設置爲零。
     Z=000:屬保留位
     RCODE=0000:該項是對應答信息的設置,與查詢無關,故均設置爲0。
     QDCOUNT=1:該項表示只有1條查詢信息。
     ANCOUNT=0:該項表示應答時返回資源記錄的數量,因爲是查詢信息,故設爲0。
     NSCOUNT=0:該項表示應答時返回受權服務器資源記錄的數量,對於查詢段,應設置爲零。
     ARCOUNT=0:該項表示應答時返回附加的受權域名服務器資源記錄的數量,對於查詢段,應設置爲零。
     QNAME=www.internet-standard.com:該項給出要求查詢的域名。
     QTYPE=A:該項表示要求查詢IP地址。
     QCLASS=inet:該項表示互聯網的IP地址查詢。
 

【轉】DNS協議及應用
圖7-46 查詢 DNS報文內容

????2)DNS應答報文
    相關域名服務器收到DNS查詢報文後,進行解包分析,經過斷定,肯定起爲通常的遞歸查詢報文,要查詢的是域名爲www.internet- standard.com,而且得知要求返回對應的IP地址,通過一系列的查詢處理,得到了相應的資源記錄RRs,返回與上述DNS查詢段對應的DNS應 答報文,具體應答報文如圖7-47所示。
    ① DNS應答報頭解釋
    在DNS應答報頭中,只需修改與應答有關的字段:QR、RA、RCODE、ANCOUNT、NSCOUNT、ARCOUNT。
     QR=1:表示爲應答段。
     OPCODE=0000:表示爲標準查詢。
     AA=0:表示爲未要求受權。
     TC=0:未截斷。
     RD=1:表示爲要求遞歸查詢。
     RA=1:表示正在應答的域名服務器能夠執行遞歸查詢。
     Z=000:屬保留位
     RCODE=0000:該項是對應答狀況的設置,其值爲零表示無錯誤。
     QDCOUNT=1:該項表示只有1條查詢信息。
     ANCOUNT=2:該項表示應答時返回資源記錄的數量爲2條。
     NSCOUNT=2:該項表示應答時返回受權服務器資源記錄的數量爲2條。
     ARCOUNT=0:該項表示應答時返回附加的受權域名服務器資源記錄的數量爲0。
     QNAME=www.internet-standard.com:該項給出要求查詢的域名。
     QTYPE=A:該項表示要求查詢IP地址。
     QCLASS=inet:該項表示互聯網的IP地址查詢。
    ② DNS應答部分查詢段解釋
    在DNS應答報文中,仍需將原查詢段的內容附加在報頭其後。但內容不變。
    ③ DNS應答部分的第一條資源記錄解釋
     NAME= www.internet-standard.com:要查詢的域名,即資源記錄中對應的域名。
     TYPE=CNAME:意味着www.internet-standard.com是別名。
     CLASS= inet:表示是互聯網。
     TTL=60:該資源記錄的生命週期是60秒(以秒爲單位)。
     RDLENTH=2:表示資源數據的長度爲2個字節(以字節爲單位),此處是指針程度。
     RDATA= internet-standard.com:該主機使用的與別名對應的真實名稱。
    ④ DNS應答部分的第二條資源記錄解釋
     NAME= internet-standard.com:要查詢的主機的真實域名,由上一條資源記錄返回的「RDATA」的值。
     TYPE=A:表示要查詢的是internet-standard.com 對應的IP地址。
     CLASS= inet:表示是互聯網。
     TTL=60:同上。
     RDLENTH=4:表示資源數據的長度爲4個字節(RDATA所表示的IP地址長度)。
     RDATA=216.92.98.204:該主機真實域名所對應的IP地址。
    ⑤ DNS應答部分的第一條受權資源記錄解釋
    NAME= internet-standard.com:要查詢的主機的真實域名。
     TYPE=NS:返回的資源記錄是受權服務器的域名。
     CLASS= inet:表示是互聯網。
     TTL=60:同上。
     RDLENTH=1:表示資源數據的長度爲11個字節。
     RDATA=ns00.ns0.com:對請求域進行管理的受權服務器的域名。
    ⑥ DNS應答部分的第二條受權資源記錄解釋
     NAME= internet-standard.com:要查詢的主機的真實域名。
     TYPE=NS:返回的資源記錄是受權服務器的域名。
     CLASS= inet:表示是互聯網。
     TTL=60:同上。
     RDLENTH=13:表示資源數據的長度爲13個字節。
     RDATA= ns130.pair.com:對請求域進行管理的另外一個受權服務器的域名。
 

【轉】DNS協議及應用

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息