西電_胡建偉_大作業(yè)_域名系統(tǒng)及其報(bào)文分析
域名系統(tǒng)及其報(bào)文分析專 業(yè): 信息對抗技術(shù) 班 級: 021231 學(xué)生姓名: 指導(dǎo)教師: 胡建偉 崔艷鵬 ,
域名系統(tǒng)及其報(bào)文分析

專 業(yè): 信息對抗技術(shù) 班 級: 021231 學(xué)生姓名: 指導(dǎo)教師: 胡建偉 崔艷鵬
,一、 概述
域名系統(tǒng)又稱DNS (Domain Name System),該系統(tǒng)用于命名組織到域?qū)哟谓Y(jié)構(gòu)中的計(jì)算機(jī)和網(wǎng)絡(luò)服務(wù)。域名是由圓點(diǎn)分開一串單詞或縮寫組成的,每一個(gè)域名都對應(yīng)一個(gè)惟一的IP 地址,在Internet 上域名與IP 地址之間是一一對應(yīng)的,DNS 就是進(jìn)行域名解析的服務(wù)器。DNS 命名用于Internet 等TCP/IP網(wǎng)絡(luò)中,通過用戶友好的名稱查找計(jì)算機(jī)和服務(wù)。DNS 是因特網(wǎng)的一項(xiàng)核心服務(wù), 它作為可以將域名和IP 地址相互映射的一個(gè)分布式數(shù)據(jù)庫。
(一)歷史
60年末代,美國資助試驗(yàn)性廣域計(jì)算機(jī)風(fēng),稱為ARPAnet ,70年代時(shí),70年代,ARPAnet 只是一個(gè)擁有幾百臺主機(jī)的小網(wǎng)絡(luò),僅需要一個(gè)HOSTS 文件就可以容納所需要主機(jī)信息,HOSTS 提供的是主機(jī)名也IP 地址的映射關(guān)系,也就是說可以用主機(jī)名進(jìn)行網(wǎng)絡(luò)信息的共享,而不需要記住IP 地址。但是隨著網(wǎng)絡(luò)的擴(kuò)在,HOSTS 文件已經(jīng)不能夠快速完成解析任務(wù)了,這時(shí)DNS 出現(xiàn)了。 可以說,上面所說的hosts 文件就像是現(xiàn)代DNS 域名服務(wù)器,是現(xiàn)代DNS 系統(tǒng)的“源”。
(二)功能
我們知道,互聯(lián)網(wǎng)上的每一個(gè)用戶,包括服務(wù)器都必須有一個(gè)唯一的IP 才能夠在互聯(lián)網(wǎng)上工作。而作為用戶的我們,在與英特網(wǎng)上的某個(gè)主機(jī)通信時(shí),顯然不愿意使用很難記憶的長達(dá)32位二進(jìn)制主機(jī)地址來訪問。即使是點(diǎn)分十進(jìn)制IP 地址也不容易記憶。相反,大家愿意使用更容易記憶的主機(jī)名字。
這樣便于人記憶的字符串與便于機(jī)器處理的二進(jìn)制IP 地址之間的矛盾就產(chǎn)
,生了,這時(shí),我們就需要用DNS 在表示主機(jī)名的字符串與表示主機(jī)的IP 地址二進(jìn)制數(shù)之間建立聯(lián)系,而這正就是DNS 的作用所在。
(三)結(jié)構(gòu)
要了解DNS ,我們先得了解域名的結(jié)構(gòu),也就是域名是怎么取的。
1. 域名結(jié)構(gòu)
早期的因特網(wǎng)使用了非等級的名字空間,但隨著因特網(wǎng)上的用戶數(shù)急劇增加時(shí),用非等級的名字空間來管理一個(gè)很大的名字集合是非常困難的。因此就出現(xiàn)了層次樹狀結(jié)構(gòu)的命名方法,他的特點(diǎn)是:
(1)任何一個(gè)連接在因特網(wǎng)上的主機(jī)或路由器,都有一個(gè)唯一的層次結(jié)構(gòu)的名字,即域名。
(2)域名的結(jié)構(gòu)由標(biāo)號序列組成,各標(biāo)號之間用點(diǎn)隔開:
? . 三級域名 . 二級域名 . 頂級域名
各標(biāo)號分別代表不同級別的域名。
(3)其中頂級域名分為
A . 國家頂級域名 nTLD:如: .cn 表示中國,.us 表示美國,.uk 表示英國,等等。
B . 通用頂級域名 gTLD:最早的頂級域名是:
.com (公司和企業(yè))
.net (網(wǎng)絡(luò)服務(wù)機(jī)構(gòu))
.org (非贏利性組織)
.edu (美國專用的教育機(jī)構(gòu)()
.gov (美國專用的政府部門)
.mil (美國專用的軍事部門)
.int (國際組織)
,C . 基礎(chǔ)結(jié)構(gòu)域名(infrastructure domain):這種頂級域名只有一個(gè),即 arpa ,用于反向域名解析,因此又稱為反向域名。
我們可以用一張圖來解釋他的結(jié)構(gòu):

2. 服務(wù)器設(shè)置
DNS 服務(wù)器是按區(qū)劃分的,在每個(gè)區(qū)中設(shè)置相應(yīng)的權(quán)限服務(wù)器,用來保存該區(qū)中的所有主機(jī)的域名到IP 地址的映射。根據(jù)服務(wù)器所起的作用,分為以下四種類型:
(1)根域名服務(wù)器
根域名服務(wù)器是最重要的域名服務(wù)器。所有的根域名服務(wù)器都知道所有的頂級域名服務(wù)器的域名和 IP 地址。
不管是哪一個(gè)本地域名服務(wù)器,若要對因特網(wǎng)上任何一個(gè)域名進(jìn)行解析,只要自己無法解析,就首先求助于根域名服務(wù)器。
(2)頂級域名服務(wù)器
這些域名服務(wù)器負(fù)責(zé)管理在該頂級域名服務(wù)器注冊的所有二級域名。
當(dāng)收到 DNS 查詢請求時(shí),就給出相應(yīng)的回答(可能是最后的結(jié)果,也可能是下一步應(yīng)當(dāng)找的域名服務(wù)器的 IP 地址)。
,(3)權(quán)限域名服務(wù)器
這就是前面已經(jīng)講過的負(fù)責(zé)一個(gè)區(qū)的域名服務(wù)器。
當(dāng)一個(gè)權(quán)限域名服務(wù)器還不能給出最后的查詢回答時(shí),就會告訴發(fā)出查詢請求的 DNS 客戶,下一步應(yīng)當(dāng)找哪一個(gè)權(quán)限域名服務(wù)器。
(4)本地域名服務(wù)器
本地域名服務(wù)器對域名系統(tǒng)非常重要。
當(dāng)一個(gè)主機(jī)發(fā)出 DNS 查詢請求時(shí),這個(gè)查詢請求報(bào)文就發(fā)送給本地域名服務(wù)器。
每一個(gè)因特網(wǎng)服務(wù)提供者 ISP,或一個(gè)大學(xué),甚至一個(gè)大學(xué)里的系,都可以擁有一個(gè)本地域名服務(wù)器,
這種域名服務(wù)器有時(shí)也稱為默認(rèn)域名服務(wù)器。
二、 工作原理
從原理上說,當(dāng)主機(jī)需要解析一個(gè)域名是,就需要與域名服務(wù)器通信以獲得域名對應(yīng)的IP 地址。但實(shí)際上,大多數(shù)的名字都是在本地進(jìn)行解析的,僅有少量的解析需要在因特網(wǎng)上進(jìn)行。
而我們所關(guān)注的是這部分在網(wǎng)上進(jìn)行的解析。
主機(jī)向本地域名服務(wù)器的查詢一般都是采用遞歸查詢。如果主機(jī)所詢問的本地域名服務(wù)器不知道被查詢域名的 IP 地址,那么本地域名服務(wù)器就以 DNS 客戶的身份,向其他根域名服務(wù)器繼續(xù)發(fā)出查詢請求報(bào)文。
本地域名服務(wù)器向根域名服務(wù)器的查詢通常是采用迭代查詢。當(dāng)根域名服務(wù)器收到本地域名服務(wù)器的迭代查詢請求報(bào)文時(shí),要么給出所要查詢的 IP 地址,要么告訴本地域名服務(wù)器:“你下一步應(yīng)當(dāng)向哪一個(gè)域名服務(wù)器進(jìn)行查詢”。然后讓本地域名服務(wù)器進(jìn)行后續(xù)的查詢。
具體過程我們可以用下圖來了解:
,
遞歸查詢方式

迭代查詢方式
三、 報(bào)文格式
我們先用一張圖來了解DNS 報(bào)文的格式:
,
下面詳述各部分的內(nèi)容:

標(biāo)識(2字節(jié)):這個(gè)字段網(wǎng)上的解釋是:“由客戶程序設(shè)置并有服務(wù)器返回結(jié)果。”原來這個(gè)字段可以看作是DNS 報(bào)文的ID ,對于相關(guān)聯(lián)的請求報(bào)文和應(yīng)答報(bào)文,這個(gè)字段是相同的,由此可以區(qū)分DNS 應(yīng)答報(bào)文是哪個(gè)請求報(bào)文的響應(yīng)。
標(biāo)志(2字節(jié)):這部分非常重要,需要逐比特分析:
QR(1比特):查詢/響應(yīng)的標(biāo)志位,1為響應(yīng),0為查詢。
opcode (4比特):定義查詢或響應(yīng)的類型(若為0則表示是標(biāo)準(zhǔn)的,若為1則是反向的,若為2則是服務(wù)器狀態(tài)請求)。
AA (1比特):授權(quán)回答的標(biāo)志位。該位在響應(yīng)報(bào)文中有效,1表示名字服務(wù)器是權(quán)限服務(wù)器(關(guān)于權(quán)限服務(wù)器以后再討論)
TC (1比特):截?cái)鄻?biāo)志位。1表示響應(yīng)已超過512字節(jié)并已被截?cái)啵ㄒ老『孟裼浀媚睦锾徇^這個(gè)截?cái)嗪蚒DP 有關(guān),先記著)
RD (1比特):該位為1表示客戶端希望得到遞歸回答(遞歸以后再討論) RA (1比特):只能在響應(yīng)報(bào)文中置為1,表示可以得到遞歸響應(yīng)。
zero (3比特):不說也知道都是0了,保留字段。
,
rcode (4比特):返回碼,表示響應(yīng)的差錯(cuò)狀態(tài),通常為0和3,各取值含義如下:
標(biāo)志段說完了,下面是問題數(shù)、資源記錄數(shù)、授權(quán)資源記錄數(shù)和額外資源記錄數(shù),這四個(gè)字段都是兩字節(jié),分別對應(yīng)下面的查詢問題、回答、授權(quán)和額外信息部分的數(shù)量。一般問題數(shù)都為1,DNS 查詢報(bào)文中,資源記錄數(shù)、授權(quán)資源記錄數(shù)和額外資源記錄數(shù)都為0.
該說正文部分了。查詢問題部分格式如下:
0 無差錯(cuò) 1 格式差錯(cuò) 2 問題在域名服務(wù)器上 3 域參照問題 4 查詢類型不支持 5 在管理上被禁止 6 -- 15 保留
查詢名部分長度不定,一般為要查詢的域名(也會有IP 的時(shí)候,即反向查詢)。此部分由一個(gè)或者多個(gè)標(biāo)示符序列組成,每個(gè)標(biāo)示符以首字節(jié)數(shù)的計(jì)數(shù)值來說明該標(biāo)示符長度,每個(gè)名字以0結(jié)束。計(jì)數(shù)字節(jié)數(shù)必須是0~63之間。該字段無需填充字節(jié)。還是借個(gè)例子來說明更直觀些,查詢名為gemini.tuc.noao.edu 的話,查詢名字段如下:
,
查詢類型(2字節(jié)):通常查詢類型為A (由名字獲得IP 地址)或者PTR (獲得IP 地址對應(yīng)的域名),類型列表如下:
類型 助記符 說明 1 A IPv4地址。 2 NS 名字服務(wù)器。 5 CNAME 規(guī)范名稱。定義主機(jī)的正式名字的別名。 6 SOA 開始授權(quán)。標(biāo)記一個(gè)區(qū)的開始。 11 WKS 熟知服務(wù)。定義主機(jī)提供的網(wǎng)絡(luò)服務(wù)。 12 PTR 指針。把IP 地址轉(zhuǎn)化為域名。 13 HINFO 主機(jī)信息。給出主機(jī)使用的硬件和操作系統(tǒng)的表述。 15 MX 郵件交換。把郵件改變路由送到郵件服務(wù)器。 28 AAAA 252 AXFR IPv6地址。 傳送整個(gè)區(qū)的請求。 255 ANY 對所有記錄的請求。
查詢類(2字節(jié)):通常為1,指Internet 數(shù)據(jù)。
前面說過,回答字段,授權(quán)字段和附加信息字段均采用資源記錄RR (Resource Record)的相同格式。該格式如下:
,
域名字段(不定長或2字節(jié)):記錄中資源數(shù)據(jù)對應(yīng)的名字,它的格式和查詢名字段格式相同。當(dāng)報(bào)文中域名重復(fù)出現(xiàn)時(shí),就需要使用2字節(jié)的偏移指針來替換。例如,在資源記錄中,域名通常是查詢問題部分的域名的重復(fù),就需要用指針指向查詢問題部分的域名。關(guān)于指針怎么用,TCP/IP詳解里面有,即2字節(jié)的指針,最簽名的兩個(gè)高位是11,用于識別指針。其他14位從報(bào)文開始處計(jì)數(shù)(從0開始),指出該報(bào)文中的相應(yīng)字節(jié)數(shù)。注意,DNS 報(bào)文的第一個(gè)字節(jié)是字節(jié)0,第二個(gè)報(bào)文是字節(jié)1。一般響應(yīng)報(bào)文中,資源部分的域名都是指針C00C(1100000000001100),剛好指向請求部分的域名。
類型(2字節(jié))、類(2字節(jié)):含義與查詢問題部分的類型和類相同。 生存時(shí)間(4字節(jié)):該字段表示資源記錄的生命周期(以秒為單位),一般用于當(dāng)?shù)刂方馕龀绦蛉〕鲑Y源記錄后決定保存及使用緩存數(shù)據(jù)的時(shí)間。
資源數(shù)據(jù)長度(2字節(jié)):表示資源數(shù)據(jù)的長度(以字節(jié)為單位,如果資源數(shù)據(jù)為IP 則為0004)
資源數(shù)據(jù):該字段是可變長字段,表示按查詢段要求返回的相關(guān)資源記錄的數(shù)據(jù)。
值得聲明的是,上圖所給的報(bào)文格式中,并不是所有DNS 報(bào)文都有以上各個(gè)部分的。