淺析DNS解析過程

前言

爲了瞭解DNS解析的整個過程,可是我查看了一些博文,但都不是我想要的結果,要麼講的很淺顯,要麼就是那種專門作計算機網絡才能看得懂得文章,所以爲了不之後本身忘掉,把此次的理解總結一下。緩存

迭代查詢和遞歸查詢

DNS大體解析過程以下:服務器

首先我先說一下我對DNS遞歸查詢以及迭代查詢的理解:DNS的解析過程默認是採用遞歸查詢,也就是一層一層的傳遞下去,可是若是遇到某個服務器的RA字段(表示是否支持遞歸查詢)爲0,或者DNS域名查詢請求中RD字段(表示是否指望使用遞歸查詢)爲0時,此時將會採用迭代查詢,迭代查詢就是每次查詢到的結果不是由你遞交請求的服務器代你繼續查詢,而是將查詢結果返回給當前發出請求的機器。上圖客戶端將域名查詢請求交給本地DNS服務器以後是由本地DNS服務器代替客戶端繼續查詢,而不是將根域名服務器的地址返回給客戶端,再讓客戶端請求,所以該階段就是遞歸查詢;本地DNS服務器後面的過程就是迭代查詢過程。

從一個域名到一個IP地址到底發生了什麼

當客戶端須要經過一個域名請求資源時,必須知道該域名對應的IP地址是什麼;爲何必定要知道請求目的地的IP才能發送請求?由於咱們現有的網絡幾乎都是基於TCP/IP協議的,而TCP/IP協議是基於IP地址的進行通信的。假設如今客戶端要訪問www.google.com,發生的DNS解析過程大體以下:網絡

  1. 客戶端首先查詢本身的緩存中是否有該域名的訪問記錄,若是有的話直接訪問對應的IP地址,不然進行下一步。
  2. 在緩存沒有查詢到要訪問域名的記錄,則去查詢主機下面的host文件(記錄一些經常使用網址域名對應的ip地址的一個文件)是否有記錄,若是有的話直接訪問對應的IP地址,不然進行下一步。
  3. host文件中也未找到,則像本地配置的DNS服務器進行查詢(這裏只以首選DNS服務器爲例,備用DNS服務的過程基本相同),本地DNS服務器接收到域名解析請求以後查詢本身的緩存是否有該域名的記錄,若是有直接返回域名對應的IP地址;若是沒有,則去查詢根域名服務器(這裏本地DNS域名服務器採用迭代查詢,遞歸查詢的過程更簡單一層一層查到底直至返回結果)。
  4. 根域名服務器收到該域名解析請求後,查詢該域名對應的頂級域名服務器,將頂級域名服務的IP地址返回給本地DNS服務器。
  5. 本地DNS服務器將結果緩存,同時向該域名的頂級域名服務器發出請求;頂級域名服務器收到請求後,首先查看本身的緩存是否有該域名的記錄,若是有則直接返回,不然將查詢該域名的二級域名服務器,並將IP地址返回給本地DNS域名服務器。
  6. 後面的查詢過程都相似於第五步直至返回最終結果,將結果緩存並將IP地址返回給客戶端。
  7. 客戶端訪問IP地址並將查詢結果進行緩存。

以上僅我的理解,若是有錯,歡迎各位大佬指出。google

相關文章
相關標籤/搜索