DNS協(xié)議詳解及報(bào)文格式分析

轉(zhuǎn):https://jocent.me/2017/06/18/dns-protocol-principle.html

解BUG的過程中碰到了DNS相關(guān)的內(nèi)容玷坠,折騰網(wǎng)站和域名郵箱時(shí)也對(duì)DNS做了一些配置,發(fā)現(xiàn)對(duì)一些細(xì)節(jié)有點(diǎn)記不清晰了,因此很有必要重新溫習(xí)一下這方面的知識(shí)。學(xué)過網(wǎng)絡(luò)的應(yīng)該記得現(xiàn)代計(jì)算機(jī)通信的基石是TCP/IP協(xié)議泳猬,計(jì)算機(jī)A想要與計(jì)算機(jī)B進(jìn)行通信蛾娶,首先就必須要知道計(jì)算機(jī)B的IP地址,就像打電話一樣均澳,你給別人打電話首先必須得知道別人的電話號(hào)碼吧,電話號(hào)碼都不知道還搞個(gè)毛符衔。但是問題來了找前,讓人們?nèi)ビ洃涍@又臭又長(zhǎng)的IP地址或是電話號(hào)碼,無疑是不人道的判族,當(dāng)然躺盛,這個(gè)小問題也并莫有難倒勤勞勇敢的人民群眾。很快就發(fā)明了通訊錄這個(gè)東西五嫂,用于將人名與電話號(hào)碼聯(lián)系起來颗品。在計(jì)算機(jī)領(lǐng)域也出現(xiàn)了DNS(Domain Name System)肯尺,即域名系統(tǒng),用于將域名解析成對(duì)應(yīng)的IP地址躯枢。本文將介紹DNS協(xié)議的基本理論及其報(bào)文格式则吟,最后給出了用Wireshark抓取DNS報(bào)文的記錄。如果需要了解更為詳細(xì)的內(nèi)容锄蹂,請(qǐng)參考 RFC1034 和 RFC1035氓仲。

一. DNS協(xié)議理論知識(shí)

1.1. 域名結(jié)構(gòu)

域名系統(tǒng)并不像電話號(hào)碼通訊錄那么簡(jiǎn)單,通訊錄主要是單個(gè)個(gè)體在使用得糜,同一個(gè)名字出現(xiàn)在不同個(gè)體的通訊錄里并不會(huì)出現(xiàn)問題敬扛,但域名是群體中所有人都在用的,必須要保持唯一性朝抖。為了達(dá)到唯一性的目的啥箭,因特網(wǎng)在命名的時(shí)候采用了層次結(jié)構(gòu)的命名方法。每一個(gè)域名(本文只討論英文域名)都是一個(gè)標(biāo)號(hào)序列(labels)治宣,用字母(A-Z急侥,a-z,大小寫等價(jià))侮邀、數(shù)字(0-9)和連接符(-)組成坏怪,標(biāo)號(hào)序列總長(zhǎng)度不能超過255個(gè)字符,它由點(diǎn)號(hào)分割成一個(gè)個(gè)的標(biāo)號(hào)(label)绊茧,每個(gè)標(biāo)號(hào)應(yīng)該在63個(gè)字符之內(nèi)铝宵,每個(gè)標(biāo)號(hào)都可以看成一個(gè)層次的域名。級(jí)別最低的域名寫在左邊华畏,級(jí)別最高的域名寫在右邊鹏秋。域名服務(wù)主要是基于UDP實(shí)現(xiàn)的,服務(wù)器的端口號(hào)為53唯绍。

比如:本網(wǎng)站的域名?jocent.me拼岳,由點(diǎn)號(hào)分割成了兩個(gè)域名jocent?和?me枝誊,其中?me是頂級(jí)域名(TLD况芒,Top-Level Domain),?jocent是二級(jí)域名(SLD叶撒,Second Level Domain)绝骚。關(guān)于域名的層次結(jié)構(gòu),請(qǐng)看下面的示意圖祠够。

注意:最開始的域名最后都是帶了點(diǎn)號(hào)的压汪,比如?jocent.me擱以前的話應(yīng)該是?jocent.me.,最后面的點(diǎn)號(hào)表示根域名服務(wù)器古瓤,后來發(fā)現(xiàn)所有的網(wǎng)址都要加上最后的點(diǎn)止剖,就簡(jiǎn)化了寫法腺阳,干脆所有的都不加,但是你在網(wǎng)址后面加上點(diǎn)號(hào)也是可以正常解析的穿香。

1.2. 域名服務(wù)器

有域名結(jié)構(gòu)還不行亭引,還需要有一個(gè)東西去解析域名,手機(jī)通訊錄是由通訊錄軟件解析的皮获,域名需要由遍及全世界的域名服務(wù)器去解析焙蚓,域名服務(wù)器實(shí)際上就是裝有域名系統(tǒng)的主機(jī)。由高向低進(jìn)行層次劃分洒宝,可分為以下幾大類:

根域名服務(wù)器:最高層次的域名服務(wù)器购公,也是最重要的域名服務(wù)器,本地域名服務(wù)器如果解析不了域名就會(huì)向根域名服務(wù)器求助雁歌。全球共有13個(gè)不同IP地址的根域名服務(wù)器宏浩,它們的名稱用一個(gè)英文字母命名,從a一直到m靠瞎。這些服務(wù)器由各種組織控制绘闷,并由 ICANN(互聯(lián)網(wǎng)名稱和數(shù)字地址分配公司)授權(quán),由于每分鐘都要解析的名稱數(shù)量多得令人難以置信较坛,所以實(shí)際上每個(gè)根服務(wù)器都有鏡像服務(wù)器印蔗,每個(gè)根服務(wù)器與它的鏡像服務(wù)器共享同一個(gè) IP 地址,中國(guó)大陸地區(qū)內(nèi)只有6組根服務(wù)器鏡像(F丑勤,I(3臺(tái))华嘹,J,L)法竞。當(dāng)你對(duì)某個(gè)根服務(wù)器發(fā)出請(qǐng)求時(shí)耙厚,請(qǐng)求會(huì)被路由到該根服務(wù)器離你最近的鏡像服務(wù)器。所有的根域名服務(wù)器都知道所有的頂級(jí)域名服務(wù)器的域名和地址岔霸,如果向根服務(wù)器發(fā)出對(duì)?“jocent.me”?的請(qǐng)求薛躬,則根服務(wù)器是不能在它的記錄文件中找到與?“jocent.me”?匹配的記錄。但是它會(huì)找到“me”的頂級(jí)域名記錄呆细,并把負(fù)責(zé)?“me”?地址的頂級(jí)域名服務(wù)器的地址發(fā)回給請(qǐng)求者型宝。

頂級(jí)域名服務(wù)器:負(fù)責(zé)管理在該頂級(jí)域名服務(wù)器下注冊(cè)的二級(jí)域名。當(dāng)根域名服務(wù)器告訴查詢者頂級(jí)域名服務(wù)器地址時(shí)絮爷,查詢者緊接著就會(huì)到頂級(jí)域名服務(wù)器進(jìn)行查詢趴酣。比如還是查詢"jocent.me",根域名服務(wù)器已經(jīng)告訴了查詢者“me”頂級(jí)域名服務(wù)器的地址坑夯,“me”頂級(jí)域名服務(wù)器會(huì)找到?“jocent.me”的域名服務(wù)器的記錄岖寞,域名服務(wù)器檢查其區(qū)域文件,并發(fā)現(xiàn)它有與?“jocent.me”?相關(guān)聯(lián)的區(qū)域文件柜蜈。在此文件的內(nèi)部仗谆,有該主機(jī)的記錄指巡。此記錄說明此主機(jī)所在的 IP 地址,并向請(qǐng)求者返回最終答案隶垮。

權(quán)限域名服務(wù)器:負(fù)責(zé)一個(gè)區(qū)的域名解析工作

本地域名服務(wù)器:當(dāng)一個(gè)主機(jī)發(fā)出DNS查詢請(qǐng)求的時(shí)候厌处,這個(gè)查詢請(qǐng)求首先就是發(fā)給本地域名服務(wù)器的。

1.3. 域名解析過程

域名解析總體可分為兩大步驟岁疼,第一個(gè)步驟是本機(jī)向本地域名服務(wù)器發(fā)出一個(gè)DNS請(qǐng)求報(bào)文阔涉,報(bào)文里攜帶需要查詢的域名;第二個(gè)步驟是本地域名服務(wù)器向本機(jī)回應(yīng)一個(gè)DNS響應(yīng)報(bào)文捷绒,里面包含域名對(duì)應(yīng)的IP地址瑰排。從下面對(duì)jocent.me進(jìn)行域名解析的報(bào)文中可明顯看出這兩大步驟。注意:第二大步驟中采用的是迭代查詢暖侨,其實(shí)是包含了很多小步驟的椭住,詳情見下面的流程分析。

其具體的流程可描述如下:

主機(jī)10.74.36.90先向本地域名服務(wù)器10.74.1.11進(jìn)行遞歸查詢

本地域名服務(wù)器采用迭代查詢字逗,向一個(gè)根域名服務(wù)器進(jìn)行查詢

根域名服務(wù)器告訴本地域名服務(wù)器京郑,下一次應(yīng)該查詢的頂級(jí)域名服務(wù)器?dns.me的IP地址

本地域名服務(wù)器向頂級(jí)域名服務(wù)器?dns.me進(jìn)行查詢

頂級(jí)域名服務(wù)器me告訴本地域名服務(wù)器,下一步查詢權(quán)限服務(wù)器dns.jocent.me?的IP地址

本地域名服務(wù)器向權(quán)限服務(wù)器?dns.jocent.me進(jìn)行查詢

權(quán)限服務(wù)器?dns.jocent.me告訴本地域名服務(wù)器所查詢的主機(jī)的IP地址

本地域名服務(wù)器最后把查詢結(jié)果告訴 10.74.36.90

其中有兩個(gè)概念遞歸查詢和迭代查詢葫掉,其實(shí)在整個(gè)描述的過程中已經(jīng)體現(xiàn)的很明顯些举,這里再說明一下:

遞歸查詢:本機(jī)向本地域名服務(wù)器發(fā)出一次查詢請(qǐng)求,就靜待最終的結(jié)果俭厚。如果本地域名服務(wù)器無法解析户魏,自己會(huì)以DNS客戶機(jī)的身份向其它域名服務(wù)器查詢,直到得到最終的IP地址告訴本機(jī)

迭代查詢:本地域名服務(wù)器向根域名服務(wù)器查詢挪挤,根域名服務(wù)器告訴它下一步到哪里去查詢叼丑,然后它再去查,每次它都是以客戶機(jī)的身份去各個(gè)服務(wù)器查詢

二. DNS協(xié)議報(bào)文格式

2.1 頭部

會(huì)話標(biāo)識(shí)(2字節(jié)):是DNS報(bào)文的ID標(biāo)識(shí)扛门,對(duì)于請(qǐng)求報(bào)文和其對(duì)應(yīng)的應(yīng)答報(bào)文鸠信,這個(gè)字段是相同的,通過它可以區(qū)分DNS應(yīng)答報(bào)文是哪個(gè)請(qǐng)求的響應(yīng)

標(biāo)志(2字節(jié)):

QR(1bit)查詢/響應(yīng)標(biāo)志论寨,0為查詢星立,1為響應(yīng)

opcode(4bit)0表示標(biāo)準(zhǔn)查詢,1表示反向查詢政基,2表示服務(wù)器狀態(tài)請(qǐng)求

AA(1bit)表示授權(quán)回答

TC(1bit)表示可截?cái)嗟?/p>

RD(1bit)表示期望遞歸

RA(1bit)表示可用遞歸

rcode(4bit)表示返回碼贞铣,0表示沒有差錯(cuò),3表示名字差錯(cuò)沮明,2表示服務(wù)器錯(cuò)誤(Server Failure)

數(shù)量字段(總共8字節(jié)):Questions、Answer RRs窍奋、Authority RRs荐健、Additional RRs 各自表示后面的四個(gè)區(qū)域的數(shù)目酱畅。Questions表示查詢問題區(qū)域節(jié)的數(shù)量,Answers表示回答區(qū)域的數(shù)量江场,Authoritative namesversers表示授權(quán)區(qū)域的數(shù)量纺酸,Additional recoreds表示附加區(qū)域的數(shù)量


2.2 正文

Queries區(qū)域1.1 查詢名:長(zhǎng)度不固定,且不使用填充字節(jié)址否,一般該字段表示的就是需要查詢的域名(如果是反向查詢餐蔬,則為IP,反向查詢即由IP地址反查域名)佑附,一般的格式如下圖所示樊诺。1.2 查詢類型:

類型?????????????????????????助記????????????????????????????????符說明

1????????????????????????????????A????????????????????????????????由域名獲得IPv4地址

2????????????????????????????????NS?????????????????????????????查詢域名服務(wù)器

5????????????????????????????????CNAME? ? ? ? ? ? ? ? ? ? ? 查詢規(guī)范名稱

6????????????????????????????????SOA? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?開始授權(quán)

11????????????????????????????????WKS? ? ? ? ? ? ? ? ? ? ? ? ? ? ?熟知服務(wù)

12????????????????????????????????PTR? ? ? ? ? ? ? ? ? ? ? ? ? ?把IP地址轉(zhuǎn)換成域名

13????????????????????????????????HINFO? ? ? ? ? ? ? ? ? ? ? ? ? ?主機(jī)信息

15????????????????????????????????MX? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?郵件交換

28????????????????????????????????AAAA? ? ? ? ? ? ? ? ? ? ? ? 由域名獲得IPv6地址

252????????????????????????????????AXFR? ? ? ? ? ? ? ? ? ? ? ?傳送整個(gè)區(qū)的請(qǐng)求

255????????????????????????????????ANY? ? ? ? ? ? ? ? ? ? ? ? ?對(duì)所有記錄的請(qǐng)求

這里給一個(gè)域名,可用來模擬DNS的查詢類型音同,可以選擇不同的類型词爬,比如A,PTR等玩一下权均,https://www.nslookuptool.com/chs/?

1.3 查詢類:通常為1顿膨,表明是Internet數(shù)據(jù)

資源記錄(RR)區(qū)域(包括回答區(qū)域,授權(quán)區(qū)域和附加區(qū)域)

該區(qū)域有三個(gè)叽赊,但格式都是一樣的恋沃。這三個(gè)區(qū)域分別是:回答區(qū)域,授權(quán)區(qū)域和附加區(qū)域

2.1. 域名(2字節(jié)或不定長(zhǎng)):它的格式和Queries區(qū)域的查詢名字字段是一樣的必指。有一點(diǎn)不同就是芽唇,當(dāng)報(bào)文中域名重復(fù)出現(xiàn)的時(shí)候,該字段使用2個(gè)字節(jié)的偏移指針來表示取劫。比如匆笤,在資源記錄中,域名通常是查詢問題部分的域名的重復(fù)谱邪,因此用2字節(jié)的指針來表示炮捧,具體格式是最前面的兩個(gè)高位是 11,用于識(shí)別指針惦银。其余的14位從DNS報(bào)文的開始處計(jì)數(shù)(從0開始)咆课,指出該報(bào)文中的相應(yīng)字節(jié)數(shù)。一個(gè)典型的例子扯俱,C00C(1100000000001100书蚪,12正好是頭部的長(zhǎng)度,其正好指向Queries區(qū)域的查詢名字字段)迅栅。

2.2 查詢類型:表明資源紀(jì)錄的類型殊校,見1.2節(jié)的查詢類型表格所示?

2.3 查詢類:對(duì)于Internet信息,總是IN

2.4 生存時(shí)間(TTL):以秒為單位读存,表示的是資源記錄的生命周期为流,一般用于當(dāng)?shù)刂方馕龀绦蛉〕鲑Y源記錄后決定保存及使用緩存數(shù)據(jù)的時(shí)間呕屎,它同時(shí)也可以表明該資源記錄的穩(wěn)定程度,極為穩(wěn)定的信息會(huì)被分配一個(gè)很大的值(比如86400敬察,這是一天的秒數(shù))秀睛。

2.5. 資源數(shù)據(jù):該字段是一個(gè)可變長(zhǎng)字段,表示按照查詢段的要求返回的相關(guān)資源記錄的數(shù)據(jù)莲祸□灏玻可以是Address(表明查詢報(bào)文想要的回應(yīng)是一個(gè)IP地址)或者CNAME(表明查詢報(bào)文想要的回應(yīng)是一個(gè)規(guī)范主機(jī)名)等。

三. Wireshark分析DNS協(xié)議

下面給出wireshark抓包的記錄锐帜,感興趣的可以根據(jù)上面介紹的協(xié)議報(bào)文格式手動(dòng)解析一下田盈,相信會(huì)有很大收獲。

3.1 請(qǐng)求報(bào)文

3.2 響應(yīng)報(bào)文

DNS相關(guān)的命令小貼士:

Windows環(huán)境下清空DNS緩存的命令是?ipconfig/flushdns也可以通過重啟DNS client 和 DHCP client 兩項(xiàng)服務(wù)清空DNS緩存

Windows環(huán)境下可以用命令ipconfig /displaydns來查看DNS緩存的內(nèi)容

nslookup?命令可以用來查看域名對(duì)應(yīng)的IP地址抹估,比如?nslookup jocent.me

本文撰寫過程中參考了以下幾篇博文的內(nèi)容缠黍,現(xiàn)列出鏈接如下:

http://www.iprotocolsec.com/2012/01/13/%E4%BD%BF%E7%94%A8wireshark%E5%AD%A6%E4%B9%A0dns%E5%8D%8F%E8%AE%AE%E5%8F%8Adns%E6%AC%BA%E9%AA%97%E5%8E%9F%E7%90%86/

http://blog.csdn.net/yipiankongbai/article/details/25031461

http://blog.chinaunix.net/uid-24875436-id-3088461.html

??禁用安全模式

Outlook關(guān)閉時(shí)最小化插件的實(shí)現(xiàn)??

Categories:?OTHER

Tags:?,?網(wǎng)絡(luò)

3?Comments

Pingback:?自己動(dòng)手實(shí)現(xiàn)DNS協(xié)議 – JOCENT BLOG

Pingback:?(Linux 高性能服務(wù)器) – TCP/IP 協(xié)議 | Ddayzzz - 展望未來,腳踏實(shí)地

?TREE SMITH

2018年9月13日 11:26

關(guān)于 資源記錄 區(qū)域的內(nèi)容药蜻,我發(fā)現(xiàn)某些 DNS 服務(wù)器返回的報(bào)文中瓷式,即使不是一個(gè)完整的域名,也會(huì)用一個(gè)偏移指針來代替重復(fù)字段语泽,比如: com 字段贸典,當(dāng)然,目前也只發(fā)現(xiàn)這一個(gè)踱卵。

Comments are closed.

HOME


ABOUT

? 2020 Jocent Zhou.

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末廊驼,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子惋砂,更是在濱河造成了極大的恐慌妒挎,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,496評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件西饵,死亡現(xiàn)場(chǎng)離奇詭異酝掩,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)眷柔,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,187評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門期虾,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人驯嘱,你說我怎么就攤上這事镶苞。” “怎么了鞠评?”我有些...
    開封第一講書人閱讀 157,091評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵茂蚓,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我,道長(zhǎng)煌贴,這世上最難降的妖魔是什么御板? 我笑而不...
    開封第一講書人閱讀 56,458評(píng)論 1 283
  • 正文 為了忘掉前任锥忿,我火速辦了婚禮牛郑,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘敬鬓。我一直安慰自己淹朋,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,542評(píng)論 6 385
  • 文/花漫 我一把揭開白布钉答。 她就那樣靜靜地躺著础芍,像睡著了一般。 火紅的嫁衣襯著肌膚如雪数尿。 梳的紋絲不亂的頭發(fā)上仑性,一...
    開封第一講書人閱讀 49,802評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音右蹦,去河邊找鬼诊杆。 笑死,一個(gè)胖子當(dāng)著我的面吹牛何陆,可吹牛的內(nèi)容都是我干的晨汹。 我是一名探鬼主播,決...
    沈念sama閱讀 38,945評(píng)論 3 407
  • 文/蒼蘭香墨 我猛地睜開眼贷盲,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼淘这!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起巩剖,我...
    開封第一講書人閱讀 37,709評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤铝穷,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后佳魔,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體曙聂,經(jīng)...
    沈念sama閱讀 44,158評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,502評(píng)論 2 327
  • 正文 我和宋清朗相戀三年吃引,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了筹陵。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,637評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡镊尺,死狀恐怖朦佩,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情庐氮,我是刑警寧澤语稠,帶...
    沈念sama閱讀 34,300評(píng)論 4 329
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響仙畦,放射性物質(zhì)發(fā)生泄漏输涕。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,911評(píng)論 3 313
  • 文/蒙蒙 一慨畸、第九天 我趴在偏房一處隱蔽的房頂上張望莱坎。 院中可真熱鬧,春花似錦寸士、人聲如沸檐什。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,744評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽乃正。三九已至,卻和暖如春婶博,著一層夾襖步出監(jiān)牢的瞬間瓮具,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,982評(píng)論 1 266
  • 我被黑心中介騙來泰國(guó)打工凡人, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留名党,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,344評(píng)論 2 360
  • 正文 我出身青樓划栓,卻偏偏與公主長(zhǎng)得像兑巾,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子忠荞,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,500評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容