當乙個使用者在瀏覽器輸入 時,dns 解析將會有近 10 個步驟,這個過程大致描述如下。
當使用者在瀏覽器輸入網域名稱並按下回車之後,第 1 步,瀏覽器會檢查快取中有沒有這個網域名稱對應的解析過的 ip 位址,如果快取中有,這個解析過程就將結束。瀏覽器快取網域名稱也是有限制的,不僅瀏覽器快取大小有限制,而且快取的時間也有限制,通常情況下為幾分鐘到幾個小時不等,網域名稱被快取的時間限制可以通過 ttl 屬性來設定。這個時間太長和太短都不太好,如果快取時間太長,一旦網域名稱解析到 ip 有變化,會導致被客戶端快取的網域名稱無法解析到變化後的 ip 位址,以致該網域名稱不能正常解析,這段時間內可能會有一部分使用者無法訪問**。如果時間設定的太短,會導致使用者每次訪問**都要重新解析一次網域名稱。
第2步,如果使用者瀏覽器快取中沒有,瀏覽器會直接查詢作業系統中是否有這個網域名稱對應的解析結果。其實作業系統也會有乙個網域名稱解析的過程,在 windows 中可以通過 c:\windows\systeme32\drivers\hosts 檔案來設定,你可以將任何網域名稱解析到任何能夠訪問的 ip 位址。如果你在這裡指定了乙個網域名稱對應的 ip 位址,那麼瀏覽器會首先使用這個 ip 位址。;例如,我們在測試時可以將乙個網域名稱解析到一台測試伺服器上,這樣不用修改任何**就能測試到單獨伺服器上的業務邏輯是否正確。正是因為這種 dns 解析的規程,所以黑客就有可能通過修改你的網域名稱解析來把特定的網域名稱解析到它指定的 ip 位址上,導致這些網域名稱被劫持。
這導致在早期的windows版本中出現過很嚴重的問題,而且對於一般沒有太多計算機知識的使用者來說,出現問題後很難發現,即使發現也很難自己解決,所以 windows 7 中將 hosts 檔案設定成了唯讀的,防止這個檔案被輕易修改
在linux中這個配置檔案是 /etc/hosts,修改這個檔案可以達到同樣的目的,當解析到這個配置檔案中的某個網域名稱時,作業系統會在快取中快取這個解析結果,快取的時間同樣受這個網域名稱的失效時間和快取的空間大小限制。
前面這兩個步驟都是在本地完成的,所以在圖 1-10 中沒有表示出來。到這裡還沒有涉及到真正的網域名稱解析伺服器,如果在本機中仍然無法完成網域名稱的解析,就會真正請求網域名稱伺服器來解析這個網域名稱了。
圖 1-10
第3步,如何知道網域名稱伺服器呢?在我們的網路配置中都會有「dns 伺服器」這一項,這個位址就是用於解決前面所說的如果兩個過程解析時要怎麼辦,作業系統會把這個網域名稱傳送給這裡設定的 ldns,也就是本地區的網域名稱伺服器。這個 dns 通常都提供給你乙個本地網際網路接入的乙個 dns 解析服務,例如你是在學校接入網際網路,那麼你的 dns 伺服器肯定就是你的學校,如果你是在乙個小區接入網際網路的,那這個 dns 就是提供給你接入網際網路的應用服務商,即電信或者聯通,也就是通常所說的spa,那麼這個 dns 通常也會在你所在城市的某個角落,通常不會很遠。在 windows 下可以通過 ipconfig 查詢這個位址,在 linux 下可以通過如下方式查詢配置的 dns server。
這個專門的網域名稱解析伺服器效能都會很好,它們一般都會快取網域名稱解析結果,當天快取時間是受網域名稱的失效時間控制的,一般快取空間不是影響網域名稱失效的主要因素。大約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 值快取在本地快取中,網域名稱解析過程結束。
在實際解析過程中,可能還不止這10個步驟,如 name server 也可能有多級,或者乙個gtm來負載均衡控制,這都有可能會影響網域名稱解析過程。
深入分析Java Web技術內幕 筆記
http1.1 cache control no cacahe 瀏覽器不快取該網頁 expires 1 表示立即過期 通用格式 expires sat,25 feb 2012 12 22 17 gmt 超過這個時間值後,快取的內容將失效,也就是瀏覽器發出請求之前檢查這個頁面的這個字段,過期了就重新向...
《深入分析Java Web技術內幕》筆記一
1.通常有三種負載均衡架構,分別是鏈路負載均衡 集群負載均衡和作業系統負載均衡。優點 由於不需要經過其他的 伺服器,使用者的訪問目標伺服器的速度更快。缺點 由於dns在使用者本地和本地網域名稱服務區均有快取,如果某台 web 伺服器由於某種原因無法提供服務,很難及時更新使用者的網域名稱解析結構。如果...
深入分析Java Web技術內幕 (一)
http解析 常見的http請求頭 請求頭說明accept charset 用於制定客戶端接受的字符集 accept encoding 用於制定可接受的內容編碼,如accpet encoding gzip。deflate accept language 用於指定一種自然語言,如 acept lang...