1、域名解析機制瀏覽器
當咱們在瀏覽器中輸入www.abc.com時,DNS解析將會有將近10個步驟,這個過程大致大致由一張圖能夠表示:(迭代域名解析)緩存
瀏覽器會檢查緩存中有沒有這個域名對應的解析過的IP地址,若是緩存中有,這個解析過程就結束。瀏覽器緩存域名也是有限制的,不只瀏覽器緩存大小有限制,並且緩存的時間也有限制,一般狀況下爲幾分鐘到幾小時不等,域名被緩存的時間限制能夠經過TTL屬性來設置。服務器
若是用戶瀏覽器緩存中沒有數據,瀏覽器會查找操做系統緩存中是否有這個域名對應的DNS解析結果。其實操做系統也有一個域名解析的過程,在 Windows中能夠經過C:\Windows\System32\drivers\etc\hosts文件來設置,在Linux中能夠經過/etc /hosts文件來設置,用戶能夠將任何域名解析到任何可以訪問的IP地址。例如,咱們在測試時能夠將一個域名解析到一臺測試服務器上,這樣不用修改任何代碼就能測試到單獨服務器上的代碼的業務邏輯是否正確。正是由於有這種本地DNS解析的規程,因此有黑客就可能經過修改用戶的域名來把特定的域名解析到他指定的IP地址上,致使這些域名被劫持。網絡
前兩個過程沒法解析時,就要用到咱們網絡配置中的"DNS服務器地址"了。操做系統會把這個域名發送給這個LDNS,也就是本地區的域名服務器。這個DNS一般都提供給用戶本地互聯網接入的一個DNS解析服務,例如用戶是在學校接入互聯網,那麼用戶的DNS服務器確定在學校;若是用戶是在小區接入互聯網,那麼用戶的DNS就是再提供接入互聯網的應用提供商,即電信或聯通,也就是一般說的SPA,那麼這個DNS一般也會在用戶所在城市的某個角落,不會很遠。Windows環境下經過命令行輸入ipconfig,Linux環境下經過cat /etc/resolv.conf就能夠查詢配置的DNS服務器了。這個專門的域名解析服務器性能都會很好,它們通常都會緩存域名解析結果,固然緩存時間是受到域名的失效時間控制的。大約80%的域名解析到這裏就結束了,因此LDNS主要承擔了域名的解析工做。負載均衡
若是LDNS仍然沒有命中,就直接到根域名服務器(Root Server)請求解析。性能
根域名服務器返回給本地域名服務器一個所查詢的主域名服務器(gTLD Server)地址。gTLD是通用頂級域名服務器,如.com、.cn、.org等,全球只有13臺左右。測試
本地域名服務器LDNS再向上一步返回的gTLD服務器發送請求。spa
接受請求的gTLD服務器查找並返回此域名對應的權限域名服務器(Name Server)的地址,這個Name Server一般就是用戶註冊的域名服務器,例如用戶在某個域名服務提供商申請的域名,那麼這個域名解析任務就由這個域名提供商的服務器來完成操作系統
權限域名服務器會查詢存儲的域名和IP的映射關係表,在正常狀況下都根據域名獲得目標IP地址,連同一個TTL值返回給DNS Server域名服務器.net
返回該域名對應的IP和TTL值,LDNS會緩存這個域名和IP的對應關係,緩存時間由TTL值控制
把解析的結果返回給用戶,用戶根據TTL值緩存在本地系統緩存中,域名解析過程結束
在實際的DNS解析過程當中,可能還不止這10步,如Name Server可能有不少級,或者有一個GTM來負載均衡控制,這都有可能會影響域名解析過程。
2、域名解析記錄
A記錄,用來指定域名對應的IP地址。A記錄能夠將多個域名解析到一個IP地址,反之不成立。
MX記錄,表示Mail Exchange,就是能夠將某個域名下的郵件服務器指向本身的Mail Server。
CHAME記錄,全稱Canonical Name(別名解析)。就是能夠爲一個域名設置一個或多個別名。
NS記錄,爲某個域名指定DNS解析服務器。
TXT記錄,爲某個主機名或者域名設置說明。
AAAA記錄,將域名解析到IPV6地址的DNS記錄。
3、跟蹤域名解析過程
在Linux和window均可以用nslookup命令來查詢域名的解析結果,以下圖:
在Linux系統還能夠用dig命令查詢DNS的解析過程,以下圖:(dig經常使用命令)