DNS、CDN加速和域名解析之間的關係
DNS
什麼是DNS?
DNS,英文全稱為:Domain Name System,中文譯名:域名系統。
本質上,是儲存域名和IP地址對映關係的分散式服務。
它將人類可讀的域名,轉換成數字IP地址,供計算機之間相互連線。
DNS的工作原理
如圖所示,模擬的是使用者開啟瀏覽器,輸入網址,到顯示頁面到顯示器上的流程。
按圖中的數字,逐步拆解如下:
- 使用者開啟web瀏覽器,在位址列中輸入
www.example.com
,然後敲擊回車鍵。 -
www.example.com
的請求,被路由到本地DNS伺服器
,如果在本地DNS伺服器
查詢到域名對映的快取記錄,則直接返回IP地址給瀏覽器。 - 如果在
本地DNS伺服器
本地DNS伺服器
將域名www.example.com
,轉發給DNS根伺服器
。DNS根伺服器
不負責解析域名,但是會將對應的域伺服器
,作為響應,返回本地DNS伺服器
。這裡對應的域伺服器
是.com域伺服器
。也即頂級域名TLD(top level domain)。 -
本地DNS伺服器
傳送域名到.com域伺服器
,.com域伺服器
會使用與example.com
相關的DNS伺服器作為響應,返回給本地DNS伺服器
。 -
本地DNS伺服器
選擇其中一臺DNS伺服器(命名為:Amazon Route 53),將www.example.com
的請求,轉發到該伺服器。 - Amazon Route 53伺服器,查找出
www.example.com
-
本地DNS伺服器
接收到域名對應的IP地址後,將IP值返回給瀏覽器。並根據TTL,快取域名www.example.com
的對映。 - web瀏覽器根據IP地址,傳送請求到目標伺服器,請求相關資源。
- 目標伺服器將相關資源返回給瀏覽器,瀏覽器接收到資源,顯示到頁面上。
此處的本地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節點有快取
- 使用者在瀏覽器輸入網站域名
www.example.com
,瀏覽器向本地DNS伺服器
發起域名解析請求 - 域名解析請求,被
本地DNS伺服器
轉發到域名授權DNS服務 - 域名授權DNS查詢到,域名通過
CNAME
,對映到www.example.com.c.cdnhwc1.com
,返回給本地DNS伺服器
-
本地DNS伺服器
,訪問www.example.com.c.cdnhwc1.com
對應的CDN伺服器
-
CDN伺服器
對域名進行解析,使用CDN策略,查找出最佳的CDN節點的IP地址,返回給本地DNS伺服器
-
本地DNS伺服器
返回CDN節點IP地址給瀏覽器 - 瀏覽器得到域名
www.example.com
對應的IP地址後,向該IP地址(CDN節點)發出請求 - 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策略而已,不需要使用者修改接入邏輯。