西電_胡建偉_大作業_域名系統及其報文分析
域名系統及其報文分析專 業: 信息對抗技術 班 級: 021231 學生姓名: 指導教師: 胡建偉 崔艷鵬 ,
域名系統及其報文分析
專 業: 信息對抗技術 班 級: 021231 學生姓名: 指導教師: 胡建偉 崔艷鵬
,一、 概述
域名系統又稱DNS (Domain Name System),該系統用于命名組織到域層次結構中的計算機和網絡服務。域名是由圓點分開一串單詞或縮寫組成的,每一個域名都對應一個惟一的IP 地址,在Internet 上域名與IP 地址之間是一一對應的,DNS 就是進行域名解析的服務器。DNS 命名用于Internet 等TCP/IP網絡中,通過用戶友好的名稱查找計算機和服務。DNS 是因特網的一項核心服務, 它作為可以將域名和IP 地址相互映射的一個分布式數據庫。
(一)歷史
60年末代,美國資助試驗性廣域計算機風,稱為ARPAnet ,70年代時,70年代,ARPAnet 只是一個擁有幾百臺主機的小網絡,僅需要一個HOSTS 文件就可以容納所需要主機信息,HOSTS 提供的是主機名也IP 地址的映射關系,也就是說可以用主機名進行網絡信息的共享,而不需要記住IP 地址。但是隨著網絡的擴在,HOSTS 文件已經不能夠快速完成解析任務了,這時DNS 出現了。 可以說,上面所說的hosts 文件就像是現代DNS 域名服務器,是現代DNS 系統的“源”。
(二)功能
我們知道,互聯網上的每一個用戶,包括服務器都必須有一個唯一的IP 才能夠在互聯網上工作。而作為用戶的我們,在與英特網上的某個主機通信時,顯然不愿意使用很難記憶的長達32位二進制主機地址來訪問。即使是點分十進制IP 地址也不容易記憶。相反,大家愿意使用更容易記憶的主機名字。
這樣便于人記憶的字符串與便于機器處理的二進制IP 地址之間的矛盾就產
,生了,這時,我們就需要用DNS 在表示主機名的字符串與表示主機的IP 地址二進制數之間建立聯系,而這正就是DNS 的作用所在。
(三)結構
要了解DNS ,我們先得了解域名的結構,也就是域名是怎么取的。
1. 域名結構
早期的因特網使用了非等級的名字空間,但隨著因特網上的用戶數急劇增加時,用非等級的名字空間來管理一個很大的名字集合是非常困難的。因此就出現了層次樹狀結構的命名方法,他的特點是:
(1)任何一個連接在因特網上的主機或路由器,都有一個唯一的層次結構的名字,即域名。
(2)域名的結構由標號序列組成,各標號之間用點隔開:
? . 三級域名 . 二級域名 . 頂級域名
各標號分別代表不同級別的域名。
(3)其中頂級域名分為
A . 國家頂級域名 nTLD:如: .cn 表示中國,.us 表示美國,.uk 表示英國,等等。
B . 通用頂級域名 gTLD:最早的頂級域名是:
.com (公司和企業)
.net (網絡服務機構)
.org (非贏利性組織)
.edu (美國專用的教育機構()
.gov (美國專用的政府部門)
.mil (美國專用的軍事部門)
.int (國際組織)
,C . 基礎結構域名(infrastructure domain):這種頂級域名只有一個,即 arpa ,用于反向域名解析,因此又稱為反向域名。
我們可以用一張圖來解釋他的結構:
2. 服務器設置
DNS 服務器是按區劃分的,在每個區中設置相應的權限服務器,用來保存該區中的所有主機的域名到IP 地址的映射。根據服務器所起的作用,分為以下四種類型:
(1)根域名服務器
根域名服務器是最重要的域名服務器。所有的根域名服務器都知道所有的頂級域名服務器的域名和 IP 地址。
不管是哪一個本地域名服務器,若要對因特網上任何一個域名進行解析,只要自己無法解析,就首先求助于根域名服務器。
(2)頂級域名服務器
這些域名服務器負責管理在該頂級域名服務器注冊的所有二級域名。
當收到 DNS 查詢請求時,就給出相應的回答(可能是最后的結果,也可能是下一步應當找的域名服務器的 IP 地址)。
,(3)權限域名服務器
這就是前面已經講過的負責一個區的域名服務器。
當一個權限域名服務器還不能給出最后的查詢回答時,就會告訴發出查詢請求的 DNS 客戶,下一步應當找哪一個權限域名服務器。
(4)本地域名服務器
本地域名服務器對域名系統非常重要。
當一個主機發出 DNS 查詢請求時,這個查詢請求報文就發送給本地域名服務器。
每一個因特網服務提供者 ISP,或一個大學,甚至一個大學里的系,都可以擁有一個本地域名服務器,
這種域名服務器有時也稱為默認域名服務器。
二、 工作原理
從原理上說,當主機需要解析一個域名是,就需要與域名服務器通信以獲得域名對應的IP 地址。但實際上,大多數的名字都是在本地進行解析的,僅有少量的解析需要在因特網上進行。
而我們所關注的是這部分在網上進行的解析。
主機向本地域名服務器的查詢一般都是采用遞歸查詢。如果主機所詢問的本地域名服務器不知道被查詢域名的 IP 地址,那么本地域名服務器就以 DNS 客戶的身份,向其他根域名服務器繼續發出查詢請求報文。
本地域名服務器向根域名服務器的查詢通常是采用迭代查詢。當根域名服務器收到本地域名服務器的迭代查詢請求報文時,要么給出所要查詢的 IP 地址,要么告訴本地域名服務器:“你下一步應當向哪一個域名服務器進行查詢”。然后讓本地域名服務器進行后續的查詢。
具體過程我們可以用下圖來了解:
,遞歸查詢方式
迭代查詢方式
三、 報文格式
我們先用一張圖來了解DNS 報文的格式:
,下面詳述各部分的內容:
標識(2字節):這個字段網上的解釋是:“由客戶程序設置并有服務器返回結果?!痹瓉磉@個字段可以看作是DNS 報文的ID ,對于相關聯的請求報文和應答報文,這個字段是相同的,由此可以區分DNS 應答報文是哪個請求報文的響應。
標志(2字節):這部分非常重要,需要逐比特分析:
QR(1比特):查詢/響應的標志位,1為響應,0為查詢。
opcode (4比特):定義查詢或響應的類型(若為0則表示是標準的,若為1則是反向的,若為2則是服務器狀態請求)。
AA (1比特):授權回答的標志位。該位在響應報文中有效,1表示名字服務器是權限服務器(關于權限服務器以后再討論)
TC (1比特):截斷標志位。1表示響應已超過512字節并已被截斷(依稀好像記得哪里提過這個截斷和UDP 有關,先記著)
RD (1比特):該位為1表示客戶端希望得到遞歸回答(遞歸以后再討論) RA (1比特):只能在響應報文中置為1,表示可以得到遞歸響應。
zero (3比特):不說也知道都是0了,保留字段。
,rcode (4比特):返回碼,表示響應的差錯狀態,通常為0和3,各取值含義如下:
標志段說完了,下面是問題數、資源記錄數、授權資源記錄數和額外資源記錄數,這四個字段都是兩字節,分別對應下面的查詢問題、回答、授權和額外信息部分的數量。一般問題數都為1,DNS 查詢報文中,資源記錄數、授權資源記錄數和額外資源記錄數都為0.
該說正文部分了。查詢問題部分格式如下:
0 無差錯 1 格式差錯 2 問題在域名服務器上 3 域參照問題 4 查詢類型不支持 5 在管理上被禁止 6 -- 15 保留
查詢名部分長度不定,一般為要查詢的域名(也會有IP 的時候,即反向查詢)。此部分由一個或者多個標示符序列組成,每個標示符以首字節數的計數值來說明該標示符長度,每個名字以0結束。計數字節數必須是0~63之間。該字段無需填充字節。還是借個例子來說明更直觀些,查詢名為gemini.tuc.noao.edu 的話,查詢名字段如下:
,查詢類型(2字節):通常查詢類型為A (由名字獲得IP 地址)或者PTR (獲得IP 地址對應的域名),類型列表如下:
類型 助記符 說明 1 A IPv4地址。 2 NS 名字服務器。 5 CNAME 規范名稱。定義主機的正式名字的別名。 6 SOA 開始授權。標記一個區的開始。 11 WKS 熟知服務。定義主機提供的網絡服務。 12 PTR 指針。把IP 地址轉化為域名。 13 HINFO 主機信息。給出主機使用的硬件和操作系統的表述。 15 MX 郵件交換。把郵件改變路由送到郵件服務器。 28 AAAA 252 AXFR IPv6地址。 傳送整個區的請求。 255 ANY 對所有記錄的請求。
查詢類(2字節):通常為1,指Internet 數據。
前面說過,回答字段,授權字段和附加信息字段均采用資源記錄RR (Resource Record)的相同格式。該格式如下:
,域名字段(不定長或2字節):記錄中資源數據對應的名字,它的格式和查詢名字段格式相同。當報文中域名重復出現時,就需要使用2字節的偏移指針來替換。例如,在資源記錄中,域名通常是查詢問題部分的域名的重復,就需要用指針指向查詢問題部分的域名。關于指針怎么用,TCP/IP詳解里面有,即2字節的指針,最簽名的兩個高位是11,用于識別指針。其他14位從報文開始處計數(從0開始),指出該報文中的相應字節數。注意,DNS 報文的第一個字節是字節0,第二個報文是字節1。一般響應報文中,資源部分的域名都是指針C00C(1100000000001100),剛好指向請求部分的域名。
類型(2字節)、類(2字節):含義與查詢問題部分的類型和類相同。 生存時間(4字節):該字段表示資源記錄的生命周期(以秒為單位),一般用于當地址解析程序取出資源記錄后決定保存及使用緩存數據的時間。
資源數據長度(2字節):表示資源數據的長度(以字節為單位,如果資源數據為IP 則為0004)
資源數據:該字段是可變長字段,表示按查詢段要求返回的相關資源記錄的數據。
值得聲明的是,上圖所給的報文格式中,并不是所有DNS 報文都有以上各個部分的。