1. 程式人生 > >簡述DNS進行域名解析的原理

簡述DNS進行域名解析的原理

DNS域名解析是網際網路上非常重要的一項服務,上網衝浪(還有人在用這個詞嗎?)伴隨著大量DNS服務來支撐,而對於網站運營來說,DNS域名解析的穩定可靠,意味著更多使用者的喜歡,更好的SEO效果和更大的訪問流量。我們先了解一下什麼是DNS:

DNS,就是Domain Name System的縮寫,翻譯過來就是域名系統,是網際網路上作為域名和IP地址相互對映的一個分散式資料庫。DNS能夠使使用者更方便的訪問網際網路,而不用去記住能夠被機器直接讀取的IP數串。通過域名,最終得到該域名對應的IP地址的過程叫做域名解析(或主機名解析)。

下面這張圖,詳細說明了一個DNS域名解析的全過程:

DNS域名解析的全過程

下面來詳細解釋DNS域名解析的過程:

網路客戶端就是我們平常使用的電腦,開啟瀏覽器,輸入一個域名。比如輸入www.163.com,這時,你使用的電腦會發出一個DNS請求到本地DNS伺服器。本地DNS伺服器一般都是你的網路接入伺服器商提供,比如中國電信,中國移動。

查詢www.163.com的DNS請求到達本地DNS伺服器之後,本地DNS伺服器會首先查詢它的快取記錄,如果快取中有此條記錄,就可以直接返回結果。如果沒有,本地DNS伺服器還要向DNS根伺服器進行查詢。

根DNS伺服器沒有記錄具體的域名和IP地址的對應關係,而是告訴本地DNS伺服器,你可以到域伺服器上去繼續查詢,並給出域伺服器的地址。

本地DNS伺服器繼續向域伺服器發出請求,在這個例子中,請求的物件是.com域伺服器。.com域伺服器收到請求之後,也不會直接返回域名和IP地址的對應關係,而是告訴本地DNS伺服器,你的域名的解析伺服器的地址。

最後,本地DNS伺服器向域名的解析伺服器發出請求,這時就能收到一個域名和IP地址對應關係,本地DNS伺服器不僅要把IP地址返回給使用者電腦,還要把這個對應關係儲存在快取中,以備下次別的使用者查詢時,可以直接返回結果,加快網路訪問。

關於DNS解析的TTL引數:

我們在配置DNS解析的時候,有一個引數常常容易忽略,就是DNS解析的TTL引數,Time To Live。TTL這個引數告訴本地DNS伺服器,域名快取的最長時間。用阿里雲解析來舉例,阿里雲解析預設的TTL是10分鐘,10分鐘的含義是,本地DNS伺服器對於域名的快取時間是10分鐘,10分鐘之後,本地DNS伺服器就會刪除這條記錄,刪除之後,如果有使用者訪問這個域名,就要重複一遍上述複雜的流程。

其實,如果網站已經進入穩定發展的狀態,不會輕易更換IP地址,我們完全可以將TTL設定到協議最大值,即24小時。帶來的好處是,讓域名解析記錄能夠更長時間的存放在本地DNS伺服器中,以加快所有使用者的訪問。設定成24小時,其實,還解決了Googlebot在全球部署的伺服器抓取網站可能帶來的問題,這個問題麥新傑專門有一篇博文,請參考:“Googlebot無法訪問您的站點”問題理解和處理方法

阿里雲之所以只將TTL設定成10分鐘,是為了讓域名解析更快生效而已。因為之前的解析會在最長10分鐘之後失效(本地DNS伺服器將對應的解析條目刪除),然後新的解析生效。如果是24小時,這個生效的時間最長就是24小時,甚至更長(本地DNS伺服器要有使用者請求,才會發起查詢)。