天天看點

DNS域名解析

這個知識點已經是老生常談,快被寫爛了,但是為了自己能了解的更清楚一點,還是選擇整理出一篇自己的文章。

DNS( Domain Name System)是“域名系統”的英文縮寫,主要作用就是将便于人類記憶的單詞組合(如

www.taobao.com ),解析成不太容易記憶的數字組合(61.154.126.109)。

我覺得這是網際網路發展的必須結果,想一想如果沒有DNS系統,平時我們想要通路百度,淘寶,騰訊的網站,都要在浏覽器中輸入一長串的數字,耗時又不友善,并且一旦想要通路的網站增多了,很多人也不願意記這麼多的數字在腦袋中。

然後好一點的辦法就是把那些數字記錄到一個清單裡,對應是那個網站。僅供個人使用的時候還挺友善,但是一旦與網民互相交流的時候,每個人的清單列法不一樣,讨論起來也不一緻,是以規範很重要。

DNS就相當于整個網站映射的規範,适應與全球的網站,國内GFW即利用了DNS污染使得我們無法通路一些國外的網站。

過程

DNS解析過程可以分為有緩存的解析與無緩存的解析,一般都是有緩存的,雖然情況更複雜一些,但更貼近實際。

  1. 如果是在浏覽器中輸入域名, 檢測浏覽器是否有解析過的IP位址緩存,有的話直接使用上次解析的IP結果。
  2. 浏覽器無緩存,則檢查系統緩存。*nix下會檢查

    /etc/hosts

    檔案中是否有對應的緩存。Windows下會檢查

    C:\Windows\System32\drivers\etc\hosts

    中内容。

    注意:黑客可以在解析的任一流程中修改解析對應的IP,将解析的IP指向黑客的伺服器,導緻域名被劫持。

  3. 本地緩存如果都沒有的話,會将要解析的域名(

    )發送到本地設定的 DNS伺服器。即LDNS

    Linux下的NameServer配置資訊在

    /etc/resolve.conf

    .

    這個專門的域名解析伺服器性能都會很好,它們一般都會緩存域名解析結果,80%的域名解析到這裡基本已經完成了,是以LDNS主要承擔了域名的解析工作。

  4. 如果LDNS沒有命中結果,就直接到Root Server域名伺服器請求解析
  5. 根據域名伺服器傳回給本地域名伺服器一個所查詢域的主域名伺服器,(gTLD Server)位址。gTLD是國際頂級域名服務,如.com, .cn, .org。
  6. 本地域名伺服器LDNS再向上一步傳回的gTLD伺服器發送請求。
  7. 接受請求的gTLD伺服器查找并傳回對應Name Server域名伺服器的位址。Name Server通常是注冊的域名伺服器。

    假如這是你再某個域名服務提供上申請的域名,那麼這個域名的解析任務由這個域名提供商的伺服器來完成。

  8. Name Server域名伺服器會查詢存儲域名和IP的關系映射表,正常情況下都根據域名得到目标IP記錄,連同一個TTL值傳回給DNS Server域名伺服器。
  9. 根據傳回該域名對應的IP和TTL值,本地DNS伺服器,LDNS會緩存這域名和IP的對應關系,緩存時間由TTL值來控制。
  10. 把解析的結果傳回給使用者,使用者根據TTL值緩存在本地系統緩存中,域名解析過程結束。

最後

DNS域名解析過程在面試中也是經常問到的問題,做個整理,希望能幫助到大家,以後自己也友善檢視。

參考

  • 深入了解Java Web 技術内幕
下一篇: HashMap 初探

繼續閱讀