在描述CDN的實現原理,讓咱們先看傳統的未加緩存服務的訪問過程,以便了解CDN緩存訪問方式與未加緩存訪問方式的差異:瀏覽器
用戶提交域名→瀏覽器對域名進行解釋→獲得目的主機的IP地址→根據IP地址訪問發出請求→獲得請求數據並回復緩存
由上可見,用戶訪問未使用CDN緩存網站的過程爲:服務器
1)、用戶向瀏覽器提供要訪問的域名;網絡
2)、瀏覽器調用域名解析函數庫對域名進行解析,以獲得此域名對應的IP地址;負載均衡
3)、瀏覽器使用所獲得的IP地址,向域名的服務主機發出數據訪問請求;ide
4)、瀏覽器根據域名主機返回的數據顯示網頁的內容。函數
經過以上四個步驟,瀏覽器完成從用戶處接收用戶要訪問的域名到從域名服務主機處獲取數據的整個過程。CDN網絡是在用戶和服務器之間增長Cache層,如何將用戶的請求引導到Cache上得到源服務器的數據,主要是經過接管DNS實現,下面讓咱們看看訪問使用CDN緩存後的網站的過程:網站
流程圖代理
經過上圖,咱們能夠了解到,使用了CDN緩存後的網站的訪問過程變爲:域名
1)、用戶向瀏覽器提供要訪問的域名;
2)、瀏覽器調用域名解析庫對域名進行解析,因爲CDN對域名解析過程進行了調整,因此解析函數庫通常獲得的是該域名對應的CNAME記錄,爲了獲得實際IP地址,瀏覽器須要再次對得到的CNAME域名進行解析以獲得實際的IP地址;在此過程當中,使用的全局負載均衡DNS解析,如根據地理位置信息解析對應的IP地址,使得用戶能就近訪問。
3)、這次解析獲得CDN緩存服務器的IP地址,瀏覽器在獲得實際的IP地址之後,向緩存服務器發出訪問請求;
4)、緩存服務器根據瀏覽器提供的要訪問的域名,經過Cache內部專用DNS解析獲得此域名的實際IP地址,再由緩存服務器向此實際IP地址提交訪問請求;
5)、緩存服務器從實際IP地址得獲得內容之後,一方面在本地進行保存,以備之後使用,另外一方面把獲取的數據返回給客戶端,完成數據服務過程;
6)、客戶端獲得由緩存服務器返回的數據之後顯示出來並完成整個瀏覽的數據請求過程。
經過以上的分析咱們能夠獲得,爲了實現既要對普通用戶透明(即加入緩存之後用戶客戶端無需進行任何設置,直接使用被加速網站原有的域名便可訪問,又要在爲指定的網站提供加速服務的同時下降對ICP的影響,只要修改整個訪問過程當中的域名解析部分,以實現透明的加速服務,下面是CDN網絡實現的具體操做過程。
1)、做爲ICP,只須要把域名解釋權交給CDN運營商,其餘方面不須要進行任何的修改;操做時,ICP修改本身域名的解析記錄,通常用cname方式指向CDN網絡Cache服務器的地址。
2)、做爲CDN運營商,首先須要爲ICP的域名提供公開的解析,爲了實現sortlist,通常是把ICP的域名解釋結果指向一個CNAME記錄;
3)、當須要進行sortlist時,CDN運營商能夠利用DNS對CNAME指向的域名解析過程進行特殊處理,使DNS服務器在接收到客戶端請求時能夠根據客戶端的IP地址,返回相同域名的不一樣IP地址;
4)、因爲從cname得到的IP地址,而且帶有hostname信息,請求到達Cache以後,Cache必須知道源服務器的IP地址,因此在CDN運營商內部維護一個內部DNS服務器,用於解釋用戶所訪問的域名的真實IP地址;
5)、在維護內部DNS服務器時,還須要維護一臺受權服務器,控制哪些域名能夠進行緩存,而哪些又不進行緩存,以避免發生開放代理的狀況。