咱們都知道在瀏覽器經過域名發起一個網絡請求的時候,會有DNS服務器將域名解析成ip地址,以便向正確的ip地址發送請求,那麼這一個過程具體是怎麼處理的呢?今天整理了一下DNS域名解析的過程。大體分爲10步:linux
瀏覽器會檢查緩存中有沒有域名對應的ip地址,這個緩存是有過時時長的,通常是幾分鐘到幾小時不等。windows
若是瀏覽器緩存沒有,那麼就檢查操做系統的hosts文件,好比windows就是C:\Windows\System32\drivers\etc\hosts
文件,linux在/etc/hosts
文件中配置。瀏覽器
若是本地也沒有配置那麼就會根據向本機配置的本地區DNS域名服務器(LDNS)發起請求,若是你是經過學校鏈接互聯網的通常是你學校的DNS服務器,若是你是在小區鏈接互聯網的通常是網絡提供商好比電信,聯通的DNS服務器,DNS服務器一般不會太遠。如何查看本機的域名服務器,在Linux能夠經過cat /etc/resolv.conf
查看。到這一步基本能解析80%的域名。緩存
若是LDNS也不能解析,那麼就直接到根域名服務器請求解析。服務器
根域名服務器會給本地域名服務器LDNS一個所查詢的主域名服務器(gTLD)地址,gTLD是國際頂級域名服務器,好比.com
,.cn
,.org
等。網絡
本地域名服務器LDNS再向上一步返回的gLTD服務器發送請求。負載均衡
gLTD服務器查詢並返回域名對應的Name Server域名服務器的地址,一般是你註冊的域名服務器,例如你在某個域名服務器提供商申請的域名,那麼這個域名解析任務就由這個域名服務提供商來完成。操作系統
Name Server域名服務器會查詢存儲的域名和ip的映射關係表,將ip連同一個TTL值返回給DNS Server域名服務器。code
LDNS拿到ip和TTL會緩存起來,緩存時間由TTL值控制。blog
把解析的結果返回給用戶,用戶根據TTL值緩存在本地系統緩存中,域名解析過程結束。
整個過程用一張圖來表示:
在實際解析過程當中可能不僅有這10個步驟,入Name Server也有可能有多級或者一個GTM來控制負載均衡,都能影響DNS解析過程。