DNS:域名系統

Dororo.Lai發表於2018-06-22

    域名系統(DNS)是一種用於TCP/IP應用程式的分散式資料庫,它提供主機名字和IP地址之間的轉換及有關電子郵件的選路資訊。從應用的角度上看,對DNS的訪問是通過一個地址解析器(resolver)來完成的。由於DNS底層邏輯方面太複雜了,所以我僅從資料包方面分析如何應用DNS解析地址,只要學會如何使用就行,原理方面在後面深入。

DNS基礎

    

圖為DNS的名稱空間,和Unix的檔案系統相似,也具有層次結構。

    命名樹上任何一個結點的域名就是將從該結點到最高層的域名串連起來,中間使用一個點“.”分隔這些域名;以點“.”結尾的域名稱為絕對域名完全合格的域名FQDN(Full Qualified DomainName),例如sun.tuc.noao.edu.。如果一個域名不以點結尾,則認為該域名是不完全的。如何使域名完整依賴於使用的DNS軟體。如果不完整的域名由兩個或兩個以上的標號組成,則認為它是完整的;或者在該域名的右邊加入一個區域性字尾。例如域sun通過加上區域性字尾.tuc.noao.edu.成為完整的。


DNS的報文格式

這個報文由12位元組長的首部和4個長度可變的欄位組成。

1)標識欄位由客戶程式設定並由伺服器返回結果。客戶程式通過它來確定響應與查詢是否匹配。

2)16 bit的標誌欄位被劃分為若干子欄位,如下圖所示。

                                

我們從最左位開始依次介紹各子欄位:

  1. QR是1bit欄位:0表示查詢報文,1表示響應報文。
  2. opcode是一個4bit欄位:通常值為0(標準查詢),其他值為1(反向查詢)和2(伺服器狀態請求)。
  3. AA是1bit標誌,表示“授權回答(authoritative answer)”。該名字伺服器是授權於該域的。
  4. TC是1bit欄位,表示“可截斷的(truncated)”。使用UDP時,它表示當應答的總長度超過512位元組時,只返回前512個位元組。
  5. RD是1bit欄位表示“期望遞迴(recursion desired)”。該位元能在一個查詢中設定,並在響應中返回。這個標誌告訴名字伺服器必須處理這個查詢,也稱為一個遞迴查詢。如果該位為0,且被請求的名字伺服器沒有一個授權回答,它就返回一個能解答該查詢的其他名字伺服器列表,這稱為迭代查詢。在後面的例子中,我們將看到這兩種型別查詢的例子。
  6. RA是1bit欄位,表示“可用遞迴”。如果名字伺服器支援遞迴查詢,則在響應中將該位元設定為1。在後面的例子中可看到大多數名字伺服器都提供遞迴查詢,除了某些根伺服器。
  7. 隨後的3bit zero欄位必須為0。
  8. rcode是一個4bit的返回碼欄位。通常的值為0(沒有差錯)和3(名字差錯)。名字差錯只有從一個授權名字伺服器上返回,它表示在查詢中制定的域名不存在。

3)隨後的4個16 bit 可變欄位說明最後4個變長欄位中包含的條目數。對於查詢報文,問題(question)數通常是1,而其他3項則均為0。類似地,對於應答報文,回答數至少是1,剩下的兩項可以是0或非0。

詳細說明DNS查詢報文中的問題部分

                            

        (*1)查詢名是要查詢的名字,格式如下圖顯示瞭如何儲存域名gemini.tuc.noao.edu,它是一個或多個識別符號的序列。每個識別符號以首位元組的計數值來說明隨後識別符號的位元組長度,每個名字以最後位元組為0結束,長度為0的識別符號是根識別符號。

                            

        (*2)查詢型別每個問題有一個查詢型別,而每個響應(也稱一個資源記錄,我們下面將談到)也有一個型別。

                            

                最常用的查詢型別是A型別,表示期望獲得查詢名的IP地址。一個PTR查詢則請求獲得一個IP地址對應的域名。

        (*3)查詢類通常是1,指網際網路地址(某些站點也支援其他非IP地址)。

DNS響應報文中的資源記錄部分

            DNS報文中最後的三個欄位,回答欄位、授權欄位和附加資訊欄位,均採用一種稱為資源記錄RR(Resource Record)的相同格式。下圖顯示了資源記錄的格式。

                        

域名是記錄中資源資料對應的名字。它的格式和前面介紹的查詢名欄位格式相同。

型別說明RR的型別碼。它的值和前面介紹的查詢型別值是一樣的。

通常為1,指Internet資料。

生存時間欄位是客戶程式保留該資源記錄的秒數。資源記錄通常的生存時間值為2天。

資源資料長度說明資源資料的數量。

資源資料的格式依賴於型別欄位的值。對於型別1(A記錄)資源資料是4位元組的IP地址。


該篇總結了DNS的報文格式,希望你喜歡。

該文章大部分段落取材於《TCP/IP詳解 卷1:協議》

相關文章