1. 程式人生 > 其它 >DNS解析過程原理

DNS解析過程原理

什麼是DNS

我們知道,每個網站都有一個域名和一個以上的IP地址,當我們想瀏覽某個網站的時候,只需要在瀏覽器輸入該網址的域名就可以訪問了。要是沒有域名能不能實現訪問網站呢?答案當然是可以啦,不過你每次都需要記住訪問的網址的IP地址,比如,你想用百度,每次都需要在瀏覽器打入112.80.248.74,是不是很令人崩潰啊哈哈哈哈。那麼,網址域名和IP地址之間是如何實現一一對映的呢?這時候DNS就該閃亮登場的了。

DNS的全稱是domain name system,即域名系統。DNS是因特網上作為域名和IP地址相互對映的一個分散式資料庫,能夠使使用者更方便的去訪問網際網路而不用去記住能夠被機器直接讀取的IP地址。通過域名,最終得到該域名對應的IP地址的過程則是域名解析的過程。

DNS如何解析

1.遞迴查詢

某天,客戶端想要訪問XXX網站,但是,客戶端並不知道XXX網站的IP地址。於是,展開了如下對話
客戶端:“本地DNS伺服器大佬,求問XXX的IP地址是多少?”
本地DNS伺服器:“不好意思,我不知道,但是根域名伺服器可能會知道,我替去問他吧”
本地DNS伺服器:“根域名伺服器大佬,求問XXX的IP地址是多少?”
根域名伺服器:“不好意思,我不也知道,但是A頂級域名伺服器可能會知道,我替你去問他吧”
根域名伺服器:“A頂級域名伺服器,求問XXX的IP地址是多少?”
A頂級域名伺服器:“不好意思,我不也知道,但是B域名伺服器可能會知道,我替你去問他吧”
A頂級域名伺服器:“B域名伺服器,求問XXX的IP地址是多少?”
B域名伺服器:“A頂級域名伺服器,查到XXX的IP地址是192.168.168.6”
A頂級域名伺服器:“根域名伺服器,查到XXX的IP地址是192.168.168.6”
根域名伺服器:“本地DNS伺服器,查到XXX的IP地址是192.168.168.6”
本地DNS伺服器: “客戶端,查到XXX的IP地址是192.168.168.6”
客戶端:“謝謝各位大佬,XXX的IP地址是192.168.168.6,我可以和他愉快的通訊了”

2.迭代查詢

客戶端:“本地DNS伺服器大佬,求問XXX的IP地址是多少?”
本地DNS伺服器:“不好意思,我不知道,但是根域名伺服器可能會知道,你去問他吧”,本地DNS伺服器說完,並把根域名伺服器地址發給客戶端。
客戶端:“根域名伺服器大佬,求問XXX的IP地址是多少?”
根域名伺服器:“不好意思,我不也知道,但是A頂級域名伺服器可能會知道,你去問他吧”,根域名伺服器說完,並把A頂級域名伺服器地址發給客戶端。
客戶端只能又跑去問A頂級域名伺服器了。
客戶端:“A頂級域名伺服器大佬,求問XXX的IP地址是多少?”
A頂級域名伺服器:“不好意思,我不也知道,但是B域名伺服器可能會知道,你去問他吧”,A頂級域名伺服器說完,並把B域名伺服器地址發給客戶端。
客戶端非常無奈,只能又跑去問B域名伺服器了。
客戶端:“B域名伺服器大佬,求問XXX的IP地址是多少?”
B域名伺服器:“客戶端同學,查到XXX的IP地址是192.168.168.6”。
客戶端:“謝謝B域名伺服器大佬,XXX的IP地址是192.168.168.6,我可以和他愉快的通訊了”
就這樣,客戶端在詢問了一大圈之後,終於知道了XXX的IP地址了。

總結

在上面,我們知道了DNS的兩種查詢方法,但實際上,在DNS查詢過程中,客戶端和伺服器也都會加入快取機制,這樣可以減少查詢的次數,加快域名解析過程。當我們在瀏覽器中輸入一個網站時,會發生如下過程:
1、瀏覽器中輸入想要訪問的網站的域名,作業系統會先檢查本地的hosts檔案是否有這個網址對映關係,如果有,就先呼叫這個IP地址對映,完成域名解析。
2、如果hosts裡沒有這個域名的對映,客戶端會向本地DNS伺服器發起查詢。本地DNS伺服器收到查詢時,如果要查詢的域名包含在本地配置區域資源中,則返回解析結果給客戶機,完成域名解析。
3、如果本地DNS伺服器本地區域檔案與快取解析都失效,則根據本地DNS伺服器的設定,採用遞迴或者迭代查詢,直至解析完成。