一、正向代理(Forward Proxy) (圖1.1) 從上面的概念中,我們看出,文中所謂的正向代理就是代理服務器替代訪問方【用戶A】去訪問目標服務器【服務器B】 這就是正向代理的意義所在。而爲什麼要用代理服務器去代替訪問方【用戶A】去訪問服務器B呢?這就要從代理服務器使用的意義說起。
使用正向代理服務器作用主要有以下幾點: 1、訪問本無法訪問的服務器B,如下圖1.2 (圖1.2) 我們拋除複雜的網絡路由情節來看圖1.2,假設圖中路由器從左到右命名爲R1,R2假 設最初用戶A要訪問服務器B需要經過R1和R2路由器這樣一個路由節點,如果路由器R1或者路由器R2發生故障,那麼就無法訪問服務器B了。但是如果用戶 A讓代理服務器Z去代替自己訪問服務器B,由於代理服務器Z沒有在路由器R1或R2節點中,而是通過其它的路由節點訪問服務器B,那麼用戶A就可以得到服 務器B的數據了。現實中的例子就是“翻牆”。不過自從VPN技術被廣泛應用外,“翻牆”不但使用了傳統的正向代理技術,有的還使用了VPN技術。 圖 1.3防火牆作爲網關,用來過濾外網對其的訪問。假設用戶A和用戶B都設置了代理服務器,用戶A允許訪問互聯網,而用戶B不允許訪問互聯網(這個在代理服 務器Z上做限制)這樣用戶A因爲授權,可以通過代理服務器訪問到服務器B,而用戶B因爲沒有被代理服務器Z授權,所以訪問服務器B時,數據包會被直接丟 棄。 (圖1.4) 我 們總結一下 正向代理是一個位於客戶端和原始服務器(origin server)之間的服務器,爲了從原始服務器取得內容,客戶端向代理髮送一個請求並指定目標(原始服務器),然後代理向原始服務器轉交請求並將獲得的內 容返回給客戶端。客戶端必須設置正向代理服務器,當然前提是要知道正向代理服務器的IP地址,還有代理程序的端口。 (圖2.1)
用戶A始終認爲它訪問的是原始服務器B而不是代理服務器Z,但實用際上反向代理服務器接受用戶A的應答,從原始資源服務器B中取得用戶A的需求資源,然後發送給用戶A。由於防火牆的作用,只允許代理服務器Z訪問原始資源服務器B。儘管在這個虛擬的環境下,防火牆和反向代理的共同作用保護了原始資源服務器B,但用戶A並不知情。
(圖2.2) 當反向代理服務器不止一個的時候,我們甚至可以把它們做成集羣,當更多的用戶訪問資源服務器B的時候,讓不同的代理服務器Z(x)去應答不同的用戶,然後發送不同用戶需要的資源。 當然反向代理服務器像正向代理服務器一樣擁有CACHE的作用,它可以緩存原始資源服務器B的資源,而不是每次都要向原始資源服務器B請求數據,特別是一些靜態的數據,比如圖片和文件,如果這些反向代理服務器能夠做到和用戶X來自同一個網絡,那麼用戶X訪問反向代理服務器X,就會得到很高質量的速度。這正是CDN技術的核心。如下圖2.3 (圖2.3) 我們並不是講解CDN,所以去掉了CDN最關鍵的核心技術智能DNS。只是展示CDN技術實際上利用的正是反向代理原理這塊。
反向代理結論與正向代理正好相反,對於客戶端而言它就像是原始服務器,並且客戶端不需要進行任何特別的設置。客戶端向反向代理的命名空間(name-space)中的內容發送普通請求,接着反向代理將判斷向何處(原始服務器)轉交請求,並將獲得的內容返回給客戶端,就像這些內容原本就是它自己的一樣。
(圖3.1) 用戶A和用戶B並不知道行爲管理設備充當透明代理行爲,當用戶A或用戶B向服務器A或服務器B提交請求的時候,透明代理設備根據自身策略攔截並修改用戶A或B的報文,並作爲實際的請求方,向服務器A或B發送請求,當接收信息回傳,透明代理再根據自身的設置把允許的報文發回至用戶A或B,如上圖,如果透明代理設置不允許訪問服務器B,那麼用戶A或者用戶B就不會得到服務器B的數據。 |
|
|