第1章大型互聯網公司的基礎架構——1.2 客戶端連接機房的技術1:DNS

客戶端啟動時要做的第一件事情就是通過互聯網與機房建立連接,然后用戶才可以在客戶端與后臺服務器進行網絡通信。目前在計算機網絡中應用較為廣泛的網絡通信協議是TCP/IP,它的通信基礎是IP地址,因為IP地址有如下兩個主要功能。

  1. 標識設備:接入網絡的設備必須有一個獨一無二的IP地址,這樣才能唯一標識一個網絡目標。
  2. 網絡尋址:將數據包從一個網絡設備發送到另一個網絡設備,需要攜帶目標網絡設備的IP地址,通過TCP/IP中的IP路由尋址功能,數據包最終可以到達目標網絡設備。

客戶端要與機房建立連接,就需要知道機房公網IP地址(暴露在互聯網中可訪問的IP地址),但是IP地址通常由一串冰冷的數字組成,沒有可讀性,不方便記憶,于是人們又制定出另一套字符型的地址方案:域名地址。“域名”是大家都很熟悉的名詞,在瀏覽器中輸入簡單易記的域名(如www.baidu.com),就可以訪問到對應的網站,它的底層其實是由DNS來實現的。

1.2.1 DNS的意義

DNS( Domain Name System,域名系統)是互聯網中的核心服務,它維護域名與對應 IP地址的映射關系,并提供將域名翻譯為IP地址的域名解析功能。DNS在互聯網中有非常廣泛的應用,它為用戶和互聯網公司帶來了很多便利。例如:

  1. 互聯網公司可以創建簡單、便于用戶記憶的域名并注冊到DNS服務器,用戶僅需輸入域名就能訪問到對應的網站。
  2. 通過維護域名與多個IP地址的映射關系,DNS可以將針對同一個域名的不同用戶請求解析到不同的IP地址,從而緩解單一后臺服務器的資源壓力。
  3. 互聯網公司因架構升級、網絡改造等需要變更機房公網IP地址時,僅需在DNS服務器中重新配置最新的IP地址,而不會對用戶造成任何干擾。
  4. 基于DNS可以實現靈活的負載均衡策略,比如DNS服務器可以對IP地址進行監測——如果發現機房某公網IP地址對應的服務器宕機,那么DNS服務器可以將這個IP地址及時摘除,防止用戶無法訪問后臺。

接下來詳細介紹DNS的技術原理。

1.2.2 域名結構

如圖1-2所示,域名采用了層次化的樹形結構來命名。樹的頂端節點為根,根的下一層稱為頂級域名,指的是域名的后綴部分,如最常見的.com.net等通用域或者.cn.us等國家域;頂級域名的下一層是二級域名,指的是域名的倒數第二部分,一般表示域名注冊人或主體所使用的網絡名稱,如google.comapple.com;二級域名的下一層是三級域名, 指的是域名的倒數第三部分,表示二級域名的子域名。實際上,域名可能還包括四級域名、五級域名等,它們的含義根據上文類推,每一級域名都控制下一級域名的分配。

image-20250216110358579

對于域名mail.google.com來說,頂級域名是.com,二級域名是google.com,三級域名 是mail.google.com

1.2.3 域名服務器

按照域名的層級結構,可以把域名服務器分為4種不同的類型。

(1)根域名服務器(根DNS服務器)

根域名服務器是全球互聯網的中樞神經,它負責互聯網頂級域名的解析,即它掌握著全部頂級域名的名稱與IP地址的映射關系。目前全球僅有13臺IPv4根域名服務器,其中主根域名服務器部署在美國,其余12臺輔根域名服務器有9臺部署在美國、2臺部署在歐洲、1臺部署在日本。根域名服務器由美國政府授權的互聯網名稱與數字地址分配機構(ICANN)統一管理。

(2)頂級域名服務器(頂級DNS服務器)

顧名思義,頂級域名服務器負責管理在每個頂級域名下注冊的二級域名解析工作,即它可以根據二級域名尋找到二級域名服務器的IP地址。頂級域名服務器就相當于一個朝代的封疆大吏。

(3)權威域名服務器(權威DNS服務器)

權威域名服務器負責對特定的域名進行解析,它管理頂級域名下的二級域名、三級域名、四級域名等的服務器。從名字中的“權威”可以看出,權威域名服務器最終決定了一個域名到底應該被解析成哪個IP地址,它是DNS中最核心的部分。

每個域名對應的權威域名服務器都可能不同,每個權威域名服務器僅可解析它負責的域名,比如負責google.com域名的權威域名服務器無法解析域名apple.com。大型互聯網公司一般會自建權威域名服務器,而中小型企業一般會將域名托管給知名的權威域名服務商。

(4)本地域名服務器(本地DNS服務器)

本地域名服務器不屬于域名層次結構中的任何一層,但是它對DNS非常重要,相當于域名解析的緩存。任何一臺主機在進行網絡地址配置時,都會配置一臺域名服務器作為本地域名服務器,它是主機在進行域名查詢時首先要查詢的域名服務器。本地域名服務器一般由網絡運營商提供,它作為主機訪問網絡時域名解析的總代理,會將域名解析結果緩存到本地,以便加速主機后面的域名解析過程。

1.2.4 域名解析過程

域名解析一般采用遞歸查詢方式執行,一個完整的域名解析過程如圖1-3所示。

  1. 當客戶端訪問某個域名時,會先在設備的本地緩存中查找是否有此域名對應的IP地址。本地緩存包括瀏覽器緩存計算機系統Hosts文件DNS緩存
  2. 如果本地緩存中沒有對應的IP地址,則客戶端向本地域名服務器發起域名解析請求。如果本地域名服務器保存了域名對應的IP地址,則可以直接返回;否則,本地域名服務器作為客戶端的全權代理,遞歸地完成域名解析。
  3. 本地域名服務器先向根域名服務器發起域名解析請求。根域名服務器收到請求后,會根據所要查詢的域名的后綴將所對應的頂級域名服務器(如.com)地址返回給本地域名服務器。
  4. 本地域名服務器根據返回結果向所對應的頂級域名服務器發起查詢請求。頂級域名服務器會先查看自己的緩存中是否有此域名的解析記錄,如果有,則將IP地址解析結果返回給本地域名服務器,本地域名服務器再將其返回給客戶端,域名解析完成。而如果頂級域名服務器的緩存中沒有解析記錄,則將域名對應的權威域名服務器地址返回給本地域名服務器。
  5. 本地域名服務器繼續向權威域名服務器發起域名解析請求。權威域名服務器最終將與域名關聯的IP地址返回給本地域名服務器,本地域名服務器再將其返回給客戶端,域名解析完成。

image-20250216111311130

可以看到,除客戶端查詢本地緩存和本地域名服務器發起請求之外,域名解析的其余各環節均以本地域名服務器為中心進行遞歸查詢,本地域名服務器在域名解析的整個環節中承擔了代理的角色。

需要額外說明的是,一旦本地域名服務器獲得域名解析記錄,它就會在本地進行記錄緩存,以便下次客戶端再向它查詢同一個域名時可以直接獲得結果,而不用再進行遞歸查詢了。被緩存的域名解析記錄格式大致如圖1-4所示。

image-20250216111433001

當查詢域名(如www.baidu.com)時,域名解析記錄會包含如下數據。

  • 生存周期(TTL):表示這條記錄在本地域名服務器中被緩存的時長。
  • 協議類型(Class): 一般標識為IN,表示因特網。
  • 記錄類型(Type ): A表示IPv4地址,AAAA表示IPv6地址。
  • 記錄數據(Rdata ):與域名關聯的地址信息。

總結

什么是DNS?

  • DNS( Domain Name System,域名系統)是互聯網中的核心服務,它維護域名與對應 IP地址的映射關系,并提供將域名翻譯為IP地址的域名解析功能。

域名服務器的類型?

  1. 根域名服務器
  2. 頂級域名服務器
  3. 權威域名服務器
  4. 本地域名服務器

DNS解析流程?

  1. 當客戶端訪問某個域名時,會先在設備的本地緩存中查找是否有此域名對應的IP地址。本地緩存包括瀏覽器緩存計算機系統Hosts文件DNS緩存
  2. 如果本地緩存中沒有對應的IP地址,則客戶端向本地域名服務器發起域名解析請求。如果本地域名服務器保存了域名對應的IP地址,則可以直接返回;否則,本地域名服務器作為客戶端的全權代理,遞歸地完成域名解析。
  3. 本地域名服務器先向根域名服務器發起域名解析請求。根域名服務器收到請求后,會根據所要查詢的域名的后綴將所對應的頂級域名服務器(如.com)地址返回給本地域名服務器。
  4. 本地域名服務器根據返回結果向所對應的頂級域名服務器發起查詢請求。頂級域名服務器會先查看自己的緩存中是否有此域名的解析記錄,如果有,則將IP地址解析結果返回給本地域名服務器,本地域名服務器再將其返回給客戶端,域名解析完成。而如果頂級域名服務器的緩存中沒有解析記錄,則將域名對應的權威域名服務器地址返回給本地域名服務器。
  5. 本地域名服務器繼續向權威域名服務器發起域名解析請求。權威域名服務器最終將與域名關聯的IP地址返回給本地域名服務器,本地域名服務器再將其返回給客戶端,域名解析完成。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/70220.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/70220.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/70220.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

全面解析鴻蒙(HarmonyOS)開發:從入門到實戰,構建萬物互聯新時代

文章目錄 引言 一、鴻蒙操作系統概述二、鴻蒙開發環境搭建三、鴻蒙核心開發技術1. **ArkUI框架**2. **分布式能力開發**3. **原子化服務與元服務** 四、實戰案例:構建分布式音樂播放器五、鴻蒙開發工具與調試技巧六、鴻蒙生態與未來展望結語 引言 隨著萬物互聯時代…

Android:播放Rtsp視頻流的兩種方式

一.SurfaceView Mediaplayer XML中添加SurfaceView: <SurfaceViewandroid:id"id/surface_view"android:layout_width"match_parent"android:layout_height"match_parent"/> Activity代碼&#xff1a; package com.android.rtsp;impor…

Next.js【詳解】CSS 樣式方案

全局樣式 Global CSS 默認已創建&#xff0c;即 src\app\globals.css&#xff0c;可根據需要修改 默認在全局布局中導入 src\app\layout.tsx import "./globals.css";組件樣式 CSS Modules 新建文件 src\app\test\styles.module.css .red {color: red;}導入目標頁面…

LVS相關原理

一、LVS集群的體系結構 1.1 LVS簡介 LVS 是 Linux Virtual Server 的簡稱&#xff0c;也就是 Linux 虛擬服務器 , 是一個由章文嵩博士發起的自由軟件項目&#xff0c;它的官方站點是 www.linuxvirtualserver.org 。現在 LVS 已經是 Linux標準內核的一部分&#xff0c;在Linux2…

【2025深度學習系列專欄大綱:深入探索與實踐深度學習】

第一部分:深度學習基礎篇 第1章:深度學習概覽 1.1 深度學習的歷史背景與發展軌跡 1.2 深度學習與機器學習、傳統人工智能的區別與聯系 1.3 深度學習的核心組件與概念解析 神經網絡基礎 激活函數的作用與類型 損失函數與優化算法的選擇 1.4 深度學習框架簡介與選擇建議 第2…

Java與C語言中取模運算符%的區別對比

博客主頁&#xff1a; [小????????] 本文專欄: Java 文章目錄 &#x1f4af;前言&#x1f4af;C語言中的取模運算符 %基本行為示例 注意事項示例&#xff1a;負數取模 &#x1f4af;Java中的取模運算符 %基本行為示例 對浮點數的支持示例&#xff1a;浮點數取模 符…

OpenCV機器學習(4)k-近鄰算法(k-Nearest Neighbors, KNN)cv::ml::KNearest類

操作系統&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 編程語言&#xff1a;C11 算法描述 cv::ml::KNearest 是 OpenCV 機器學習模塊中的一部分&#xff0c;它提供了實現 k-近鄰算法&#xff08;k-Nearest Neighbors, KNN&#xff09;的…

過于依賴chatgpt編程會有哪些弊端?

過于依賴ChatGPT編程可能會帶來以下問題&#xff1a; 1. 基礎不扎實&#xff0c;容易“變菜” 以前遇到代碼還會琢磨哪里不懂、怎么改&#xff0c;現在直接復制粘貼&#xff0c;時間長了可能連基本的語法和邏輯都搞不清楚。就像考試總抄答案&#xff0c;真讓你自己寫的時候腦子…

紅隊視角出發的k8s敏感信息收集——Kubernetes API 擴展與未授權訪問

針對 Kubernetes 第三方組件與 Operator 的詳細攻擊視角分析&#xff0c;涵蓋 Service Mesh、Helm Releases 和 Database Operators 的潛在風險及利用方法。 攻擊鏈示例 1. 攻擊者通過未授權的 Tiller 服務部署惡意 Helm Chart → 2. 創建后門 Pod 并橫向移動至 Istio 控制平…

3D與2D機器視覺機械臂引導的區別

3D與2D機器視覺在機械臂引導中的主要區別如下&#xff1a; 數據維度 2D視覺&#xff1a;僅處理平面圖像&#xff0c;提供X、Y坐標信息&#xff0c;無法獲取深度&#xff08;Z軸&#xff09;數據。 3D視覺&#xff1a;處理三維空間數據&#xff0c;提供X、Y、Z坐標及物體的姿態…

日常開發中,使用JSON.stringify來實現深拷貝的坑

使用JSON.stringify的方式來實現深拷貝的弊端 弊端一&#xff1a;無法拷貝NaN、Infinity、undefined這類值 無法拷貝成功的原因&#xff1a; 對于JSON來說&#xff0c;它支持的數據類型只有null、string、number、boolean、Object、Array&#xff0c;所以對于它不支持的數據類…

AI大模型(如GPT、BERT等)可以通過自然語言處理(NLP)和機器學習技術,顯著提升測試效率

在軟件測試中,AI大模型(如GPT、BERT等)可以通過自然語言處理(NLP)和機器學習技術,顯著提升測試效率。以下是幾個具體的應用場景及對應的代碼實現示例: 1. 自動生成測試用例 AI大模型可以根據需求文檔或用戶故事自動生成測試用例。 代碼示例(使用 OpenAI GPT API): …

【Linux】Ubuntu Linux 系統——Node.js 開發環境

??大家好&#xff0c;我是練小杰&#xff0c;今天星期五了&#xff0c;同時也是2025年的情人節&#xff0c;今晚又是一個人的舉個爪子&#xff01;&#xff01; &#x1f642; 本文是有關Linux 操作系統中 Node.js 開發環境基礎知識&#xff0c;后續我將添加更多相關知識噢&a…

Dockerfile 編寫推薦

一、導讀 本文主要介紹在編寫 docker 鏡像的時候一些需要注意的事項和推薦的做法。 雖然 Dockerfile 簡化了鏡像構建的過程&#xff0c;并且把這個過程可以進行版本控制&#xff0c;但是不正當的 Dockerfile 使用也會導致很多問題。 docker 鏡像太大。如果你經常使用鏡像或者…

mysql 學習16 視圖,存儲過程,存儲函數,觸發器

視圖&#xff0c; 存儲過程&#xff0c; 存儲函數 觸發器

SpringBoot+Vue+數據可視化的動漫妝造服務平臺(程序+論文+講解+安裝+調試+售后等)

感興趣的可以先收藏起來&#xff0c;還有大家在畢設選題&#xff0c;項目以及論文編寫等相關問題都可以給我留言咨詢&#xff0c;我會一一回復&#xff0c;希望幫助更多的人。 系統介紹 在當今數字化高速發展的時代&#xff0c;動漫產業迎來了前所未有的繁榮&#xff0c;動漫…

rtsp rtmp 跟 http 區別

SDP 一SDP介紹 1. SDP的核心功能 會話描述&#xff1a;定義會話的名稱、創建者、時間范圍、連接地址等全局信息。媒體協商&#xff1a;明確媒體流的類型&#xff08;如音頻、視頻&#xff09;、傳輸協議&#xff08;如RTP/UDP&#xff09;、編碼格式&#xff08;如H.264、Op…

Containerd 簡介、安裝與使用指南

1. Containerd 簡介 Containerd 是一個開源的容器運行時&#xff0c;專注于管理容器的生命周期。它最初是 Docker 的一部分&#xff0c;后來被分離出來成為一個獨立的項目&#xff0c;并成為 Kubernetes 和其他容器平臺的底層運行時。Containerd 提供了容器的創建、啟動、停止…

開源語音克隆項目 OpenVoice V2 本地部署

#本機環境 WIN11 I5 GPU 4060ti 16G 內存 32G #開始 git clone https://github.com/myshell-ai/OpenVoice.git conda create -n opvenv python3.9 -y conda activate opvenv pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/…

【Prometheus】prometheus結合domain_exporter實現域名監控

?? 歡迎大家來到景天科技苑?? ???? 養成好習慣,先贊后看哦~???? ?? 作者簡介:景天科技苑 ??《頭銜》:大廠架構師,華為云開發者社區專家博主,阿里云開發者社區專家博主,CSDN全棧領域優質創作者,掘金優秀博主,51CTO博客專家等。 ??《博客》:Python全…