DNS 過程,步驟如下:
查看瀏覽器內部緩存
檢測域名是否存在于瀏覽器緩存中,如果有緩存直接使用,沒有則下一步。打開chrome:/.NET-internals/#dns 即可查看本機瀏覽器的 DNS 緩存。
系統緩存
瀏覽器會調用一個類似gethostbyname 的庫函數,此函數會先去檢測本地 hosts 文件,查看是否有對應 ip。
PS: 這里有一個點,localhost 默認 ip 是 172.0.0.1,這是一個回路段,也叫換回接口。也就是不會發往服務器,是直接在本地打開的。
路由器緩存、ISP 緩存
如果瀏覽器和系統緩存都沒有,系統的 gethostname 函數就會向 DNS 服務器發送請求。而網絡服務一般都會先經過路由器以及網絡服務商(電信),所以會先查詢路由器緩存,然后再查詢 ISP 的 DNS 緩存。
本地 DNS 服務器
通常為自己計算機搭建的小型 DNS 服務器,自我使用,屬于 DNS 優化的一部分。
域名服務器
到此處的過程為:根域服務器(.) -> 頂級域名服務器(eg: .com,.org)->
主域名服務器(eg: http://http://atguigu.com)
如果域名正常,應該就會返回 IP 地址,如果沒有瀏覽器就會提示找不到服務器地址。
DNS 優化
DNS 查詢的過程經歷了很多的步驟,如果每次都如此,是不是會耗費太多的時間,資源。所以我們應該盡早地返回真實的 IP 地址,減少查詢過程,也就是 DNS 緩存。
瀏覽器獲取到 IP 地址后,一般都會加到瀏覽器的緩存中,本地的 DNS 緩存服務器,也可以去記錄。另外,每天幾億網名的訪問需求,一秒鐘幾千萬的請求域名服務器如何滿足?就是 DNS 負載均衡。
通常我們的網站應用各種云服務,或者各種服務商提供類似的服務,由他們去幫我們處理這些問題。DNS 系統根據每臺機器的負載量,以及地理位置的限制
(長距離的傳輸效率)等等,去提供高效快速的 DNS 解析服務。