DNS

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

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

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

表7-36 組織性頂級域名

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

圖7-37 DNS結構

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

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

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


圖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看出。
    主機的地址解析程序在查詢時可以指定是否用遞歸還是非遞歸查詢方式。非遞歸查詢方式與遞歸查詢方式相比響應速度快。
    二、DNS的報文格式
    DNS報文由報頭和正文段構成,DNS有四類正文段:查詢段、應答段、授權段和附加段。其具體構成見7-41所示。
 

圖7-41 DNS報文結構

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

7-42 DNS報頭格式

????各個字段意義簡述如下:
     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地址查詢。
 

圖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,則返回規範名稱,或者是該主機使用的與別名對應的真實名稱)。
 


圖7-44DNS應答段、授權段或附加段的格式

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


圖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地址查詢。
 


圖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:對請求域進行管理的另一個授權服務器的域名。
 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章