要想深刻理解DNS解析的過程,咱們須要知道一些底層的東西和一些周邊的知識,本篇文章會圍繞這些來構建。
域名系統DNS(Domain Name System)
是因特網使用的命名系統,用來把便於人們使用的機器名字轉換爲IP地址。DNS
屬於應用層協議,是基於UDP
協議的。segmentfault
hosts文件
是ARPANET
時代的解決方案,那時候只有數百臺計算機,一個hosts就能知足需求。安全
mail.ccav.com ---- ---- ---- 三級域名 二級域名 頂級域名
域名的層級是按照上面這麼劃分的,每級域名長度不超過63個字符,不區分大小寫,只能使用數字字母和-。一個完整的域名不超過255個字符。服務器
瞭解域名服務器劃分以後,就會對DNS解析的過程大概有些瞭解。域名服務器按照層級分爲:spa
本地域名服務器至關於一個班主任,你有點啥事都找他。當一個主機發出DNS查詢的時候,這個查詢的請求就會發送到本地域名服務器。code
根域名服務器是最高層次的域名服務,是校長,只負責規劃大方向。他知道全部頂級域名服務器的域名和IP地址。無論那個本地域名服務器若本身不能不能解析,那首先請求的就是根域名服務器。根域名服務器不會把待查詢的域名直接轉換成IP,而是告訴本地域名服務器下一步應該找哪個頂級域名服務器進行查詢。blog
頂級域名服務器是負責各個方向的副校長,有負責安全的,有負責教學的。他負責管理該頂級域名下的全部二級域名,當收到DNS查詢請求後就會給出響應的應答,多是最終的結果,也多是下一步應該找到的域名服務器的IP地址。遞歸
權限域名服務器就是負責一個區的域名服務器,是基層幹活的,好比宿管,各科老師,他負責一個更小的區域。當一個權限服務還不能給出最後的回答時,就會告訴查詢請求的DNS客戶,下一步應該找哪一個權限域名服務器。get
這裏只是通俗的講兩種查詢的方式,關於如何更好的理解並記住這種兩種方式,能夠看這篇文章 《怎麼更好的理解DNS的迭代查詢與遞歸查詢》
遞歸查詢,就是你找我要一個域名的IP地址,可是我不知道,那我去幫你去向知道的人問這個IP地址。舉個例子就是,你問你班主任怎麼作番茄炒雞蛋,你班主任不知道,可是你班主任去問了食堂廚師,而後告訴你。這就叫遞歸查詢。
從host到本地域名服務器通常是用的遞歸查詢。域名
迭代查詢就是,你找我要一個域名的IP地址,我也不知道這個IP地址,可是我知道誰知道,我告訴你去找誰問。舉個例子就是,大家班主任到了食堂隨便拉了我的問怎麼作番茄炒雞蛋,那我的說,我只是個賣飯的,我不知道,可是我知道A君是在後廚的,你能夠去問A君。而後你班主任就去問A君了。吶,這就叫迭代查詢。
從本地域名服務器到根域名服務器通常是用的迭代查詢。it
行了,該知道的儲備知識咱們知道的差很少了,接下來就看看關鍵的流程吧。
假設一臺主機想知道y.abc.com這個域名的IP地址,那麼整個的查詢過程以下:
給這個過程作個圖示,就是這樣的
整個的DNS查詢過程就是這樣的。結合前面的一些前置知識,你會感受整個過程更簡單。