1. 程式人生 > >http協議進階(六)代理

http協議進階(六)代理

http協議 pan 設備 廣告 自動 中間 new 邏輯 反向

web代理服務器是網絡的中間實體,位於客戶端和服務器之間,扮演“中間人”的角色,作用是在各端點之間來回傳送報文。

其原理是:客戶端向代理服務器發送請求報文,代理服務器正確的處理請求和連接,然後返回響應;同時代理服務器自身要向web服務器發送請求並接收響應。

即:代理即是服務器,又是客戶端。如下圖所示:

技術分享圖片

一、代理的類型

1、私有代理

定義:單個客戶端專用的代理被稱為私有代理。

私有代理並不常見,但確實存在,比如一些瀏覽器的輔助產品,一些ISP服務,會在用戶的PC上直接運行一些小型代理,以便擴展瀏覽器特性,提高性能,或者為免費ISP服務提供主機廣告等。

2、公共代理

定義:多個客戶端共享的代理被稱為公共代理,也稱為“集中式代理”。

優點:節省成本,效率更高,方便管理,比如:“高速緩存代理服務器”。

二、代理和網關的區別

代理:連接兩個或多個使用相同協議的應用程序;

網關:連接兩個或多個使用不同協議的端點(可以理解為“協議轉換器”);

相同點:代理和網關之間的區別很模糊,代理經常也會做一些協議轉換的工作,比如:支持SSL協議、SOCKS防火墻、FTP訪問等。

如下圖所示:

技術分享圖片

三、代理的特點

1、資源訪問控制

利用過濾器代理進行身份權限驗證,或使用代理服務器在大量的web服務器和資源之間實現統一的訪問控制策略,創建審核跟蹤機制,對所有訪問控制功能進行配置,特別體現在大型環境或其他分布式機制的服務中。

技術分享圖片

2、提高安全性

利用代理服務器在網絡中的單一安全節點上限制哪些應用層協議的數據可以流入或者流出,還可以提供用來某些防範和殺毒的掛鉤程序,以便對流量進行詳細的檢查。

技術分享圖片

3、web緩存

可以利用緩存服務器維護存儲常用資源的本地副本,並將其按需提供,以減少連接,縮短連接時延,提高性能。

技術分享圖片

4、反向代理

代理可以扮演服務器的角色接收發送給web服務器的真實請求,也可以發起與其他服務器的通信,以便按需定位所請求的內容;可以利用反向代理來提高訪問web服務器上公共資源時的性能。

或者將其和內容路由功能配合使用,以創建分布式網絡。

技術分享圖片

5、內容路由器

代理服務器可以作為“內容路由器”使用,根據因特網的流量以及內容類型將請求導向特定的web服務器(類似負載均衡),也可以用來實現各種服務級的請求。

技術分享圖片

6、轉碼器

代理服務器也可以在將內容發送給客戶端之前,修改內容的主體格式,對其進行透明轉換,我們稱之為轉碼(比如更改圖片格式,文件編碼類型等)。

技術分享圖片

7、匿名

可以利用代理從HTTP報文中刪除身份特性(比如IP、cookie),從而提供高度的私密性和安全性。

技術分享圖片

四、代理服務器的部署

1、出口代理

將代理固定在本地網絡出口點,以便控制本地網絡和大型英特網之間的流量,提供針對企業外部惡意攻擊的防火墻保護;或降低帶寬費用,提高性能。

技術分享圖片

2、訪問(入口)代理

將代理放在ISP訪問點上,用來處理來自客戶端的聚合請求,ISP使用緩存代理來存儲常用的資源副本,提高用戶下載速度,降低帶寬耗費等。

技術分享圖片

3、反向代理

將代理部署在網絡便邊緣,web服務器之前,作為反向代理處理所有傳給web服務器的請求,並只在必要時向web服務器請求資源;反向代理可以提高服務器的安全性和性能。

技術分享圖片

4、網絡交換代理

將具有足夠處理能力的代理服務器放在網絡上的對等交換點,通過緩存來減輕網絡堵塞,並對流量進行監視。

技術分享圖片

5、層級代理

通過代理的層次結構將代理級聯起來,既可以是靜態的也可以是動態的,直到將報文發送到原始服務器。

下圖是一個三級代理的層級結構示意圖:

技術分享圖片

下圖是一個靜態動態代理結合的結構示意圖:

技術分享圖片

6、常見的幾種動態選擇父代理方式

①、負載均衡

子代理可能會根據當前父代理上的工作負載級別來決定如何選擇一個父代理,以達到負載均衡。

②、地理位置附近的路由

子代理可能會選擇負責原始服務器所在物理區域的父代理。

③、協議/類型路由

子代理可能根據URI將報文轉發到不同的父代理和原始服務器上,某些特定類型的URI可能要通過一些特殊的代理服務器轉發請求,以便進行特殊的協議處理。

④、基於訂購的路由

如果發布者為高性能服務額外付費了,他們的URI就會被轉發到大型緩存或者壓縮引擎上,以提高性能。

PS:在不同的產品中,動態父路由邏輯的實現方式各有不同,包括使用配置文件、腳本語言和動態可執行插件等。

五、代理如何獲取流量

1、修改客戶端配置

很多web客戶端都支持手工和自動的代理配置,如果將客戶端配置為使用代理服務器,客戶端會將HTTP請求直接發送給代理,而不是原始服務器。

技術分享圖片

2、修改網絡,攔截代理

依賴於監視HTTP流量的交換設備及路由設備,在客戶端不知情的情況下,對其進行攔截,並將流量導入一個代理。

技術分享圖片

3、反向代理

修改DNS的命名空間,假扮原始服務器的名稱和IP地址,這樣所有的請求都會發送給這些反向代理服務器,而不是原始服務器。

技術分享圖片

4、重定向

可以將某些web服務器的配置為向客戶端發送一條HTTP重定向命令,將客戶端請求重定向到一個代理上,收到重定向命令後,客戶端會與代理進行通信。

技術分享圖片

以上大概就是關於HTTP協議中代理相關的一些內容整理,涉及到具體實現以及其他方面,可以查閱或者學習相關的具體資料。。。

http協議進階(六)代理