詳解Web請求中的DNS域名解析
當我們打開瀏覽器,輸入一個URL去請求我們需要的資源,但是URL是需要解析成對應的IP地址才能與遠程主機建立連接,如何將URL解析成IP就是DNS的工作範疇,即使作為開發人員,這個過程我們也感覺不到,但是它卻真實的存在,如果任何一臺DNS服務器壞掉都會導致非常嚴重的互聯網災難。
DNS服務器的解析過程如下圖所示:
這個DNS解析大概有十個步驟:
第一步:瀏覽器會檢查緩存中有沒有這個域名對應的解析過的IP,如果緩存中有,這個解析過程就將結束。所以很多時候因為瀏覽器的DNS緩存的問題,導致訪問某個資源出現問題,是因為DNS的解析出問題了。
第二步:如果用戶的瀏覽器緩存中沒有,瀏覽器會查找操作系統緩存中是否有這個域名對應的DNS解析結果。
第三步:如何、怎麽知道域名服務器呢?我們的網絡配置中都會有“DNS服務器地址”這個選項,如果前面的兩個過程無法解析,則會把這個域名發送給這裏設置的LDNS,也就是本地區的域名服務器。如下圖所示:
一般這種專門的域名解析器性能都會非常好,它們一般都會緩存域名解析結果,大約80%的域名解析工作都到這裏就已經完成了,所以LDNS主要承擔了域名的解析工作。
第四步:如果LDNS仍然沒有命中,就直接到Root Server域名服務器請求解析。
第五步:根據域名服務器返回給本地域名服務器一個所查詢的主域名服務器(gLTD Server)地址。gLTD是國際頂級域名服務器,如.com、.cn、.org等,全球只有13臺左右。
第六步:本地域名服務器(Local DNS Server)再向上一步返回的gLTD服務器發送請求。
第七步:接受請求的gLTD服務器查找並返回此域名對應的Name Server域名服務器的地址,這個Name Server通常就是你註冊的域名服務器,例如你在某個域名服務提供商申請的域名,那麽這個域名解析任務就由這個域名提供商的服務器來完成。
第八步:Name Server域名服務器會查詢存儲的域名和IP的映射關系表,正常情況下根據域名得到目標的IP記錄,連同一個TTL值返回給DNS Server域名服務器。
第九步:返回該域名對應的IP和TTL值,Local DNS Server會緩存這個域名和IP的對應關系,緩存的時間由TTL值控制。
第十步:把解析的結果返回給用戶,用戶根據TTL值緩存在本地系統緩存中,域名解析過程結束。
清除緩存的域名:
在一般的windows環境下的命令如下圖:
詳解Web請求中的DNS域名解析