要想深入理解DNS解析的過程,我們需要知道一些底層的東西和一些周邊的知識,本篇文章會圍繞這些來構(gòu)建。
名詞解釋
前置知識
DNS
域名系統(tǒng)DNS(Domain Name System)是因特網(wǎng)使用的命名系統(tǒng),用來把便于人們使用的機器名字轉(zhuǎn)換為IP地址。DNS屬于應(yīng)用層協(xié)議,是基于UDP協(xié)議的。
hosts文件
hosts文件是ARPANET時代的解決方案,那時候只有數(shù)百臺計算機,一個hosts就能滿足需求。
域名(Domain)
mail.ccav.com
---- ---- ----
三級域名 二級域名 頂級域名
域名的層級是按照上面這么劃分的,每級域名長度不超過63個字符,不區(qū)分大小寫,只能使用數(shù)字字母和-。一個完整的域名不超過255個字符。
域名服務(wù)器劃分
了解域名服務(wù)器劃分之后,就會對DNS解析的過程大概有些了解。域名服務(wù)器按照層級分為:
本地域名服務(wù)器
本地域名服務(wù)器相當(dāng)于一個班主任,你有點啥事都找他。當(dāng)一個主機發(fā)出DNS查詢的時候,這個查詢的請求就會發(fā)送到本地域名服務(wù)器。
根域名服務(wù)器
根域名服務(wù)器是最高層次的域名服務(wù),是校長,只負(fù)責(zé)規(guī)劃大方向。他知道所有頂級域名服務(wù)器的域名和IP地址。不管那個本地域名服務(wù)器若自己不能不能解析,那首先請求的就是根域名服務(wù)器。根域名服務(wù)器不會把待查詢的域名直接轉(zhuǎn)換成IP,而是告訴本地域名服務(wù)器下一步應(yīng)該找哪一個頂級域名服務(wù)器進行查詢。
頂級域名服務(wù)器
頂級域名服務(wù)器是負(fù)責(zé)各個方向的副校長,有負(fù)責(zé)安全的,有負(fù)責(zé)教學(xué)的。他負(fù)責(zé)管理該頂級域名下的所有二級域名,當(dāng)收到DNS查詢請求后就會給出響應(yīng)的應(yīng)答,可能是最終的結(jié)果,也可能是下一步應(yīng)該找到的域名服務(wù)器的IP地址。
權(quán)限域名服務(wù)器
權(quán)限域名服務(wù)器就是負(fù)責(zé)一個區(qū)的域名服務(wù)器,是基層干活的,比如宿管,各科老師,他負(fù)責(zé)一個更小的區(qū)域。當(dāng)一個權(quán)限服務(wù)還不能給出最后的回答時,就會告訴查詢請求的DNS客戶,下一步應(yīng)該找哪個權(quán)限域名服務(wù)器。
域名查詢的兩種方式
這里只是通俗的講兩種查詢的方式,關(guān)于如何更好的理解并記住這種兩種方式,可以看這篇文章《怎么更好的理解DNS的迭代查詢與遞歸查詢》
遞歸查詢
遞歸查詢,就是你找我要一個域名的IP地址,但是我不知道,那我去幫你去向知道的人問這個IP地址。舉個例子就是,你問你班主任怎么做番茄炒雞蛋,你班主任不知道,但是你班主任去問了食堂廚師,然后告訴你。這就叫遞歸查詢。
從host到本地域名服務(wù)器一般是用的遞歸查詢。
迭代查詢
迭代查詢就是,你找我要一個域名的IP地址,我也不知道這個IP地址,但是我知道誰知道,我告訴你去找誰問。舉個例子就是,你們班主任到了食堂隨便拉了個人問怎么做番茄炒雞蛋,那個人說,我只是個賣飯的,我不知道,但是我知道A君是在后廚的,你可以去問A君。然后你班主任就去問A君了。吶,這就叫迭代查詢。
從本地域名服務(wù)器到根域名服務(wù)器一般是用的迭代查詢。
行了,該知道的儲備知識我們知道的差不多了,接下來就看看關(guān)鍵的流程吧。
DNS查詢步驟
假設(shè)一臺主機想知道y.abc.com這個域名的IP地址,那么整個的查詢過程如下:
- 主機先向其本地域名服務(wù)器進行遞歸查詢
- 本地域名服務(wù)器采用迭代的查詢,它先向根域名服務(wù)器查詢
- 根域名服務(wù)器告訴本地域名服務(wù)器,下一次應(yīng)該查詢的頂級域名服務(wù)器的IP地址。
- 本地域名服務(wù)器向頂級域名服務(wù)器發(fā)起查詢。
- 頂級域名服務(wù)器告訴本地域名服務(wù)器,下一次應(yīng)查詢的權(quán)限域名服務(wù)器IP地址
- 本地域名服務(wù)器向權(quán)限域名服務(wù)器發(fā)起查詢。
- 權(quán)限域名服務(wù)器告訴本地域名服務(wù)器所查詢的IP地址。
- 本地域名服務(wù)器把查詢結(jié)果告訴主機
給這個過程做個圖示,就是這樣的
整個的DNS查詢過程就是這樣的。結(jié)合前面的一些前置知識,你會感覺整個過程更簡單
文章來源:https://segmentfault.com/a/1190000023694985






