簡述CDN原理
簡述CDN原理
在描述CDN的實現原理,讓我們先看傳統的未加快取服務的訪問過程,以便了解CDN快取訪問方式與未加快取訪問方式的差別:
使用者提交域名→瀏覽器對域名進行解釋→得到目的主機的IP地址→根據IP地址訪問發出請求→得到請求資料並回復
由上可見,使用者訪問未使用CDN快取網站的過程為:
1) 使用者向瀏覽器提供要訪問的域名;
2) 瀏覽器呼叫域名解析函式庫對域名進行解析,以得到此域名對應的IP地址;
3) 瀏覽器使用所得到的IP地址,向域名的服務主機發出資料訪問請求;
4) 瀏覽器根據域名主機返回的資料顯示網頁的內容。
通過以上四個步驟,瀏覽器完成從使用者處接收使用者要訪問的域名到從域名服務主機處獲取資料的整個過程。CDN網路是在使用者和伺服器之間增加Cache層,如何將使用者的請求引導到Cache上獲得源伺服器的資料,主要是通過接管DNS實現,下面讓我們看看訪問使用CDN快取後的網站的過程:
通過上圖,我們可以瞭解到。
使用了CDN快取後的網站的訪問過程變為:
1) 使用者向瀏覽器提供要訪問的域名;
2) 瀏覽器呼叫域名解析庫對域名進行解析,由於CDN對域名解析過程進行了調整,所以解析函式庫一般得到的是該域名對應的
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伺服器時,還需要維護一臺授權伺服器,控制哪些域名可以進行快取,而哪些又不進行快取,以免發生開放代理的情況。