1. 程式人生 > >DNS伺服器 和CDN

DNS伺服器 和CDN

整個網頁請求的流程如下:

我們先在瀏覽器輸入域名,然後通過DNS(Domain Name System) 域名解析系統解析出來域名的對應的IP,然後傳送請求得到響應返回給客戶端,整個流程如下:

 

那我們先了解一下DNS

一:什麼叫DNS

DNS(Domain Name Server,域名伺服器)是進行域名(domain name)和與之相對應的IP地址 (IP address)轉換的伺服器。DNS中儲存了一張域名(domain name)和與之相對應的IP地址 (IP address)的表,以解析訊息的域名。 域名是Internet上某一臺計算機或計算機組的名稱,用於在資料傳輸時標識計算機的電子方位(有時也指地理位置)。域名是由一串用點分隔的名字組成的,通常包含組織名,而且始終包括兩到三個字母的字尾,以指明組織的型別或該域所在的國家或地區。   DNS是計算機
域名系統
 (Domain Name System 或Domain Name Service) 的縮寫,它是由 域名解析器域名伺服器組成的。域名伺服器是指儲存有該網路中所有 主機的域名和對應 IP地址,並具有將域名轉換為IP地址功能的 伺服器。其中域名必須對應一個IP地址,一個IP地址可以有多個域名,而IP地址不一定有域名。域名系統採用類似目錄樹的等級結構。域名伺服器通常為客戶機/伺服器模式中的伺服器方,它主要有兩種形式:主伺服器和 轉發伺服器。將域名對映為IP地址的過程就稱為“ 域名解析”。

 

二:DNS的工作原理

DNS分為
Client
Server,Client扮演發問的角色,也就是問Server一個 Domain Name,而Server必須要回答此Domain Name的真正 IP地址。而當地的DNS先會查自己的資料庫。如果自己的資料庫沒有,則會往該DNS上所設的DNS伺服器詢問,依此得到答案之後,將收到的答案存起來,並回答客戶。DNS伺服器會根據不同的授權區(Zone),記錄所屬該網域下的各名稱資料,這個資料包括網域下的次網域名稱及主機名稱。在每一個名稱伺服器中都有一個快取快取區(Cache),這個快取快取區的主要目的是將該名稱伺服器所查詢出來的名稱及相對的IP地址記錄快取快取區中,這樣當下一次還有另外一個客戶端到此伺服器上去查詢相同的名稱 時,伺服器就不用在到別臺
主機
上去尋找,而直接可以從快取區中找到該筆名稱記錄資料,傳回給客戶端,加速客戶端對名稱查詢的速度。   當DNS客戶端向指定的DNS伺服器查詢網際網路上的某一臺主機名稱 DNS伺服器會在該資料庫中找尋使用者所指定的名稱 如果沒有,該伺服器會先在自己的快取快取區中查詢有無該筆紀錄,如果找到該筆名稱記錄後,會從DNS伺服器直接將所對應到的IP地址傳回給客戶端 ,如果名稱伺服器在資料記錄查不到且快取快取區中也沒有時,會向最接近的名稱伺服器去要求幫忙找尋該名稱的IP地址 ,在另一臺伺服器上也有相同的動作的查詢,當查詢到後會回覆原本要求查詢的伺服器,該DNS伺服器在接收到另一臺DNS伺服器查詢的結果後,先將所查詢到的主機名稱及對應IP地址記錄到快取快取區中 ,最後在將所查詢到的結果回覆給客戶端。    CDN的一些介紹(CDN是可以快取記憶體)  

傳統的網路訪問形式為:

由上圖可見,使用者訪問未使用CDN快取網站的過程為:

  1. 使用者向瀏覽器提供要訪問的域名;
  2. 瀏覽器呼叫域名解析函式庫對域名進行解析,以得到此域名對應的IP地址;
  3. 瀏覽器使用所得到的IP地址,域名的服務主機發出資料訪問請求;
  4. 瀏覽器根據域名主機返回的資料顯示網頁的內容。

通過以上四個步驟,瀏覽器完成從使用者處接收使用者要訪問的域名到從域名服務主機處獲取資料的整個過程。CDN網路是在使用者和伺服器之間增加Cache層,如何將使用者的請求引導到Cache上獲得源伺服器的資料,主要是通過接管DNS實現,下面讓我們看看訪問使用CDN快取後的網站的過程:

CDN客戶使用CDN的方法:
對於CDN客戶來說,不需要改動網站架構,只需要修改自己的DNS解析,設定一個CNAME指向CDN服務商即可。原理在下面會解釋

通過上圖,我們可以瞭解到,使用了CDN快取後的網站的訪問過程變為:

  1. 使用者向瀏覽器提供要訪問的域名;
  2. 瀏覽器呼叫域名解析庫對域名進行解析,由於CDN對域名解析過程進行了調整,所以解析函式庫得到的是該域名對應的CNAME記錄(由於現在已經是使用了CDN服務,CNAME為CDN服務商域名),為了得到實際IP地址,瀏覽器需要再次對獲得的CNAME域名進行解析以得到實際的IP地址;在此過程中,使用的全域性負載均衡DNS解析,如根據地理位置資訊解析對應的IP地址,使得使用者能就近訪問。(CDN服務來提供最近的機器)
  3. 此次解析得到CDN快取伺服器的IP地址,瀏覽器在得到實際的IP地址以後,向快取伺服器發出訪問請求;
  4. 快取伺服器根據瀏覽器提供的要訪問的域名,通過Cache內部專用DNS解析得到此域名的實際IP地址,再由快取伺服器向此實際IP地址提交訪問請求;
  5. 快取伺服器從實際IP地址得得到內容以後,一方面在本地進行儲存,以備以後使用,二方面把獲取的資料返回給客戶端,完成資料服務過程;
  6. 客戶端得到由快取伺服器返回的資料以後顯示出來並完成整個瀏覽的資料請求過程。

概念解析:

CNAME(Canonical Name)指別名記錄也被稱為規範名字,CNAME可以理解為對域名設定別名。比如一個域名www.domain.com,設定一個CNAME指向它,由於www.domain.com與一個ip進行繫結,如果設定多個CNAME指向它,以後修改CNAME指向的伺服器時,只需要修改一個www.domain.com對應的ip即可。詳細可以參考dns一些名詞解釋,