談一談你所了解的 DNS 域名解析
時(shí)間:2023-01-31 16:28:01 | 來(lái)源:建站知識(shí)
時(shí)間:2023-01-31 16:28:01 來(lái)源:建站知識(shí)
問(wèn)題描述:
談一談你所了解的 DNS 域名解析
解題思路:
1. 域名解析協(xié)議
將域名和 IP 地址相互映射,將域名映射成 IP 地址稱為正向解析,將 IP 地址映射成域名稱為反向解析。DNS 協(xié)議可以使用 UDP 或者 TCP 進(jìn)行傳輸,使用的端口號(hào)都為 53。但
大多數(shù)情況下 DNS 都使用 UDP 進(jìn)行傳輸。
2. 域名詳解
- 根域名
ICANN 管理著所有的頂級(jí)域名,所以它是最高一級(jí)的域名節(jié)點(diǎn),被稱為根域名(root domain)。在有些場(chǎng)合,www.xxx.com
被寫成 www.xxx.com.
,即最后還會(huì)多出一個(gè)點(diǎn)。這個(gè)點(diǎn)就是根域名。 - 頂級(jí)域名
頂級(jí)域名(TLD),即最高層級(jí)的域名。簡(jiǎn)單說(shuō),就是網(wǎng)址的最后一個(gè)部分。比如,網(wǎng)址www.baidu.com
的頂級(jí)域名就是 .com
。
- 通用頂級(jí)域名(gTLD),比如
.com
- 國(guó)家頂級(jí)域名(ccTLD),代表不同的國(guó)家和地區(qū),比如
.cn
(中國(guó))
- 二級(jí)域名
二級(jí)域名(Second Level Domain,SLD) 在通用頂級(jí)域名或國(guó)家頂級(jí)域名之下具有不同的意義:
- 通用頂級(jí)域名下的二級(jí)域名:一般是指域名注冊(cè)人選擇使用的網(wǎng)上名稱,如
yahoo.com
(商業(yè)組織通常使用自己的商標(biāo)、商號(hào)或其他商業(yè)標(biāo)志作為自己的網(wǎng)上名稱,如 baidu.com
) - 國(guó)家頂級(jí)域名下的二級(jí)域名:一般是指類似于通用頂級(jí)域名的表示注冊(cè)人類別和功能的標(biāo)志。例如,在
.com.cn
域名結(jié)構(gòu)中,.com
此時(shí)是置于國(guó)家頂級(jí)域名 .cn
下的二級(jí)域名,表示中國(guó)的商業(yè)性組織,以此類推。
- 三級(jí)域名
三級(jí)域名是形如 www.baidu.com
的域名,可以當(dāng)做是二級(jí)域名的子域名,特征為域名包含兩個(gè) .
。對(duì)于域名所有者/使用者而言,三級(jí)域名都是二級(jí)域名的附屬物而無(wú)需單獨(dú)費(fèi)用。三級(jí)域名甚至不能稱為域名,一般稱之為域名下的 “二級(jí)目錄”。
3. 域名服務(wù)器詳解
- 根域名服務(wù)器
ICANN 維護(hù)著一張根域名列表,里面記載著頂級(jí)域名和對(duì)應(yīng)的托管商,其實(shí)根域名列表的正式名稱是 DNS 根區(qū)(DNS root zone),保存 DNS 根區(qū)文件的服務(wù)器,就叫做 DNS 根域名服務(wù)器(root name server)。根域名服務(wù)器保存所有的頂級(jí)域名服務(wù)器的地址
由于早期的 DNS 查詢結(jié)果是一個(gè) 512 字節(jié)的 UDP 數(shù)據(jù)包。這個(gè)包最多可以容納 13 個(gè)服務(wù)器的地址,因此就規(guī)定全世界有 13 個(gè)根域名服務(wù)器,編號(hào)從 a.root-servers.net
一直到 m.root-servers.net
。其中 10 臺(tái)設(shè)置在美國(guó),另外各有一臺(tái)設(shè)置于荷蘭、瑞典和日本。 - 頂級(jí)域名服務(wù)器
按照根域名服務(wù)器管理頂級(jí)域名的邏輯,頂級(jí)域名服務(wù)器顯然就是用來(lái)管理注冊(cè)在該頂級(jí)域名下的所有二級(jí)域名的,記錄這些二級(jí)域名的 IP 地址。 - 權(quán)限域名服務(wù)器
權(quán)限域名服務(wù)器就是負(fù)責(zé)管理一個(gè)“區(qū)”的域名服務(wù)器。
什么是區(qū)?怎樣劃分區(qū)呢?
區(qū)和域其實(shí)是不同的,區(qū)可以有多種不同的劃分方法。以百度為例,我們假設(shè)有 fanyi.baidu.com
、ai.baidu.com
、tieba.baidu.com
這三個(gè)三級(jí)域名。我們可以這樣分區(qū),fanyi.baidu.com
和 tieba.baidu.com
放在 baidu.com
權(quán)限域名服務(wù)器,ai.baidu.com
放在 ai.baidu.com
權(quán)限域名服務(wù)器中。并且 baidu.com
權(quán)限域名服務(wù)器和 ai.baidu.com
權(quán)限域名服務(wù)器是同等地位的,而具體怎么分區(qū)是百度公司根據(jù)域名多少、訪問(wèn)多少等情況去自己規(guī)定的。
- 本地域名服務(wù)器
除了上面三種 DNS 服務(wù)器,還有一種不在 DNS 層次結(jié)構(gòu)之中,但是很重要的 DNS 服務(wù)器,就是本地域名服務(wù)器(也被稱為權(quán)威域名服務(wù)器)。本地域名服務(wù)器是電腦解析時(shí)的默認(rèn)域名服務(wù)器,即電腦中設(shè)置的首選 DNS 服務(wù)器和備選 DNS 服務(wù)器。常見(jiàn)的有電信、聯(lián)通、谷歌、阿里等的本地 DNS 服務(wù)。
4. DNS 查詢方式
- 遞歸查詢
遞歸查詢中,如果 A 請(qǐng)求 B,那么 B 作為請(qǐng)求的接收者一定要給 A 想要的答案;而迭代查詢則是指,如果接收者 B 沒(méi)有請(qǐng)求者 A 所需要的準(zhǔn)確內(nèi)容,接收者 B 將告訴請(qǐng)求者 A,如何去獲得這個(gè)內(nèi)容,但是自己并不去發(fā)出請(qǐng)求。 - 迭代查詢
迭代就是,如果請(qǐng)求的接收者不知道所請(qǐng)求的內(nèi)容,那么接收者將扮演請(qǐng)求者,發(fā)出有關(guān)請(qǐng)求,直到獲得所需要的內(nèi)容,然后將內(nèi)容返回給最初的請(qǐng)求者。
一般來(lái)說(shuō),
域名服務(wù)器之間的查詢使用迭代查詢方式,以免根域名服務(wù)器的壓力過(guò)大。
5. 域名緩存
- 瀏覽器緩存
瀏覽器在獲取網(wǎng)站域名的實(shí)際 IP 地址后會(huì)對(duì)其進(jìn)行緩存,減少網(wǎng)絡(luò)請(qǐng)求的損耗。每種瀏覽器都有一個(gè)固定的 DNS 緩存時(shí)間,如 Chrome 的過(guò)期時(shí)間是 1 分鐘,在這個(gè)期限內(nèi)不會(huì)重新請(qǐng)求 DNS - 操作系統(tǒng)緩存
操作系統(tǒng)的緩存其實(shí)是用戶自己配置的 hosts 文件。比如 Windows10 下的 hosts 文件存放在 C:/Windows/System32/drivers/etc/hosts
在瀏覽器中進(jìn)行訪問(wèn)的時(shí)候,會(huì)優(yōu)先查詢?yōu)g覽器緩存,如果未命中則繼續(xù)查詢操作系統(tǒng)緩存,最后再查詢本地域名服務(wù)器,然后本地域名服務(wù)器會(huì)
遞歸的查找域名記錄,最后返回結(jié)果。
主機(jī)和本地域名服務(wù)器之間的查詢方式是遞歸查詢,也就是說(shuō)主機(jī)請(qǐng)求本地域名服務(wù)器,那么本地域名服務(wù)器作為請(qǐng)求的接收者一定要給主機(jī)想要的答案。
6. 完整域名解析過(guò)程
以
正向解析為例(域名解析成 IP 地址):
1)首先搜索
瀏覽器的 DNS 緩存,緩存中維護(hù)一張域名與 IP 地址的對(duì)應(yīng)表;
2)若沒(méi)有命中,則繼續(xù)搜索
操作系統(tǒng)的 DNS 緩存;
3)若仍然沒(méi)有命中,則操作系統(tǒng)將域名發(fā)送至
本地域名服務(wù)器,本地域名服務(wù)器查詢自己的 DNS 緩存,查找成功則返回結(jié)果(注意:主機(jī)和本地域名服務(wù)器之間的查詢方式是
遞歸查詢);
4)若本地域名服務(wù)器的 DNS 緩存沒(méi)有命中,則本地域名服務(wù)器向上級(jí)域名服務(wù)器進(jìn)行查詢,通過(guò)以下方式進(jìn)行
迭代查詢(注意:本地域名服務(wù)器和其他域名服務(wù)器之間的查詢方式是迭代查詢,防止根域名服務(wù)器壓力過(guò)大):
- 首先本地域名服務(wù)器向根域名服務(wù)器發(fā)起請(qǐng)求,根域名服務(wù)器是最高層次的,它并不會(huì)直接指明這個(gè)域名對(duì)應(yīng)的 IP 地址,而是返回頂級(jí)域名服務(wù)器的地址,也就是說(shuō)給本地域名服務(wù)器指明一條道路,讓他去這里尋找答案
- 本地域名服務(wù)器拿到這個(gè)頂級(jí)域名服務(wù)器的地址后,就向其發(fā)起請(qǐng)求,獲取權(quán)限域名服務(wù)器的地址
- 本地域名服務(wù)器根據(jù)權(quán)限域名服務(wù)器的地址向其發(fā)起請(qǐng)求,最終得到該域名對(duì)應(yīng)的 IP 地址
4)本地域名服務(wù)器將得到的 IP 地址返回給操作系統(tǒng),同時(shí)自己將 IP 地址緩存起來(lái)
5)操作系統(tǒng)將 IP 地址返回給瀏覽器,同時(shí)自己也將 IP 地址緩存起來(lái)
6)至此,瀏覽器就得到了域名對(duì)應(yīng)的 IP 地址,并將 IP 地址緩存起來(lái)
配合下圖直觀理解: