TCP/IP——DNS

一、概念

DNS:

域名系統(DNS)是一種用於TCP/IP應用程序的分佈式數據庫,它提供主機名字和IP地址之間的轉換及有關電子郵件的選路信息。

這裏提到的分佈式是指在Internet上的單個站點不能擁有所有的信息。

DNS提供了允許服務器和客戶程序相互通信的協議

對DNS的訪問是通過一個地址解析器(windows的nslookup)來完成的

解析器通常是應用程序的一部分,解析器並不像TCP/IP協議那樣是操作系統的內核,解析器不屬於內核

操縱系統內核中的TCP/IP協議簇對於DNS一點都不知道

二、DNS基礎

在這裏插入圖片描述
DNS的名字空間和Unix的文件系統相似,也具有層次結構

命令標識中一律不區分大寫和小寫

命名樹上任何一個節點的域名就是將從該節點到最高層的域名串聯起來,中間使用一個點“.”分隔這些域名

域名樹中的每個節點必須有一個唯一的域名,但域名樹中的不同節點可使用相同的標識

以點“.”結尾的域名稱爲絕對域名或完全合格的域名FQDN,例如pwic.new.na.com.,如果一個域名不以點結尾,則認爲該域名是不完全的

頂級域名的劃分:

在這裏插入圖片描述
arpa是一個用作地址到名字轉換的特殊域

7個3字符長的普通域,有些書也將這些域稱爲組織域

所有2字符長的域均是基於ISO3166中定義的國家代碼,這些域被稱爲國家域,或地理域

DNS系統特性:

NIC負責分配頂級域和委派其它指定區域的授權機構

一個獨立管理的DNS子樹稱爲一個區域(zone)。一個常見的區域是一個二級域,如noao.edu.

一旦一個區域的授權機構被委派後,由它負責向該區域提供多個名字服務器。當一個新系統加入到一個區域中時,該區域的DNS管理者爲該新系統申請一個域名和一個IP地址,並將它們加到名字服務器的數據庫中。着就是授權機構存在的必要性。

一個區域的管理者必須爲該區域提供一個主名字服務器和至少一個輔助名字服務器。

主、輔名字服務器的主要區別在於主名字服務器從磁盤文件中調入該區域的所有信息,而輔名字服務器則從主服務器調入所有信息。我們將輔名字服務器從主服務器調入信息稱爲區域傳送(使用TCP:53)

攻擊:非法人員希望把主名字服務器裏面所有映射都導出來,他僞裝輔名字服務器欺騙主名字服務器通過TCP:53把主DNS服務器裏面的東西全導過來,然後非法人員就知道主DNS所有的映射。

當一個名字服務器沒有請求信息時,它將如何處理?它必須與其它的名字服務器聯繫

並不是每個名字服務器都知道如何同其他名字服務器聯繫。相反,沒個名字服務器必須知道如何同根的名字服務器聯繫。

這樣一個反覆的過程:正在處理請求的名字服務器與根服務器聯繫,根服務器告訴它與另一個名字服務器聯繫

DNS的一個基本特性是使用超高速緩存

DNS報文格式:

在這裏插入圖片描述
這個報文由12字節長的首部和4個長度可變的字段組成。

標識字段:由客戶程序設置並由服務器放回結果。客戶程序通過它來確定響應與查詢是否匹配,如果我的請求報文是1,那麼迴應報文也是1

16bit的標誌字段被劃分爲若干子字段:

在這裏插入圖片描述
QR是1bit字段:0表示查詢報文,1表示響應報文

Opcode是一個4bit字段:通常值爲0(標準查詢),其它值爲1(方向查詢)和2(服務狀態請求)

AA是1bit標誌,表示“授權回答”

TC是1bit字段,表示“截斷的”,DNS最大隻能回覆512字節,如果有大於512字節的數據,只會回覆前512字節,並置爲TC位,告訴源端這不是完整的。

RD是1bit字段,表示“期望遞歸”,使用遞歸查詢

RA是1bit字段,表示“可用遞歸”,這是通過遞歸查詢跟你返回的

rcdo是一個4bit的返回碼字段。通常的值爲0(沒有差錯)和3(名字差錯)

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

DNS查詢報文中的問題部分:

DNS查詢報文中問題部分的格式:
在這裏插入圖片描述
查詢名是要查找的名字,它是一個或多個標識符的序列。每個標識符以首字節的計數值來說明隨後標識符的字節長度,每個名字以最後字節爲0結束,長度爲0的標識符是根標識符。計數字節的值必須是0~63的數,因爲標識符的最大長度僅爲63,該字段無需以整32bit邊界結束,即無需填充字節。一個域名存儲的結構如下:
在這裏插入圖片描述
查詢類型:
在這裏插入圖片描述
查詢類通常是1,指互聯網地址

三、DNS使用的UDP還是TCP

注意到DNS名字服務器使用的熟知端口號無論對UDP還是TCP都是53。這意味着DNS均支持UDP和TCP訪問

當名字解析器發出一個查詢請求,並且返回響應中的TC(刪減標誌)比特被設置爲1時,它就以爲着響應的長度超過了512字節,而僅返回前512個字節。在遇到這種情況時,名字解析器通常使用TCP重發原來的查詢請求,它將允許返回的響應超過512個字節。既然TCP能將用戶的數據流分爲一些報文段,它就能用多個報文段來傳送任意長度的用戶數據

區域傳送將使用TCP,因爲這裏傳送的數據遠比一個查詢或響應多得多

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