主頁 >  其他 > 底層網路知識詳解-陌生的資料中心1-DNS協議

底層網路知識詳解-陌生的資料中心1-DNS協議

2020-10-27 21:51:03 其他

前面我們講了平時常見的看新聞、支付、直播、下載等場景,現在網站的數目非常多,常用的網站就有二三十個,如果全部用 IP 地址進行訪問,恐怕很難記住,于是,就需要一個地址簿,根據名稱,就可以查看具體的地址,

例如,我要去西湖邊的“外婆家”,這就是名稱,然后通過地址簿,查看到底是哪條路多少號,

DNS 服務器

在網路世界,也是這樣的,你肯定記得住網站的名稱,但是很難記住網站的 IP 地址,因而也需要一個地址簿,就是 DNS 服務器

由此可見,DNS 在日常生活中多么重要,每個人上網,都需要訪問它,但是同時,這對它來講也是非常大的挑戰,一旦它出了故障,整個互聯網都將癱瘓,另外,上網的人分布在全世界各地,如果大家都去同一個地方訪問某一臺服務器,時延將會非常大,因而,DNS 服務器,一定要設定成高可用、高并發和分布式的

于是,就有了這樣樹狀的層次結構,

 

  • 根 DNS 服務器 :回傳頂級域 DNS 服務器的 IP 地址
  • 頂級域 DNS 服務器:回傳權威 DNS 服務器的 IP 地址
  • 權威 DNS 服務器 :回傳相應主機的 IP 地址

DNS 決議流程

  1. 電腦客戶端會發出一個 DNS 請求,問 www.163.com 的 IP 是啥啊,并發給本地域名服務器 (本地 DNS),那本地域名服務器 (本地 DNS) 是什么呢?如果是通過 DHCP 配置,本地 DNS 由你的網路服務商(ISP),如電信、移動等自動分配,它通常就在你網路服務商的某個機房,
  2. 本地 DNS 收到來自客戶端的請求,你可以想象這臺服務器上快取了一張域名與之對應 IP 地址的大表格,如果能找到 www.163.com,它就直接回傳 IP 地址,如果沒有,本地 DNS 會去問它的根域名服務器:“老大,能告訴我 www.163.com 的 IP 地址嗎?”根域名服務器是最高層次的,全球共有 13 套,它不直接用于域名決議,但能指明一條道路,
  3. 根 DNS 收到來自本地 DNS 的請求,發現后綴是 .com,說:“哦,www.163.com 啊,這個域名是由.com 區域管理,我給你它的頂級域名服務器的地址,你去問問它吧,”
  4. 本地 DNS 轉向問頂級域名服務器:“老二,你能告訴我 www.163.com 的 IP 地址嗎?”頂級域名服務器就是大名鼎鼎的比如 .com、.net、 .org 這些一級域名,它負責管理二級域名,比如 163.com,所以它能提供一條更清晰的方向,
  5. 頂級域名服務器說:“我給你負責 www.163.com 區域的權威 DNS 服務器的地址,你去問它應該能問到,”
  6. 本地 DNS 轉向問權威 DNS 服務器:“您好,www.163.com 對應的 IP 是啥呀?”163.com 的權威 DNS 服務器,它是域名決議結果的原出處,為啥叫權威呢?就是我的域名我做主,
  7. 權威 DNS 服務器查詢后將對應的 IP 地址 X.X.X.X 告訴本地 DNS,
  8. 本地 DNS 再將 IP 地址回傳客戶端,客戶端和目標建立連接,

至此,我們完成了 DNS 的決議程序,現在總結一下,整個程序我畫成了一個圖,

 

負載均衡

站在客戶端角度,這是一次 DNS 遞回查詢程序,因為本地 DNS 全權為它效勞,它只要坐等結果即可,在這個程序中,DNS 除了可以通過名稱映射為 IP 地址,它還可以做另外一件事,就是負載均衡

還是以訪問“外婆家”為例,還是我們開頭的“外婆家”,但是,它可能有很多地址,因為它在杭州可以有很多家,所以,如果一個人想去吃“外婆家”,他可以就近找一家店,而不用大家都去同一家,這就是負載均衡,

DNS 首先可以做內部負載均衡

例如,一個應用要訪問資料庫,在這個應用里面應該配置這個資料庫的 IP 地址,還是應該配置這個資料庫的域名呢?顯然應該配置域名,因為一旦這個資料庫,因為某種原因,換到了另外一臺機器上,而如果有多個應用都配置了這臺資料庫的話,一換 IP 地址,就需要將這些應用全部修改一遍,但是如果配置了域名,則只要在 DNS 服務器里,將域名映射為新的 IP 地址,這個作業就完成了,大大簡化了運維,

在這個基礎上,我們可以再進一步,例如,某個應用要訪問另外一個應用,如果配置另外一個應用的 IP 地址,那么這個訪問就是一對一的,但是當被訪問的應用撐不住的時候,我們其實可以部署多個,但是,訪問它的應用,如何在多個之間進行負載均衡?只要配置成為域名就可以了,在域名決議的時候,我們只要配置策略,這次回傳第一個 IP,下次回傳第二個 IP,就可以實作負載均衡了,

另外一個更加重要的是,DNS 還可以做全域負載均衡

為了保證我們的應用高可用,往往會部署在多個機房,每個地方都會有自己的 IP 地址,當用戶訪問某個域名的時候,這個 IP 地址可以輪詢訪問多個資料中心,如果一個資料中心因為某種原因掛了,只要在 DNS 服務器里面,將這個資料中心對應的 IP 地址洗掉,就可以實作一定的高可用,

另外,我們肯定希望北京的用戶訪問北京的資料中心,上海的用戶訪問上海的資料中心,這樣,客戶體驗就會非常好,訪問速度就會超快,這就是全域負載均衡的概念,

示例:DNS 訪問資料中心中物件存盤上的靜態資源

我們通過 DNS 訪問資料中心中物件存盤上的靜態資源為例,看一看整個程序,

假設全國有多個資料中心,托管在多個運營商,每個資料中心三個可用區(Available Zone),物件存盤通過跨可用區部署,實作高可用性,在每個資料中心中,都至少部署兩個內部負載均衡器,內部負載均衡器后面對接多個物件存盤的前置服務器(Proxy-server),

 

  1. 當一個客戶端要訪問 object.yourcompany.com 的時候,需要將域名轉換為 IP 地址進行訪問,所以它要請求本地 DNS 決議器,
  2. 本地 DNS 決議器先查看看本地的快取是否有這個記錄,如果有則直接使用,因為上面的程序太復雜了,如果每次都要遞回決議,就太麻煩了,
  3. 如果本地無快取,則需要請求本地的 DNS 服務器,
  4. 本地的 DNS 服務器一般部署在你的資料中心或者你所在的運營商的網路中,本地 DNS 服務器也需要看本地是否有快取,如果有則回傳,因為它也不想把上面的遞回程序再走一遍,
  5. 如果本地沒有,本地 DNS 才需要遞回地從根 DNS 服務器,查到.com 的頂級域名服務器,最終查到 yourcompany.com 的權威 DNS 服務器,權威 DNS 服務器回傳真實要訪問的 IP 地址,

對于不需要做全域負載均衡的簡單應用來講,yourcompany.com 的權威 DNS 服務器可以直接將 object.yourcompany.com 這個域名決議為一個或者多個 IP 地址,然后客戶端可以通過多個 IP 地址,進行簡單的輪詢,實作簡單的負載均衡,

但是對于復雜的應用,尤其是跨地域跨運營商的大型應用,則需要更加復雜的全域負載均衡機制,因而需要專門的設備或者服務器來做這件事情,這就是全域負載均衡器(GSLB,Global Server Load Balance)

在 yourcompany.com 的 DNS 服務器中,一般是通過配置 CNAME 的方式,給 object.yourcompany.com 起一個別名,例如 object.vip.yourcomany.com,然后告訴本地 DNS 服務器,讓它請求 GSLB 決議這個域名,GSLB 就可以在決議這個域名的程序中,通過自己的策略實作負載均衡,

圖中畫了兩層的 GSLB,是因為分運營商和地域,我們希望不同運營商的客戶,可以訪問相同運營商機房中的資源,這樣不跨運營商訪問,有利于提高吞吐量,減少時延,

  1. 第一層 GSLB,通過查看請求它的本地 DNS 服務器所在的運營商,就知道用戶所在的運營商,假設是移動,通過 CNAME 的方式,通過另一個別名 object.yd.yourcompany.com,告訴本地 DNS 服務器去請求第二層的 GSLB,
  2. 第二層 GSLB,通過查看請求它的本地 DNS 服務器所在的地址,就知道用戶所在的地理位置,然后將距離用戶位置比較近的 Region 里面,六個內部負載均衡(SLB,Server Load Balancer)的地址,回傳給本地 DNS 服務器,
  3. 本地 DNS 服務器將結果回傳給本地 DNS 決議器,
  4. 本地 DNS 決議器將結果快取后,回傳給客戶端,
  5. 客戶端開始訪問屬于相同運營商的距離較近的 Region 1 中的物件存盤,當然客戶端得到了六個 IP 地址,它可以通過負載均衡的方式,隨機或者輪詢選擇一個可用區進行訪問,物件存盤一般會有三個備份,從而可以實作對存盤讀寫的負載均衡,

 

小結

  • DNS 是網路世界的地址簿,可以通過域名查地址,因為域名服務器是按照樹狀結構組織的,因而域名查找是使用遞回的方法,并通過快取的方式增強性能;
  • 在域名和 IP 的映射程序中,給了應用基于域名做負載均衡的機會,可以是簡單的負載均衡,也可以根據地址和運營商做全域的負載均衡,

 

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/194167.html

標籤:其他

上一篇:縫合怪的電賽紀實

下一篇:底層網路知識詳解-陌生的資料中心2-HTTPDNS

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more