轉載來自:https://juejin.cn/post/6909041150728863752
簡單的說,域名解析就是將域名轉換爲IP地址的過程。因爲想要訪問一臺服務器,最終是靠IP地址訪問的,而不是靠域名訪問的,他們的之間的映射關係保存在本地緩存和網絡上的各種域名解析服務器中,如瀏覽器緩存,系統緩存,域名商的域名解析服務器,.....,那麼他們的查詢順序和查詢方式就是本文的內容。
域名結構
就以mail.baidu.com
域名爲例,域名最後一個.
的右側部分我們稱之爲頂級域名,倒數第二個.
右側部分稱之爲二級域名,以此類推,就會有三級域名,四級域名等等。
在mail.baidu.com
的域名中,com
成爲頂級域名,baidu.com
稱爲二級域名,mail.baidu.com
稱爲三級域名。
域名由兩個或兩個以上的詞組成,常見域名爲二級域名+頂級域名組成,所以一般我們會將域名分爲頂級域名、二級域名,除此之外,還有國家代碼頂級域名。
頂級域名服務器
頂級域名爲域名最後一個.
號右側部分的單詞,如mail.baidu.com
的com
就是頂級域名,頂級域名對應的服務器我們稱之爲頂級域名服務器,除此之外,常見的頂級域名還有.NET
,.TOP
,.ORG
等,他們都有各自的用途。
.COM
:用於商業機構,沒有使用限制,所有人都可以註冊.NET
:最開始用於網絡組織,如服務商和維修商,現在沒有使用限制,所有人都可以註冊.TOP
:用於行業內的頂級企業或個人,所有人都可以註冊.ORG
:用於各種組織,如非盈利組織、教育組織等,現在所有人都可以註冊
國家代碼頂級域名
常見的頂級域名除上述的之外,還有.CN
,.UA
,.JP
等,這些是由兩個字母組成的,是各個國家專用的頂級域名,如.CN
是中國專用的頂級域名,.JP
是日本專用的頂級域名。
二級域名服務器
域名中倒數第二個.
的右側部分稱之爲二級域名,如mail.baidu.com
中的baidu.com
就是二級域名,二級域名沒有固定的單詞,可以由各種字母和數組組成,如51cto.com
,和頂級域名服務器類似,與二級域名對應的稱爲二級域名服務器,以此類推,還有三級域名服務器,四級域名服務器,....
根域名服務器
在2016年之前全球一共擁有13臺根服務器,1臺主根服務器在美國,其他12臺爲輔根服務器,其中美國9臺,英國1臺,瑞典1臺,日本1臺,這13臺根服務器主要管理互聯網的主目錄,主要作用IPV4。
2016年,中國下一代互聯網工程中心領銜發起雪人計劃,旨在爲下一代互聯網(IPV6
)提供更多的根服務器解決方案,該計劃於2017年完成,其中包含3臺主根服務器,中國1臺,美國1臺,日本1臺,22臺輔根服務器,中國3臺,美國2臺,印度和法國分別有3臺,德國2臺,俄羅斯、意大利、西班牙、奧地利、智利、南非、澳大利亞、瑞士、荷蘭各1臺,共22臺,從此形成了13臺原有根加25臺IPV6根服務器的新格局。
本地域名服務器
本地域名服務器的範圍非常廣,沒有一個詳細的定位,可能是某個運營商部署在該城市的一臺服務器,也可能是某個公司的一臺服務器,甚至可能是某個學校的某一臺服務器,不必深究概念,只要知道有這樣一臺服務器就行。
存放地址
介紹完了域名的組成和域名服務器的分類,我們就來看看域名和IP地址的對應關係都會存放在哪些地方:
- 瀏覽器緩存
- 系統緩存
- 本地域名服務器
- 根域名解析服務器
- 頂級域名服務器
- 二級域名服務器
- 三級域名服務器
- ......
查詢順序
現在我們來看看怎麼去根據域名查詢一臺服務器的IP地址。
如果某個用戶正在用瀏覽器mail.baidu.com
的網址,當你敲下回車鍵的一瞬間:
- 1、檢查瀏覽器緩存中是否存在該域名與IP地址的映射關係,如果有則解析結束,沒有則繼續
- 2、到系統本地查找映射關係,一般在
hosts
文件中,如果有則解析結束,否則繼續 - 3、到本地域名服務器去查詢,有則結束,否則繼續
- 4、本地域名服務器查詢根域名服務器,該過程並不會返回映射關係,只會告訴你去下級服務器(頂級域名服務器)查詢
- 5、本地域名服務器查詢頂級域名服務器(即
com
服務器),同樣不會返回映射關係,只會引導你去二級域名服務器查詢 - 6、本地域名服務器查詢二級域名服務器(即
baidu.com
服務器),引導去三級域名服務器查詢 - 7、本地域名服務器查詢三級域名服務器(即
mail.baidu.com
服務器),此時已經是最後一級了,如果有則返回映射關係,則本地域名服務器加入自身的映射表中,方便下次查詢或其他用戶查找,同時返回給該用戶的計算機,沒有找到則網頁報錯 - 8、如果還有下級服務器,則依此方法進行查詢,直至返回映射關係或報錯
像該過程中的第1、2、3點,僅限於在本地域名服務器
中查找,如果有則直接返回映射關係,否則就去其他DNS
服務器中查詢,這種查詢方式我們叫做遞歸查詢。
第3、4、5、6、7、8過程,他們只會給出下級DNS
服務器的地址,並不會直接返回映射關係,這種查詢方式叫做迭代查詢
總結
最後引用大神的一張圖做總結吧: