深刻理解DNS解析過程

要想深刻理解DNS解析的過程,咱們須要知道一些底層的東西和一些周邊的知識,本篇文章會圍繞這些來構建。

名詞解釋

前置知識

DNS

域名系統DNS(Domain Name System)是因特網使用的命名系統,用來把便於人們使用的機器名字轉換爲IP地址。DNS屬於應用層協議,是基於UDP協議的。segmentfault

hosts文件

hosts文件ARPANET時代的解決方案,那時候只有數百臺計算機,一個hosts就能知足需求。安全

域名(Domain)

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

行了,該知道的儲備知識咱們知道的差很少了,接下來就看看關鍵的流程吧。

DNS查詢步驟

假設一臺主機想知道y.abc.com這個域名的IP地址,那麼整個的查詢過程以下:

  1. 主機先向其本地域名服務器進行遞歸查詢
  2. 本地域名服務器採用迭代的查詢,它先向根域名服務器查詢
  3. 根域名服務器告訴本地域名服務器,下一次應該查詢的頂級域名服務器的IP地址。
  4. 本地域名服務器向頂級域名服務器發起查詢。
  5. 頂級域名服務器告訴本地域名服務器,下一次應查詢的權限域名服務器IP地址
  6. 本地域名服務器向權限域名服務器發起查詢。
  7. 權限域名服務器告訴本地域名服務器所查詢的IP地址。
  8. 本地域名服務器把查詢結果告訴主機

給這個過程作個圖示,就是這樣的
image.png

整個的DNS查詢過程就是這樣的。結合前面的一些前置知識,你會感受整個過程更簡單。

相關文章
相關標籤/搜索