芮辰
摘 要:域名查詢實驗是計算機(jī)網(wǎng)絡(luò)實驗教學(xué)的重要組成部分之一.該實驗設(shè)計以域名查詢的工作原理為核心,使用WireShark軟件捕獲并分析DNS報文,使用Packet Tracer軟件仿真域名查詢的迭代查詢和遞歸查詢過程.通過實驗,幫助學(xué)生更好地理解域名查詢的工作原理,提高了學(xué)生的理論水平和實踐能力,為后續(xù)學(xué)習(xí)FTP、WWW等服務(wù)打下堅實的基礎(chǔ).
關(guān)鍵詞:域名系統(tǒng);遞歸查詢;迭代查詢;實驗綜述報告
中圖分類號:G642.0;TP312? 文獻(xiàn)標(biāo)識碼:A? 文章編號:1673-260X(2019)10-0061-05
計算機(jī)網(wǎng)絡(luò)是計算機(jī)專業(yè)必修的一門實踐性很強(qiáng)的專業(yè)基礎(chǔ)課程[1-4],域名系統(tǒng)(Domain Name System,DNS)是因特網(wǎng)的核心服務(wù)之一.對于計算機(jī)專業(yè)的學(xué)生,DNS查詢和應(yīng)答報文的格式,域名查詢原理是必須掌握的.但是,由于實驗設(shè)備的缺乏[5-6]和網(wǎng)絡(luò)知識本身的抽象性,增加了學(xué)生對于域名解析的理解和掌握難度.為了幫助學(xué)生更直觀地學(xué)習(xí)域名查詢的工作原理,設(shè)計了使用WireShark分析DNS查詢和應(yīng)答報文[7-9],使用Cisco Packet Trace仿真DNS的遞歸和迭代查詢的實驗.
1 域名查詢原理
由于IP地址難以記憶,出現(xiàn)了使用“主機(jī)名”代替IP地址與服務(wù)器通信的需求,一種基于TCP/IP的域名系統(tǒng)應(yīng)運而生.域名系統(tǒng)提供的服務(wù)能夠?qū)⒂蛎D(zhuǎn)換為對應(yīng)的IP地址.如圖1所示,Internet采用層次樹狀結(jié)構(gòu)的域名空間命名方法,互聯(lián)網(wǎng)上的所有主機(jī)或路由器都有一個唯一的域名.每個域名由若干個分量組成,各分量之間用點隔開,格式為“… ….三級域名.二級域名.頂級域名”,如www.sina.com.
1.1 DNS服務(wù)器
DNS采用分布式客戶/服務(wù)器(C/S)架構(gòu),有4種類型的域名服務(wù)器:
(1)本地DNS服務(wù)器:用戶主機(jī)有域名查詢需求時,先將查詢報文發(fā)送到本地DNS服務(wù)器.接收到查詢請求后,本地DNS服務(wù)器首先在緩存中查找對應(yīng)的IP地址,如找不到則將查詢請求發(fā)到指定的DNS服務(wù)器.
(2)授權(quán)DNS服務(wù)器.負(fù)責(zé)特定域名的域名解析,同時也具有本地DNS服務(wù)器的功能.授權(quán)DNS服務(wù)器總是能夠?qū)⑵涔茌牭闹鳈C(jī)域名轉(zhuǎn)換為對應(yīng)的IP地址.
(3)頂級DNS服務(wù)器.負(fù)責(zé)管理該頂級域名中所有注冊的二級域名.
(4)根DNS服務(wù)器.全世界只有13臺,是最重要的DNS服務(wù)器,存有所有頂級DNS服務(wù)器的域名和IP地址,用來管理互聯(lián)網(wǎng)主目錄.當(dāng)本地DNS服務(wù)器請求根DNS服務(wù)器時,路由器就能找到離這個本地DNS服務(wù)器最近的一個根DNS服務(wù)器.
1.2 域名查詢原理
DNS的詳細(xì)概念、原理和機(jī)制定義在RFC1034和RFC1035中.共有3種域名查詢方式:遞歸查詢、迭代查詢和反向查詢.
(1)遞歸查詢(Recursion Query).這是最常見的查詢方式,用戶主機(jī)向本地DNS服務(wù)器發(fā)出的查詢請求一般為遞歸查詢.本地DNS服務(wù)器接收到用戶主機(jī)的查詢請求后,先查詢自己的數(shù)據(jù)庫和緩存中是否有對應(yīng)記錄,如查詢到則將結(jié)果返回給用戶主機(jī);否則將同樣作為客戶端向最近的根DNS服務(wù)器提出查詢請求.這種查詢方式中,用戶主機(jī)向本地DNS服務(wù)器提出1次查詢請求,然后等待查詢結(jié)果.
(2)迭代查詢(Iteration Query).本地DNS服務(wù)器向上層DNS服務(wù)器(外網(wǎng))發(fā)出的查詢請求一般為迭代查詢.用戶主機(jī)向本地DNS服務(wù)器發(fā)送查詢請求后,如果本地DNS服務(wù)器不知道要查詢的IP地址,就向最近的根DNS服務(wù)器發(fā)出迭代查詢請求.根DNS服務(wù)器通常把某個頂級DNS服務(wù)器的IP地址發(fā)給本地DNS服務(wù)器,讓本地DNS服務(wù)器向該頂級DNS服務(wù)器查詢.頂級DNS服務(wù)器收到本地DNS的查詢請求后,或者直接返回所要查詢的IP地址,或者將知道該查詢結(jié)果的授權(quán)DNS服務(wù)器的IP地址告訴本地DNS服務(wù)器,讓本地DNS服務(wù)器向授權(quán)DNS服務(wù)器查詢.這種查詢方式中,用戶主機(jī)提出1次查詢請求,本地DNS服務(wù)器提出多次查詢請求,上層DNS服務(wù)器或者給出要查詢的IP址,或者返回一個能解答該域名查詢的DNS服務(wù)器地址,直到找到最終負(fù)責(zé)所查域名的DNS服務(wù)器,得到查詢結(jié)果.
(3)反向查詢(Reverse Query).用戶主機(jī)查詢IP地址對應(yīng)的域名.
1.3 DNS報文格式
DNS查詢報文和應(yīng)答報文的格式是一樣的,如圖3所示[10-12],各字段含義如下:
1.3.1 Header頭部
(1)ID:查詢報文和應(yīng)答報文的序列號.用于匹配未得到解決的查詢的響應(yīng).
(2)QR:為0表示查詢報文,為1表示應(yīng)答報文.
(3)Opcode:為0表示標(biāo)準(zhǔn)查詢,為1表示反向查詢,為2表示服務(wù)器狀態(tài)請求.
(4)AA:在應(yīng)答報文中才有意義.表示應(yīng)答服務(wù)器為授權(quán)DNS服務(wù)器.
(5)TC:表示可截斷.如應(yīng)答報文長度超過512字節(jié),則只返回前512字節(jié).
(6)RD:如為1,表示建議域名服務(wù)器進(jìn)行遞歸查詢.
(7)RA:為1表示DNS服務(wù)器支持遞歸查詢.
(8)Z:保留值,未使用.在查詢和應(yīng)答報文中必須設(shè)為0.
(9)RCODE:在應(yīng)答報文中設(shè)置.為0表示無錯誤,為1表示報文格式錯誤,為2表示DNS服務(wù)器無法處理查詢請求,為3表示要查詢的域名不存在,為4表示DNS服務(wù)器不支持該查詢類型,為5表示DNS服務(wù)器拒絕應(yīng)答.
(10)QDCOUNT:查詢報文中的問題數(shù).
(11)ANCOUNT:應(yīng)答報文中的回答數(shù).
(12)NSCOUNT:授權(quán)記錄中的DNS服務(wù)器資源記錄數(shù).
(13)ARCOUNT:附加記錄中的資源記錄數(shù).
1.3.2 Question問題段
(1)QNAME:要查詢的域名(反向查詢中為IP地址).如www.sohu.com,在報文中的表示方式為“3www4sohu3com0”,數(shù)字表示當(dāng)前這一級域名中的字符數(shù).
(2)QTYPE:需要應(yīng)答報文查詢的記錄類型,常見的查詢類型列在表1中.
(3)QCLASS:規(guī)定查詢的類.對于互聯(lián)網(wǎng),值為1(IN).
1.3.3 Answer,Authority和Additional段
這三個字段的格式是一樣的,各字段含義如下:
(1)NAME:域名.
(2)TYPE:查詢類型.含義和Question段中TYPE的含義一致.
(3)CLASS:查詢類.含義和Question段中CLASS的含義一致.
(4)TTL:查詢結(jié)果在客戶端緩存的存放時間,單位為秒.
(5)RDLENGTH:RDATA字段的長度.
(6)RDATA:格式和TYPE和CLASS有關(guān).例如,TYPE為A,CLASS為IN,那么RDATA為一個4字節(jié)ARPA網(wǎng)絡(luò)地址.
1.4 WireShark軟件和Packet Tracer軟件
1.4.1 WireShark
WireShark是目前世界上應(yīng)用最廣泛的網(wǎng)絡(luò)協(xié)議分析軟件.其主要功能是截獲網(wǎng)絡(luò)報文信息,并以網(wǎng)絡(luò)協(xié)議數(shù)據(jù)報的詳細(xì)格式將網(wǎng)絡(luò)信息的微觀細(xì)節(jié)顯現(xiàn)給用戶.WireShark操作簡單,功能強(qiáng)大,是網(wǎng)絡(luò)安全工程師和普通學(xué)習(xí)者分析網(wǎng)絡(luò)協(xié)議的優(yōu)秀工具.
1.4.2 Packet Tracer
Cisco Packet Tracer是一款功能強(qiáng)大的網(wǎng)絡(luò)仿真軟件,用戶可以使用該軟件設(shè)計、配置、排除網(wǎng)絡(luò)故障、驗證網(wǎng)絡(luò)的正確性,通過模擬仿真網(wǎng)絡(luò)觀察網(wǎng)絡(luò)的實時運行情況.為計算機(jī)網(wǎng)絡(luò)技實驗教學(xué),提供了直觀的仿真環(huán)境[13-14].
2 實驗?zāi)康?/p>
(1)掌握DNS報文的格式
(2)理解域名查詢的工作過程
(3)熟練使用WireShark軟件抓取DNS包
(4)熟練使用Packet Tracer搭建虛擬仿真網(wǎng)絡(luò)
(5)掌握ipconfig和nslookup命令的使用方法
3 實驗內(nèi)容
3.1 實驗環(huán)境
采用項目驅(qū)動、理論實踐一體化的實驗教學(xué)模式[15],共安排4個實驗學(xué)時.將授課班級學(xué)生分為若干個小組進(jìn)行實驗.實驗的軟、硬件環(huán)境為:
(1)操作系統(tǒng):64-bit Windows 10
(2)瀏覽器:Chrome Version 73.0.3683.103
(3)WireShark Version 3.0.0
(4)Cisco Packet Tracer Version 6.0.0.0045
3.2 實驗步驟
(1)使用ipconfig命令查詢本機(jī)IP地址和本地DNS服務(wù)器地址
首先,要確保本地主機(jī)可以正常連接互聯(lián)網(wǎng).在終端窗口輸入ipconfig/all命令,結(jié)果如圖4所示.查詢到本地主機(jī)的局域網(wǎng)IPv4地址為192. 168.1.110,首選/備用DNS服務(wù)器地址分別為:61. 132.163.68和202.102.213.68.
(2)使用nslookup命令查詢域名對應(yīng)的IP地址
nslookup命令可以用于查詢域名所對應(yīng)的IP地址.例如,在終端窗口輸入nslookup www.sina.com查詢到新浪網(wǎng)的IP地址為202.102.94.124,應(yīng)答DNS服務(wù)器地址為61.132.163.68,這正是本地主機(jī)默認(rèn)的首選DNS服務(wù)器地址.使用nslookup命令的第二種方式是在終端窗口中直接輸入nslookup,然后可連續(xù)輸入多個要查詢的域名.通過這種方式查詢www.sina.com和www.tencent.com的IP地址.如圖5所示.
(3)查看/清除本地DNS緩存
在終端窗口中輸入“ipconfig/displaydns”可以查詢保存在本地主機(jī)緩存中的DNS查詢結(jié)果,輸入“ipconfig/flushdns”可以清除保存在本地主機(jī)的DNS緩存.
(4)使用WireShark抓取并分析DNS查詢包和應(yīng)答包
打開WireShark軟件,由于域名查詢使用53號端口,因此將網(wǎng)絡(luò)報文的捕獲條件設(shè)置為”udp.port == 53 || tcp.port == 53”.在瀏覽器地址欄輸入“www.sohu.com”,圖6是通過WireShark截獲到的查詢包和應(yīng)答包.
分析圖7中的域名查詢包詳細(xì)信息:用戶192.168.1.110向DNS服務(wù)器61.132.163.68發(fā)出域名查詢請求,查詢方式為遞歸查詢,有1個查詢問題,查詢域名為www.sohu.com,查詢類型為A(IP地址),查詢的類為IN(互聯(lián)網(wǎng)).
圖8是應(yīng)答包的詳細(xì)信息:DNS服務(wù)器支持遞歸查詢,1個查詢問題的應(yīng)答數(shù)為3.分析Answers中的應(yīng)答結(jié)果可知,前兩個應(yīng)答的類型都為CNAME(規(guī)范域名),sohu.com的規(guī)范域名為fjsy.a.sohu.com和gs.a.sohu.com,第三個應(yīng)答的類型為A(IPv4地址),該應(yīng)答給出了域名sohu.com的IP地址為110.43.83.1,這和使用nslookup命令查詢到的結(jié)果是一致的.Answers中還給出了三個應(yīng)答結(jié)果在緩存中的TTL(存放時間).
(5)使用Packet Tracer仿真DNS遞歸查詢和迭代查詢
打開Packet Tracer軟件,搭建如圖9所示的虛擬仿真網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu).所有主機(jī)和服務(wù)器的IP地址均設(shè)在同一網(wǎng)段,各服務(wù)器的IP地址和所要開啟的服務(wù)和相關(guān)信息如表2所示.將實驗用戶主機(jī)PC-PT的地址設(shè)為192.168.0.1,本地DNS服務(wù)器地址設(shè)為192.168.0.5.
分別設(shè)置sina.com和sohu.com服務(wù)器的HTTP服務(wù)的內(nèi)容如圖10所示.
接下來,進(jìn)行域名查詢實驗.在用戶主機(jī)PC-PT(192.168.0.1)的WEB瀏覽器中分別輸入www.sina.com和www.sohu.com,可正常進(jìn)行域名查詢,結(jié)果如圖11所示.
用戶主機(jī)PC-PT訪問www.sina.com時,直接通過本地DNS服務(wù)器(192.168.0.5)查詢.這種查詢方式為遞歸查詢.
用戶主機(jī)PC-PT訪問www.sohu.com時,先向本地DNS服務(wù)器(192.168.0.5)查詢;本地DNS服務(wù)器中沒有應(yīng)答結(jié)果,因此它向根DNS服務(wù)器(192.168.0.6)查詢;根DNS服務(wù)器中也沒有應(yīng)答結(jié)果,但它能查詢到應(yīng)答結(jié)果保存在dns.sohu.com(192.168.0.5)中,于是由根DNS服務(wù)器向dns.sohu.com發(fā)起查詢并將查詢結(jié)果存入自己的緩存,再轉(zhuǎn)發(fā)給本地DNS服務(wù)器;本地DNS服務(wù)器接收到結(jié)果后也存入自己的緩存,然后再發(fā)給用戶主機(jī)PC-PT.這種查詢方式為迭代查詢.
4 結(jié)束語
通過本實驗項目的理論學(xué)習(xí)和實踐操作后,學(xué)生對于DNS報文的格式、域名查詢的過程有了直觀深刻的認(rèn)識,并且能夠熟練使用WireShark抓取網(wǎng)絡(luò)數(shù)據(jù)包,使用Packet Tracer構(gòu)建模擬仿真網(wǎng)絡(luò),達(dá)到了實驗?zāi)康?教學(xué)實踐表明,該實驗項目突出了重點知識的掌握,加深了學(xué)生對于計算機(jī)網(wǎng)絡(luò)知識的理解,增強(qiáng)了學(xué)生的動手實踐能力和團(tuán)隊合作意識,降低了學(xué)習(xí)計算機(jī)網(wǎng)絡(luò)知識的枯燥性,激發(fā)了學(xué)生的學(xué)習(xí)興趣,取得了較好的教學(xué)效果.
參考文獻(xiàn):
〔1〕劉利強(qiáng),陳凱文,周細(xì)義.計算機(jī)網(wǎng)絡(luò)實驗教學(xué)的改革與實踐[J].實驗技術(shù)與管理,2007,24(12):118-125.
〔2〕姜楓.計算機(jī)網(wǎng)絡(luò)實驗教程[M].北京:清華大學(xué)出版社,2010.
〔3〕郭秋萍.計算機(jī)網(wǎng)絡(luò)技術(shù)實驗教程[M].北京:清華大學(xué)出版社,2009.
〔4〕馮博琴.計算機(jī)網(wǎng)絡(luò)實驗教程[M].北京:高等教育出版社,2011.
〔5〕何增穎,陳建銳.基于虛擬技術(shù)的計算機(jī)實驗教學(xué)[J].實驗技術(shù)與管理,2012,29(1):79-82.
〔6〕李宏儒.虛擬化技術(shù)在計算機(jī)實驗教學(xué)中的應(yīng)用[J].實驗技術(shù)與管理,2010,27(5):90-92.
〔7〕Sanders C. Wireshark數(shù)據(jù)包分析實戰(zhàn)[M].第2版.諸葛建偉,陳琳,許偉林譯.北京:人民郵電出版社,2013.
〔8〕Orebaugh A,Ramirez G,Burke J, et al. Wireshark & Ethereal Network Protocol Analyzer Toolkit[M]. Rockland: Syngress Publishing,Inc.,2007.
〔9〕徐慧,王春枝,陳宏偉,等.以協(xié)議分析為導(dǎo)向的本科生網(wǎng)絡(luò)管理能力培養(yǎng)模式[J].計算機(jī)教育,2013(14):13-16.
〔10〕謝希仁.計算機(jī)網(wǎng)絡(luò)[M].(第5版)北京:電子工業(yè)出版社,2008.
〔11〕曹雪峰.計算機(jī)網(wǎng)絡(luò)原理——基于實驗的協(xié)議分析方法[M].北京:清華大學(xué)出版社,2014.
〔12〕Mockapetris P. Domain Names - Implementation and Specification[S]. IETF RFC 1035,1987.
〔13〕崔北亮.CCNA認(rèn)證指南[M].北京:電子工業(yè)出版社,2009.82-83.
〔14〕沈鑫剡,葉寒鋒,劉鵬,等.計算機(jī)網(wǎng)絡(luò)安全學(xué)習(xí)輔導(dǎo)與實驗指南[M].北京:清華大學(xué)出版社,2012.12-18.
〔15〕吳獻(xiàn)文.計算機(jī)網(wǎng)絡(luò)安全應(yīng)用教程[M].北京:人民郵電出版社,2010.