DNS解析流程

寫不好程式碼的格子襯衫發表於2019-01-05

當瀏覽器輸入一個url的時候,會發生什麼事情呢?第一步,當然事DNS解析啦,下面來剖析一下DNS解析的過程。

what

首先,什麼事DNS?

DNS 即 Domain Name System,字面上理解,其實就是一個域名的名字系統,用來管理域名:ip的對應關係。通俗來講,就是一個鍵值對的列表。

域名

DNS是域名:ip的對應關係,那麼我們來看一下域名的結構,舉個例子,首先有一個域名:tlab.cloud.tencent.com,我們看到的最後的com就是頂級域名,頂級域名往前就是二、三……級域名,所以tencent就是二級域名,clloud就是三級域名,以此類推。

DNS解析

那麼,在瀏覽器輸入域名的時候,DNS是怎樣解析的呢?分以下幾步:

  1. 本地hosts檔案
  2. 本地DNS快取
  3. DNS伺服器快取
  4. DNS伺服器遞迴查詢

本地hosts檔案

修改hosts檔案對於開發者來說並不陌生,這樣我們可以不改變線上域名的配置,然後直接通過域名訪問我們想要訪問的機器。

本地DNS快取

如果hosts檔案沒有的話,那麼DNS就會檢視本地的DNS快取,如果有的話就直接返回對應的ip即可。下面是我本地對tlab.cloud.tencent.com的DNS解析,因為之前已經解析過來,所以快取裡就有對應的ip地址:193.112.230.97。

DNS解析流程

DNS伺服器快取

如果是第一次訪問某個域名的話,那本地快取肯定是沒有的。

所以就會到DNS伺服器查詢,連結網路之後,我們的電腦就會有對應的DNS伺服器的地址,下圖:

DNS解析流程

這個時候,由於前兩個都走不通,這時就會去詢問DNS伺服器:請問tlab.cloud.tencent.com對應的ip是多少呢?

這個時候,DNS伺服器首先是檢視自己的快取,如果有的話,就可以直接返回。

DNS伺服器遞迴查詢

如果DNS伺服器也沒有快取的話,那就要進行遞迴查詢了。

首先,我們先dig math tlab.cloud.tencent.com 可以看到answer

這裡我們會看到域名最後加了一個. 其實所有域名後面其實都是有.的,即.root,表示根域名,因為大家都一樣,所以省略了。

tlab.cloud.tencent.com. 600 IN A 193.112.230.97
複製程式碼

DNS解析流程

繼續,我們來看以下DNS伺服器是怎麼遞迴查詢的。

  1. 詢問根域名,獲取頂級域名 .com 的 NS(Name Server) 和 A(Address),NS為頂級域名的名字,A即NS對應的ip地址
  2. 詢問頂級域名,獲取二級域名 .tencnet.com 的NS 和 A
  3. 詢問二級域名,獲取三級域名 .cloud.tencent.com 的NS 和 A
  4. 詢問三級域名,獲取四級域名 .tlab.cloud.tencent.com 的NS 和 A
  5. 最後,將tlab.cloud.tencent.com的ip地址返回給使用者,並且快取
  6. 使用者獲取到真正的ip地址,並且快取

寫在最後

DNS快取是我們每天都會用到的,當然,我們也不會每天都用到,瞭解之後也有助於我們更加熟悉開發流程。

相關文章