dns網域名稱解析整個過程大體描述如下,其中前兩個步驟是在本機完成的,後8個步驟涉及到真正的網域名稱解析伺服器:
1.瀏覽器會檢查快取中有沒有這個網域名稱對應的解析過的ip位址,如果快取中有,這個解析過程就結束。瀏覽器快取網域名稱也是有限制的,不僅瀏覽器快取大小有限制,而且快取的時間也有限制,通常情況下為幾分鐘到幾小時不等,網域名稱被快取的時間限制可以通過ttl屬性來設定。這個快取時間太長和太短都不太好,如果時間太長,一旦網域名稱被解析到的ip有變化,會導致被客戶端快取的網域名稱無法解析到變化後的ip位址,以致該網域名稱不能正常解析,這段時間內有一部分使用者無法訪問**。如果設定時間太短,會導致使用者每次訪問**都要重新解析一次網域名稱。
2.如果使用者瀏覽器快取中沒有資料,瀏覽器會查詢作業系統快取中是否有這個網域名稱對應的dns解析結果。其實作業系統也有乙個網域名稱解析的過程,在windows中可以通過c:\windows\system32\drivers\etc\hosts檔案來設定,在linux中可以通過/etc/hosts檔案來設定,使用者可以將任何網域名稱解析到任何能夠訪問的ip位址。例如,我們在測試時可以將乙個網域名稱解析到一台測試伺服器上,這樣不用修改任何**就能測試到單獨伺服器上的**的業務邏輯是否正確。正是因為有這種本地dns解析的規程,所以有黑客就可能通過修改使用者的網域名稱來把特定的網域名稱解析到他指定的ip位址上,導致這些網域名稱被劫持。
3.前兩個過程無法解析時,就要用到我們網路配置中的"dns伺服器位址"了。作業系統會把這個網域名稱傳送給這個ldns,也就是本地區的網域名稱伺服器。這個dns通常都提供給使用者本地網際網路接入的乙個dns解析服務,例如使用者是在學校接入網際網路,那麼使用者的dns伺服器肯定在學校;如果使用者是在小區接入網際網路,那麼使用者的dns就是再提供接入網際網路的應用提供商,即電信或聯通,也就是通常說的spa,那麼這個dns通常也會在使用者所在城市的某個角落,不會很遠。windows環境下通過命令列輸入ipconfig,linux環境下通過cat /etc/resolv.conf就可以查詢配置的dns伺服器了。這個專門的網域名稱解析伺服器效能都會很好,它們一般都會快取網域名稱解析結果,當然快取時間是受到網域名稱的失效時間控制的。大約80%的網域名稱解析到這裡就結束了,所以ldns主要承擔了網域名稱的解析工作。
4.如果ldns仍然沒有命中,就直接到root server網域名稱伺服器請求解析
5.根網域名稱伺服器返回給本地網域名稱伺服器乙個所查詢的主網域名稱伺服器(gtld server)位址。gtld是國際頂級網域名稱伺服器,如.com、.cn、.org等,全球只有13臺左右
6.本地網域名稱伺服器ldns再向上一步返回的gtld伺服器傳送請求
7.接受請求的gtld伺服器查詢並返回此網域名稱對應的name server網域名稱伺服器的位址,這個name server通常就是使用者註冊的網域名稱伺服器,例如使用者在某個網域名稱服務提供商申請的網域名稱,那麼這個網域名稱解析任務就由這個網域名稱提供商的伺服器來完成
8.name server網域名稱伺服器會查詢儲存的網域名稱和ip的對映關係表,在正常情況下都根據網域名稱得到目標ip位址,連同乙個ttl值返回給dns server網域名稱伺服器
9.返回該網域名稱對應的ip和ttl值,ldns會快取這個網域名稱和ip的對應關係,快取時間由ttl值控制
10.把解析的結果返回給使用者,使用者根據ttl值快取在本地系統快取中,網域名稱解析過程結束。
整個流程如上所述,在實際的dns解析過程中,可能還不止這10步,如name server可能有很多級,或者有乙個gtm來負載均衡控制,這都有可能會影響網域名稱解析過程。
Nginx系列教程集合
nginx的簡單介紹與安裝nginx的簡單介紹 nginx是一款高效能的 http 和反向 伺服器,由俄羅斯人igor sysoev 伊戈爾 賽索耶夫 為俄羅斯 rambler.ru開發的,在rambler.ru 平穩的執行了四年,而且俄俄羅斯超過20 的虛擬主機平台採用nginx作為反向 伺服器。...
演算法系列教程01 開篇
為什麼要學習演算法呢?我個人覺得最終目的還是為了提高自己的職場競爭力。演算法的本質就是解決問題,所以學習演算法本質上是在提高解決問題的能力,這是職場最重要的能力之一。另外,如果你想在面試中表現得更加出色,也要對演算法有一定程度的掌握。寫教程是很耗費精力的,而且學習演算法是很枯燥的,但如果大家都能參與...
kafka系列教程01 如何學習kafka
資料流,如訊息傳遞系統 高效並實時 資料流安全地在分布式集群中複製儲存 kafka是用於構建實時資料管道和流應用程式。具有橫向擴充套件,容錯,wicked fast 快 等優點,並已在成千上萬家公司執行。apache kafka是訊息中介軟體的一種,我發現很多人不知道訊息中介軟體是什麼,在開始學習之...