1. 程式人生 > 其它 >DNS、CDN加速和域名解析之間的關係

DNS、CDN加速和域名解析之間的關係

DNS

什麼是DNS?

DNS,英文全稱為:Domain Name System,中文譯名:域名系統。
本質上,是儲存域名和IP地址對映關係的分散式服務。
它將人類可讀的域名,轉換成數字IP地址,供計算機之間相互連線。

DNS的工作原理

如圖所示,模擬的是使用者開啟瀏覽器,輸入網址,到顯示頁面到顯示器上的流程。
按圖中的數字,逐步拆解如下:

  1. 使用者開啟web瀏覽器,在位址列中輸入www.example.com,然後敲擊回車鍵。
  2. www.example.com的請求,被路由到本地DNS伺服器,如果在本地DNS伺服器查詢到域名對映的快取記錄,則直接返回IP地址給瀏覽器。
  3. 如果在本地DNS伺服器
    查詢不到域名對映的記錄,則由本地DNS伺服器將域名www.example.com,轉發給DNS根伺服器DNS根伺服器不負責解析域名,但是會將對應的域伺服器,作為響應,返回本地DNS伺服器。這裡對應的域伺服器.com域伺服器。也即頂級域名TLD(top level domain)。
  4. 本地DNS伺服器傳送域名到.com域伺服器.com域伺服器會使用與example.com相關的DNS伺服器作為響應,返回給本地DNS伺服器
  5. 本地DNS伺服器選擇其中一臺DNS伺服器(命名為:Amazon Route 53),將www.example.com的請求,轉發到該伺服器。
  6. Amazon Route 53伺服器,查找出www.example.com
    的記錄,獲取到對應的IP地址,並將IP地址返回給DNS解析程式。
  7. 本地DNS伺服器接收到域名對應的IP地址後,將IP值返回給瀏覽器。並根據TTL,快取域名www.example.com的對映。
  8. web瀏覽器根據IP地址,傳送請求到目標伺服器,請求相關資源。
  9. 目標伺服器將相關資源返回給瀏覽器,瀏覽器接收到資源,顯示到頁面上。

此處的本地DNS伺服器,一般是ISP(Internet Service Provider)提供。ISP,即是網際網路服務提供商。比如,我們熟知的電信,就是ISP。

TTL

DNS解析中,一般都會有一個引數需要設定,即TTL(Time To Live)。
TTL的作用,是告知本地DNS伺服器

,域名可以在其機器上快取的最長時間是多久。
比如阿里雲,預設的TTL是10分鐘,也即本地DNS伺服器,可以對域名快取10分鐘。10分鐘之後,本地DNS伺服器會刪除這條記錄。刪除之後,如果使用者再次訪問www.example.com,則需要重複上述流程。

TTL的最大值是:24小時。

CDN

什麼是CDN?

CDN,英文全名:Content Delivery Network,即內容分發網路。
它是構建在現有網際網路基礎上的一層智慧虛擬網路
通過現實世界,部署在各個地區的物理實體節點伺服器,提供內容給使用者就近訪問。
CDN伺服器的本質,是儲存源伺服器分發的資源,也即資源副本,供使用者就近訪問,縮短使用者檢視內容的訪問延遲。
比如,Leon公司,源伺服器部署在英國,並在中國和英國都部署有CDN伺服器。則中國的使用者,只需要訪問中國CDN伺服器即可,不需要通過路由多層轉發,訪問英國的源伺服器。依此,提高網路資源的訪問速度。

CDN的好處

CDN伺服器,可以解決 網路頻寬小使用者訪問量大網點分佈不均勻等問題,並提高使用者訪問網站的響應速度增強網站的可用性

CDN怎麼工作?

CDN加速原理

瀏覽器發起HTTP請求到本地DNS伺服器本地DNS伺服器使用CNAME的方式,將資源域名重定向到CDN服務,依靠CDN的策略,查詢到最佳CDN節點IP。瀏覽器訪問該節點,用最短訪問時延,下載所需的資源。

工作流程

CDN節點有快取
  1. 使用者在瀏覽器輸入網站域名www.example.com,瀏覽器向本地DNS伺服器發起域名解析請求
  2. 域名解析請求,被本地DNS伺服器轉發到域名授權DNS服務
  3. 域名授權DNS查詢到,域名通過CNAME,對映到www.example.com.c.cdnhwc1.com,返回給本地DNS伺服器
  4. 本地DNS伺服器,訪問www.example.com.c.cdnhwc1.com對應的CDN伺服器
  5. CDN伺服器對域名進行解析,使用CDN策略,查找出最佳的CDN節點的IP地址,返回給本地DNS伺服器
  6. 本地DNS伺服器返回CDN節點IP地址給瀏覽器
  7. 瀏覽器得到域名www.example.com對應的IP地址後,向該IP地址(CDN節點)發出請求
  8. CDN節點將使用者請求的資源進行返回
CDN節點無快取

前7步的流程,和CDN節點有快取的情況一致。

區別是:訪問的CDN節點,沒有資源副本,需要先向源伺服器拉取資源,快取到CDN節點後,再返回給瀏覽器。

增加的步驟解析:
7. 瀏覽器的請求到達CDN節點,CDN節點在本地快取查詢不到資源
8. CDN節點請求源伺服器(ps: 也可以是上級快取伺服器),拉取使用者所需的資源
9. CDN節點將拉取的資源快取到本地
10. CDN節點將使用者請求的資源進行返回

域名解析

什麼是A記錄?

A記錄用來指定主機名或域名,對應的IP地址。

如上圖所示,是我的阿里雲域名配置,將fe-interview.wangxiaokai.vip指向對應的IP地址****

什麼是CNAME記錄?

 

CNAME的作用,是將一個域名對映到另一個域名,也即域名的別名

如上圖所示, 我將note.wangxiaokai.vip指向另一個域名hosting.gitbook.com
訪問note.wangxiaokai.vip等同於訪問hosting.gitbook.com

CNAME的應用,是需要服務保持穩定域名的場景。
比如CDN節點域名,就是使用CNAME進行對映的。如果後續的地區CDN節點伺服器更換IP地址,只需要維護CDN策略而已,不需要使用者修改接入邏輯。