自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

小米汽車1面:DNS的工作原理是什么?

系統(tǒng) 瀏覽器 網(wǎng)絡(luò) 服務(wù)器
本文通過(guò)在瀏覽器里面輸入一個(gè)域名為例,詳細(xì)地分析了 DNS的工作原理,另外,為了更好地理解 DNS域名解析過(guò)程,我們通過(guò) 3種方式來(lái)手動(dòng)演示整個(gè)過(guò)程。?

不論你是否從事IT行業(yè),和網(wǎng)絡(luò)打交道是在所難免,比如,微信,抖音,網(wǎng)購(gòu)比比皆是,當(dāng)我們?cè)跒g覽器里面輸入一個(gè)域名,瀏覽器是如何定位到遠(yuǎn)程的服務(wù)器?其中會(huì)經(jīng)歷哪些過(guò)程?今天我們就來(lái)聊一聊其背后的原理?

一、什么是DNS? 

其實(shí),當(dāng)用戶在瀏覽器輸入“example.com”進(jìn)行訪問(wèn)時(shí),瀏覽器會(huì)自動(dòng)向 DNS服務(wù)器發(fā)送請(qǐng)求,DNS解析器將域名轉(zhuǎn)換為IP地址,然后將 IP返回給瀏覽器,瀏覽器再訪問(wèn)該 IP,因此,整個(gè)過(guò)程中用戶無(wú)需知道網(wǎng)站的 IP地址,卻可輕松訪問(wèn)網(wǎng)站。如下圖:

在上述描述中,有一個(gè)核心點(diǎn)是 DNS,那么,DNS是什么呢?

DNS是 Domain Name System的首字母縮寫,翻譯為域名系統(tǒng),域名和IP地址的映射關(guān)系都保存在 DNS服務(wù)器上,因此,DNS是互聯(lián)網(wǎng)的電話簿。

網(wǎng)上有很多公用的 DNS服務(wù)器,比如 Google的“8.8.8.8”,Cloudflare 公司的“1.1.1.1”等。

二、DNS工作原理 

要了解 DNS的工作原理,需要從 DNS服務(wù)器和 DNS查詢過(guò)程兩個(gè)主要點(diǎn)來(lái)進(jìn)行講解。

在整個(gè) DNS工作過(guò)程中,會(huì)經(jīng)歷 4種 DNS服務(wù)器,整個(gè)請(qǐng)求過(guò)程如下圖:

1.DNS解析器

DNS解析器是一種服務(wù)器,負(fù)責(zé)整個(gè)域名轉(zhuǎn)IP的過(guò)程,當(dāng)收到客戶端 DNS查詢請(qǐng)求時(shí),DNS解析器會(huì)根據(jù)“DNS查詢類型”來(lái)查詢對(duì)應(yīng)的 IP地址。因此,遞歸 DNS解析器是域名轉(zhuǎn)IP的總負(fù)責(zé)人。

2.根域名服務(wù)器

根域名服務(wù)器是將人類可讀的域名轉(zhuǎn)換為 IP地址的第一步,它管理著根域名,根域名用一個(gè)點(diǎn)(.)表示,因此,可以把根域名服務(wù)器理解成一個(gè)索引。

全球共有 13組根域名服務(wù)器,它們以英文字母“A到M”依序命名,網(wǎng)域名稱格式為“A~M.root-servers.net”,具體信息如下表:

3.頂級(jí)域名服務(wù)器

頂級(jí)域名服務(wù)器(top-level domain,簡(jiǎn)寫 TLD),托管著一些頂級(jí)域名(比如 .com,.io, .net),它是域名轉(zhuǎn)IP的第二步,可以把頂級(jí)域名服務(wù)器理解成一個(gè)二級(jí)索引。

4.權(quán)威性域名服務(wù)器

權(quán)威性域名服務(wù)器(Authoritative nameserver),它是真實(shí)存儲(chǔ)具體域名的服務(wù)器,比如(example.com,redis.io)等,它是域名轉(zhuǎn)IP的最后一步,如果權(quán)威性域名服務(wù)器能查詢記錄,則返回 IP地址,否則做以下處理:

  • 如果權(quán)威域名服務(wù)器確認(rèn)域名不存在,則返回一個(gè) NXDOMAIN(Non-Existent Domain)響應(yīng)
  • 如果權(quán)威域名服務(wù)器由于某些原因無(wú)法處理查詢請(qǐng)求,它可能返回一個(gè)SERVFAIL(Server Failure)響應(yīng),這表示服務(wù)器遇到了無(wú)法解決的問(wèn)題,但并不意味域名不存在

因此,可以把權(quán)威性域名理解成一個(gè)數(shù)據(jù)行。

需要注意:在某些情況下,主域名的權(quán)威名稱服務(wù)器可能并不直接存儲(chǔ)子域名的記錄,而是委托給另一個(gè)專門管理子域名的名稱服務(wù)器。比如,CNAME記錄,子域名的記錄指向另一個(gè)域名,因此,CNAME記錄需要額外的查詢步驟,以找到實(shí)際的 IP地址或進(jìn)一步的 DNS記錄。

DNS是一個(gè)分布式系統(tǒng),內(nèi)部的域名服務(wù)器以及其保存的域名是一個(gè)樹狀結(jié)構(gòu),如下圖:

5.DNS查找過(guò)程

DNS 查找主要有以下 8個(gè)步驟:

  • 用戶在 Web瀏覽器中輸入“yuanjava.com”地址時(shí),查詢會(huì)傳輸?shù)?Internet中,并被 DNS解析器接收
  • DNS解析器收到請(qǐng)求后,向根域名服務(wù)器發(fā)出查詢請(qǐng)求
  • 根域名服務(wù)器收到請(qǐng)求后,發(fā)現(xiàn)后綴是 .com,表明”yuanjava.com”這個(gè)域名是由 .com區(qū)域管理,然后返回頂級(jí) DNS的地址
  • DNS解析器拿到了根域名服務(wù)器的響應(yīng)后,向 .com頂級(jí)域名服務(wù)器發(fā)出請(qǐng)求
  • 頂級(jí)域名服務(wù)器收到請(qǐng)求后,響應(yīng)其權(quán)威 DNS服務(wù)器地址
  • DNS解析器拿到了頂級(jí)域名服務(wù)器的響應(yīng)后,隨后向權(quán)威域名服務(wù)器進(jìn)行請(qǐng)求
  • 權(quán)威域名服務(wù)器收到請(qǐng)求后,使用“yuanjava.com”查詢到對(duì)應(yīng)的 IP地址并進(jìn)行響應(yīng)
  • 最后,DNS解析器使用 IP地址響應(yīng) Web瀏覽器

上述 8個(gè) DNS查找步驟可以返回“yuanjava.com”的 IP地址后,最后,瀏覽器使用該 IP地址向服務(wù)器發(fā)出 HTTP請(qǐng)求,獲取對(duì)應(yīng)的數(shù)據(jù)顯示在網(wǎng)頁(yè)中。

整個(gè)過(guò)程如下圖:

三、DNS查詢類型 

在上述 DNS工作原理講解時(shí),我們提到了 DNS查詢類型,那么 DNS查詢類型有哪些呢?

通常來(lái)說(shuō),DNS查詢類型有 3種:

1.遞歸查詢

在遞歸查詢中,DNS客戶端要求 DNS服務(wù)器(通常是遞歸解析器)返回請(qǐng)求的資源記錄或錯(cuò)誤消息。如果遞歸解析器找不到記錄,就會(huì)返回一個(gè)錯(cuò)誤。

2.迭代查詢

在迭代查詢中,DNS客戶端允許 DNS服務(wù)器返回它能提供的最佳答案。如果查詢的 DNS服務(wù)器沒(méi)有匹配的記錄,它會(huì)返回一個(gè)指向更低層域名空間的 DNS服務(wù)器的引用,客戶端再向引用地址發(fā)出查詢。這個(gè)過(guò)程會(huì)繼續(xù),直到找到結(jié)果或出現(xiàn)錯(cuò)誤或超時(shí)。

3.非遞歸查詢

非遞歸查詢通常發(fā)生在 DNS解析器客戶端查詢 DNS服務(wù)器時(shí),DNS服務(wù)器能直接查到記錄,要么因?yàn)樗窃撚涗浀臋?quán)威服務(wù)器,要么因?yàn)樵撚涗洿嬖谟谒木彺嬷?。通常,DNS服務(wù)器會(huì)緩存 DNS記錄以減少帶寬消耗和上游服務(wù)器的負(fù)載。

DNS解析器通過(guò)組合上述 3種查詢方式,可以優(yōu)化 DNS解析過(guò)程和縮短傳輸距離。在理想情況下,可以使用緩存的記錄數(shù)據(jù),從而使 DNS 域名服務(wù)器能夠返回非遞歸查詢。

四、DNS查詢實(shí)例演示 

為了更好的演示域名的整個(gè) DNS查詢過(guò)程,本文通過(guò)對(duì)我的技術(shù)博客www.yuanjava.com這個(gè)域名進(jìn)行 DNS解析,使用到的工具有dig命令,然后使用 3種方式進(jìn)行解析:

  • 使用指定的 DNS服務(wù)器
  • 使用公開的 DNS服務(wù)器
  • 使用運(yùn)營(yíng)商默認(rèn)的 DNS服務(wù)器

在進(jìn)入正式的解析之前,我們先來(lái)了解下 dig指令。

1.dig

dig(Domain Information Groper,域名信息搜索器)是一個(gè)用于查詢 DNS信息的命令,dig可以執(zhí)行各種類型的 DNS查詢,并顯示詳細(xì)的響應(yīng)信息,包括查詢的解析過(guò)程、響應(yīng)時(shí)間、返回的記錄等。

dig的基本語(yǔ)法:

dig [@server] [name] [type]

  • @server:指定要查詢的 DNS服務(wù)器,如果省略,默認(rèn)使用系統(tǒng)配置的 DNS服務(wù)器
  • name:需要查詢的域名
  • type:查詢的記錄類型(如A、AAAA、MX、TXT等,如果省略,默認(rèn)查詢A記錄

使用示例

(1)查詢記錄

dig yuanjava.com A        # 返回 yuanjava.com的 IPv4地址記錄
dig yuanjava.com AAAA     # 返回 yuanjava.com的IPv6地址記錄
dig yuanjava.com MX       # 返回 yuanjava.com的郵件交換記錄
dig @8.8.8.8 yuanjava.com #指定 Google公共的 8.8.8.8 
dig @1.1.1.1 yuanjava.com #指定 cloudflare公共的 1.1.1.1

(2)結(jié)果返回

dig的輸出通常包含以下 6個(gè)部分:

  • Header部分:顯示 dig命令的版本和查詢的基本信息
  • Question部分:顯示查詢的詳細(xì)信息,包括操作碼(opcode)、狀態(tài)碼(status)、標(biāo)志位(flags)等
  • Answer部分:顯示查詢結(jié)果,包括域名、TTL(生存時(shí)間)、記錄類型和記錄值
  • Authority部分:顯示權(quán)威名稱服務(wù)器的信息
  • Additional部分:顯示與查詢相關(guān)的其他信息(如果有)
  • Query time和服務(wù)器信息:顯示查詢時(shí)間、使用的DNS服務(wù)器、查詢的時(shí)間戳和返回消息的大小

講解完 dig指令后,我們正式進(jìn)入 DNS解析的實(shí)戰(zhàn)演習(xí):

2.使用指定的DNS服務(wù)器

首先,使用 13臺(tái)根域名服務(wù)器的任意一臺(tái)進(jìn)行解析,這里以”198.41.0.4”為例,指令如下:

dig @198.41.0.4 yuanjava.com

指令執(zhí)行如下圖:

因?yàn)楦蛎?wù)器給不了”yuanjava.com”的 IP地址,所以執(zhí)行結(jié)果中沒(méi)有 ANSWER SECTION,但是返回了.com對(duì)應(yīng)的頂級(jí)域名服務(wù)器的 IPv4和 IPv6,選擇第一臺(tái)頂級(jí)域名服務(wù)器的IPv4,繼續(xù)解析,指令如下:

dig @192.41.162.30 yuanjava.com

指令執(zhí)行如下圖:

頂級(jí)域名服務(wù)器也給不了”yuanjava.com”的 IP地址,但返回了權(quán)威服務(wù)器的 IP地址,選擇第一臺(tái)權(quán)威域名服務(wù)器的 IP,繼續(xù)解析,指令如下:

dig @120.76.107.44 yuanjava.com

指令執(zhí)行如下圖:

最后,權(quán)威域名服務(wù)器查到了域名對(duì)應(yīng)的 IP,到此,DNS域名解析的整個(gè)過(guò)程我們就通過(guò)手動(dòng)的方法進(jìn)行了演示。

3.使用公開的DNS服務(wù)器

使用公開的 DNS服務(wù)器,會(huì)屏蔽內(nèi)部域名服務(wù)器查詢過(guò)程,最終給出 IP地址,分別執(zhí)行下面 2個(gè)指令:

dig @1.1.1.1 yuanjava.com
dig @8.8.8.8 yuanjava.com

指令執(zhí)行結(jié)果截圖如下(截圖中沒(méi)有 Additional部分):

4.使用運(yùn)營(yíng)商的DNS服務(wù)器

除了上述兩種方式,我們還可以使用運(yùn)營(yíng)商自動(dòng)配置的 DNS服務(wù)器,比如下面為家庭 wifi網(wǎng)絡(luò)的示例截圖:

五、DNS緩存 

因?yàn)橐粋€(gè)域名對(duì)應(yīng)的 IP地址變動(dòng)的頻率很低,所以,可以將域名和 IP的映射關(guān)系緩存起來(lái)并且設(shè)置一定的失效時(shí)間,從而提高數(shù)據(jù)請(qǐng)求的性能和可靠性。那么,DNS緩存有哪些呢?

1.瀏覽器的DNS緩存

現(xiàn)代 Web瀏覽器的設(shè)計(jì),默認(rèn)會(huì)將 DNS記錄緩存一段時(shí)間,當(dāng)發(fā)出對(duì) DNS記錄的請(qǐng)求時(shí),能從瀏覽器緩存拿到記錄,大大加速了 DNS解析過(guò)程。

在 Chrome瀏覽器中,可以通過(guò)chrome://net-internals/#dns 查看 DNS緩存的狀態(tài),如下圖:

2.操作系統(tǒng)的DNS緩存

除了瀏覽器會(huì)設(shè)置 DNS緩存外,在每一層的域名服務(wù)器也會(huì)設(shè)計(jì)對(duì)應(yīng)的 DNS緩存,緩存查詢的過(guò)程如下:

  • 檢查本地緩存,如果本地緩存有結(jié)果,則返回;否則,向 DNS解析器發(fā)送查詢。
  • DNS解析器檢查本地緩存,如果緩存有結(jié)果,則返回
  • 如果沒(méi)有A記錄,但有NS記錄,直接查詢權(quán)威名稱服務(wù)器
  • 如果沒(méi)有 NS記錄,查詢 TLD服務(wù)器
  • 如果沒(méi)有指向 TLD服務(wù)器的記錄,查詢根服務(wù)器

六、總結(jié) 

本文通過(guò)在瀏覽器里面輸入一個(gè)域名為例,詳細(xì)地分析了 DNS的工作原理,另外,為了更好地理解 DNS域名解析過(guò)程,我們通過(guò) 3種方式來(lái)手動(dòng)演示整個(gè)過(guò)程。

責(zé)任編輯:趙寧寧 來(lái)源: 猿java
相關(guān)推薦

2023-11-05 10:52:54

DNS服務(wù)器瀏覽器

2025-03-24 09:10:00

Spring注解代碼

2024-11-25 12:20:00

Hystrix微服務(wù)架構(gòu)

2021-07-29 11:46:27

NAS存儲(chǔ)NAS服務(wù)器

2021-09-27 08:02:17

CDN加速網(wǎng)站網(wǎng)絡(luò)

2024-11-11 00:00:01

線程池工具

2024-09-26 06:48:36

2018-11-26 14:55:33

固態(tài)硬盤SSD選購(gòu)

2024-06-24 00:07:00

開源es搜索引擎

2023-05-18 22:51:08

2020-09-11 08:41:50

域名系統(tǒng)DNS網(wǎng)絡(luò)

2021-10-21 09:40:50

AI人工智能

2020-10-14 07:50:57

DNS劫持

2023-12-18 10:45:31

2020-09-01 09:48:12

DNS漏洞網(wǎng)絡(luò)攻擊

2025-01-15 13:30:48

FeignHTTPJava

2024-10-15 10:59:18

Spring MVCJava開發(fā)

2024-11-15 16:15:59

2021-05-19 08:40:36

DNS 協(xié)議查詢

2024-07-15 08:20:24

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)