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