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