成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

系統 瀏覽器 網絡 服務器
本文通過在瀏覽器里面輸入一個域名為例,詳細地分析了 DNS的工作原理,另外,為了更好地理解 DNS域名解析過程,我們通過 3種方式來手動演示整個過程。?

不論你是否從事IT行業,和網絡打交道是在所難免,比如,微信,抖音,網購比比皆是,當我們在瀏覽器里面輸入一個域名,瀏覽器是如何定位到遠程的服務器?其中會經歷哪些過程?今天我們就來聊一聊其背后的原理?

一、什么是DNS? 

其實,當用戶在瀏覽器輸入“example.com”進行訪問時,瀏覽器會自動向 DNS服務器發送請求,DNS解析器將域名轉換為IP地址,然后將 IP返回給瀏覽器,瀏覽器再訪問該 IP,因此,整個過程中用戶無需知道網站的 IP地址,卻可輕松訪問網站。如下圖:

在上述描述中,有一個核心點是 DNS,那么,DNS是什么呢?

DNS是 Domain Name System的首字母縮寫,翻譯為域名系統,域名和IP地址的映射關系都保存在 DNS服務器上,因此,DNS是互聯網的電話簿。

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

二、DNS工作原理 

要了解 DNS的工作原理,需要從 DNS服務器和 DNS查詢過程兩個主要點來進行講解。

在整個 DNS工作過程中,會經歷 4種 DNS服務器,整個請求過程如下圖:

1.DNS解析器

DNS解析器是一種服務器,負責整個域名轉IP的過程,當收到客戶端 DNS查詢請求時,DNS解析器會根據“DNS查詢類型”來查詢對應的 IP地址。因此,遞歸 DNS解析器是域名轉IP的總負責人。

2.根域名服務器

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

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

3.頂級域名服務器

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

4.權威性域名服務器

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

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

因此,可以把權威性域名理解成一個數據行。

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

DNS是一個分布式系統,內部的域名服務器以及其保存的域名是一個樹狀結構,如下圖:

5.DNS查找過程

DNS 查找主要有以下 8個步驟:

  • 用戶在 Web瀏覽器中輸入“yuanjava.com”地址時,查詢會傳輸到 Internet中,并被 DNS解析器接收
  • DNS解析器收到請求后,向根域名服務器發出查詢請求
  • 根域名服務器收到請求后,發現后綴是 .com,表明”yuanjava.com”這個域名是由 .com區域管理,然后返回頂級 DNS的地址
  • DNS解析器拿到了根域名服務器的響應后,向 .com頂級域名服務器發出請求
  • 頂級域名服務器收到請求后,響應其權威 DNS服務器地址
  • DNS解析器拿到了頂級域名服務器的響應后,隨后向權威域名服務器進行請求
  • 權威域名服務器收到請求后,使用“yuanjava.com”查詢到對應的 IP地址并進行響應
  • 最后,DNS解析器使用 IP地址響應 Web瀏覽器

上述 8個 DNS查找步驟可以返回“yuanjava.com”的 IP地址后,最后,瀏覽器使用該 IP地址向服務器發出 HTTP請求,獲取對應的數據顯示在網頁中。

整個過程如下圖:

三、DNS查詢類型 

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

通常來說,DNS查詢類型有 3種:

1.遞歸查詢

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

2.迭代查詢

在迭代查詢中,DNS客戶端允許 DNS服務器返回它能提供的最佳答案。如果查詢的 DNS服務器沒有匹配的記錄,它會返回一個指向更低層域名空間的 DNS服務器的引用,客戶端再向引用地址發出查詢。這個過程會繼續,直到找到結果或出現錯誤或超時。

3.非遞歸查詢

非遞歸查詢通常發生在 DNS解析器客戶端查詢 DNS服務器時,DNS服務器能直接查到記錄,要么因為它是該記錄的權威服務器,要么因為該記錄存在于它的緩存中。通常,DNS服務器會緩存 DNS記錄以減少帶寬消耗和上游服務器的負載。

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

四、DNS查詢實例演示 

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

  • 使用指定的 DNS服務器
  • 使用公開的 DNS服務器
  • 使用運營商默認的 DNS服務器

在進入正式的解析之前,我們先來了解下 dig指令。

1.dig

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

dig的基本語法:

dig [@server] [name] [type]

  • @server:指定要查詢的 DNS服務器,如果省略,默認使用系統配置的 DNS服務器
  • name:需要查詢的域名
  • type:查詢的記錄類型(如A、AAAA、MX、TXT等,如果省略,默認查詢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)結果返回

dig的輸出通常包含以下 6個部分:

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

講解完 dig指令后,我們正式進入 DNS解析的實戰演習:

2.使用指定的DNS服務器

首先,使用 13臺根域名服務器的任意一臺進行解析,這里以”198.41.0.4”為例,指令如下:

dig @198.41.0.4 yuanjava.com

指令執行如下圖:

因為根域名服務器給不了”yuanjava.com”的 IP地址,所以執行結果中沒有 ANSWER SECTION,但是返回了.com對應的頂級域名服務器的 IPv4和 IPv6,選擇第一臺頂級域名服務器的IPv4,繼續解析,指令如下:

dig @192.41.162.30 yuanjava.com

指令執行如下圖:

頂級域名服務器也給不了”yuanjava.com”的 IP地址,但返回了權威服務器的 IP地址,選擇第一臺權威域名服務器的 IP,繼續解析,指令如下:

dig @120.76.107.44 yuanjava.com

指令執行如下圖:

最后,權威域名服務器查到了域名對應的 IP,到此,DNS域名解析的整個過程我們就通過手動的方法進行了演示。

3.使用公開的DNS服務器

使用公開的 DNS服務器,會屏蔽內部域名服務器查詢過程,最終給出 IP地址,分別執行下面 2個指令:

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

指令執行結果截圖如下(截圖中沒有 Additional部分):

4.使用運營商的DNS服務器

除了上述兩種方式,我們還可以使用運營商自動配置的 DNS服務器,比如下面為家庭 wifi網絡的示例截圖:

五、DNS緩存 

因為一個域名對應的 IP地址變動的頻率很低,所以,可以將域名和 IP的映射關系緩存起來并且設置一定的失效時間,從而提高數據請求的性能和可靠性。那么,DNS緩存有哪些呢?

1.瀏覽器的DNS緩存

現代 Web瀏覽器的設計,默認會將 DNS記錄緩存一段時間,當發出對 DNS記錄的請求時,能從瀏覽器緩存拿到記錄,大大加速了 DNS解析過程。

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

2.操作系統的DNS緩存

除了瀏覽器會設置 DNS緩存外,在每一層的域名服務器也會設計對應的 DNS緩存,緩存查詢的過程如下:

  • 檢查本地緩存,如果本地緩存有結果,則返回;否則,向 DNS解析器發送查詢。
  • DNS解析器檢查本地緩存,如果緩存有結果,則返回
  • 如果沒有A記錄,但有NS記錄,直接查詢權威名稱服務器
  • 如果沒有 NS記錄,查詢 TLD服務器
  • 如果沒有指向 TLD服務器的記錄,查詢根服務器

六、總結 

本文通過在瀏覽器里面輸入一個域名為例,詳細地分析了 DNS的工作原理,另外,為了更好地理解 DNS域名解析過程,我們通過 3種方式來手動演示整個過程。

責任編輯:趙寧寧 來源: 猿java
相關推薦

2023-11-05 10:52:54

DNS服務器瀏覽器

2025-03-24 09:10:00

Spring注解代碼

2024-11-25 12:20:00

Hystrix微服務架構

2021-07-29 11:46:27

NAS存儲NAS服務器

2021-09-27 08:02:17

CDN加速網站網絡

2024-11-11 00:00:01

線程池工具

2024-09-26 06:48:36

2018-11-26 14:55:33

固態硬盤SSD選購

2024-06-24 00:07:00

開源es搜索引擎

2023-05-18 22:51:08

2020-09-11 08:41:50

域名系統DNS網絡

2021-10-21 09:40:50

AI人工智能

2023-12-18 10:45:31

2020-10-14 07:50:57

DNS劫持

2025-01-15 13:30:48

FeignHTTPJava

2020-09-01 09:48:12

DNS漏洞網絡攻擊

2024-10-15 10:59:18

Spring MVCJava開發

2024-11-15 16:15:59

2021-05-19 08:40:36

DNS 協議查詢

2024-07-15 08:20:24

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 色婷婷久久综合 | 国产在线精品一区二区 | 韩日一区二区三区 | 精品91久久久 | 国产精品女人久久久 | 久久精品国产久精国产 | 欧洲av在线 | 日韩久久久久久久久久久 | 亚洲成人av | 日韩免费视频一区二区 | 国产激情视频在线 | 中文字幕亚洲国产 | 毛片毛片毛片毛片毛片 | 国产视频1区 | 521av网站 | 欧美在线视频观看 | 五月婷婷导航 | 538在线精品 | 四虎影视在线 | 亚洲第一女人av | 日韩欧美一区二区在线播放 | 99久久精品免费 | 国产精品电影网 | 欧美日韩国产一区二区 | 国产精品夜夜夜一区二区三区尤 | 在线免费av观看 | 日韩中文字幕 | 精品一区二区三区在线观看 | 久久99深爱久久99精品 | 亚洲欧美日韩在线不卡 | 日本黄色影片在线观看 | 成年人在线观看 | 免费久 | 99久久国产综合精品麻豆 | 欧美一级在线观看 | 中文字幕一区二区三区四区五区 | 成人国产在线观看 | 日韩精品无码一区二区三区 | 粉嫩av久久一区二区三区 | 日本亚洲一区 | 国产情侣久久 |