DNS域名解析過程

圖1-10是DNS域名解析的主要請求過程實例圖。瀏覽器

如圖1-10所示,當一個用戶在瀏覽器中輸入www.abc.com時,DNS解析將會有將近10個步驟,這個過程大致描述以下。當用戶在瀏覽器中輸入域名並按下回車鍵後,緩存

第1步:服務器

  瀏覽器會檢查緩存中有沒有這個域名對應的解析過的IP地址,若是緩存中有,這個解析過程就將結束。瀏覽器緩存域名也是有限制的,不只瀏覽器緩存大小有限制,並且緩存的時間也有限制,一般狀況下爲幾分鐘到幾小時不等,域名被緩存。網絡

第2步:負載均衡

  若是用戶的瀏覽器緩存中沒有,瀏覽器會查找操做系統緩存中是否有這個域名對應的DNS解析結果。其實操做系統也會有一個域名解析的過程,在Windows中能夠經過C:\Windows\System32\drivers\etc\hosts文件來設置,你能夠將任何域名解析到任何可以訪問的IP地址。若是你在這裏指定了一個域名對應的IP地址,那麼瀏覽器會首先使用這個IP地址。例如,咱們在測試時能夠將一個域名解析到一臺測試服務器上,這樣不用修改任何代碼就能測試到單獨服務器上的代碼的業務邏輯是否正確。正是由於有這種本地DNS解析的規程,因此黑客就有可能經過修改你的域名解析來把特定的域名解析到它指定的IP地址上,致使這些域名被劫持。性能

  這致使早期的Windows版本中出現過很嚴重的問題,並且對於通常沒有太多電腦知識的用戶來講,出現問題後很難發現,即便發現也很難本身解決,因此Windows 7中將hosts文件設置成了只讀的,防止這個文件被輕易修改。測試

  在Linux中這個配置文件是/etc/named.conf,修改這個文件能夠達到一樣的目的,當解析到這個配置文件中的某個域名時,操做系統會在緩存中緩存這個解析結果,緩存的時間一樣是受這個域名的失效時間和緩存的空間大小控制的。操作系統

  前面這兩個步驟都是在本機完成的,因此在圖1-10中沒有表示出來。到這裏尚未涉及真正的域名解析服務器,若是在本機中仍然沒法完成域名的解析,就會真正請求域名服務器來解析這個域名了。blog

第3步:ip

  如何、怎麼知道域名服務器呢?在咱們的網絡配置中都會有"DNS服務器地址"這一項,這個地址就用於解決前面所說的若是兩個過程沒法解析時要怎麼辦,操做系統會把這個域名發送給這裏設置的LDNS,也就是本地區的域名服務器。這個DNS一般都提供給你本地互聯網接入的一個DNS解析服務,例如你是在學校接入互聯網,那麼你的DNS服務器確定在你的學校,若是你是在一個小區接入互聯網的,那這個DNS就是提供給你接入互聯網的應用提供商,即電信或者聯通,也就是一般所說的SPA,那麼這個DNS一般也會在你所在城市的某個角落,一般不會很遠。在Windows下能夠經過ipconfig查詢這個地址。在Linux下能夠經過以下方式查詢配置的DNS Server   (   $cat /etc/resolv.conf   )

  這個專門的域名解析服務器性能都會很好,它們通常都會緩存域名解析結果,固然緩存時間是受域名的失效時間控制的,通常緩存空間不是影響域名失效的主要因素。大約80%的域名解析都到這裏就已經完成了,因此LDNS主要承擔了域名的解析工做。

第4步:

  若是LDNS仍然沒有命中,就直接到Root Server域名服務器請求解析。

第5步:

  根域名服務器返回給本地域名服務器一個所查詢域的主域名服務器(gTLD Server)地址。gTLD是國際頂級域名服務器,如.com、.cn、.org等,全球只有13臺左右。

第6步:

  本地域名服務器(Local DNS Server)再向上一步返回的gTLD服務器發送請求。

第7步:

  接受請求的gTLD服務器查找並返回此域名對應的Name Server域名服務器的地址,這個Name Server一般就是你註冊的域名服務器,例如你在某個域名服務提供商申請的域名,那麼這個域名解析任務就由這個域名提供商的服務器來完成。

第8步:

  Name Server域名服務器會查詢存儲的域名和IP的映射關係表,正常狀況下都根據域名獲得目標IP記錄,連同一個TTL值返回給DNS Server域名服務器。

第9步:

  返回該域名對應的IP和TTL值,Local DNS Server會緩存這個域名和IP的對應關係,緩存的時間由TTL值控制。

第10步:

  把解析的結果返回給用戶,用戶根據TTL值緩存在本地系統緩存中,域名解析過程結束。

 

在實際的DNS解析過程當中,可能還不止這10個步驟,如Name Server也可能有多級,或者有一個GTM來負載均衡控制,這都有可能會影響域名解析的過程

相關文章
相關標籤/搜索