1. 程式人生 > >圖解HTTP權威指南(四)| 代理

圖解HTTP權威指南(四)| 代理

作者簡介

李先生(Lemon),高階運維工程師(自稱),SRE專家(目標),夢想在35歲買一輛保時捷。喜歡鑽研底層技術,認為底層基礎才是王道。一切新技術都離不開作業系統(CPU、記憶體、磁碟)、網路等。堅持輸入輸出,記錄自己學習的點滴,在平凡中堅持前行,總有一天會遇見不一樣的自己。公眾號:運維汪(ID:Leeeee_Li)。
                                                                                 

一、什麼是Web代理

Web代理(proxy)伺服器是網路的中間實體。代理位於客戶端和服務端之間,扮演“中間人”的角色,在各端點之間來回傳送HTTP報文。某個客戶端專用的代理為私有代理,眾多客戶端共享的代理稱為公共代理。      

二、Web代理和閘道器的區別

代理:連線的是兩個或多個使用相同協議的應用程式。 閘道器:連線的是兩個或多個使用不同協議的端點。      

三、為什麼使用代理

1、兒童過濾器   假如在一個學校,既要對教育站點訪問無障礙,又要使用代理來組織對成人內容的訪問。  

 

 

2、文件訪問控制   使用代理伺服器在大量Web伺服器和Web資源之間實現統一的訪問控制策略。如 a)允許客戶端1無限制地訪問伺服器A的新聞頁面 b)客戶端2可以無限制地訪問網際網路 c)在允許客戶端3訪問伺服器B之前,需要輸入賬號密碼       3、安全防火牆   防火牆代理提高安全性,代理伺服器會在網路中的單一安全節點上限制哪些應用層協議的資料可以流入另一組織。還可以提供用來消除病毒的Web和E-mail代理使用的那種掛鉤程式,對流量進行詳細的檢查。

 

  4、Web快取   代理快取維護了常用的文件的本地副本,並將他們按需提供,以減少緩慢且昂貴的網路通訊。   5、反向代理   代理可以假扮Web伺服器,這些反向代理的代理接收發給Web伺服器的真實請求,與Web伺服器不同的是它們可以發起與其他伺服器的通訊,以便按需定位所請求的內容。   6、內容伺服器   代理伺服器可以作為“內容伺服器”使用,根據因特網流量狀況以及內容型別將請求導向特定的Web伺服器。也可實現各種服務級別的請求,比如使用者付費需要提高效能,內容路由器可以將請求轉發到附近的複製快取。   7、轉碼器   代理伺服器在將內容傳送給客戶端之前,可以修改內容的主體格式。在這些資料表示法之間進行的透明轉換被稱為轉碼。如在傳輸GIF圖片時,將其轉換為JPEG圖片;也可以對圖片進行壓縮。或者在傳輸文件的過程中將其轉換成另一種語言(將英文文件轉換為中文文件)。   8、匿名者   匿名者代理會主動從HTTP報文中刪除身份特性(比如客戶端IP地址、From首部、Referer首部、cookie、URI的session ID等),提高高度的私密性和匿名性。

 

 

四、代理伺服器的位置

1、出口代理 將代理固定在本地網路的出口點,以便控制本地網路與網際網路之間的流量。   2、訪問入口代理 代理常被放在ISP(Internet Server Provider)網際網路服務提供商訪問點上,用以處理來自客戶的聚合請求。ISP使用快取代理來儲存常用的文件副本,以提高使用者的下載速度,降低因特網頻寬耗費。   3、反向代理 代理通常會被部署在網路邊緣,在Web伺服器之前,作為替代物(反向代理)使用,它們可以處理所有傳送給Web伺服器的請求,並只在必要時向Web伺服器請求資源。   4、網路交換代理 可以將具有足夠處理能力的代理放在網路之間的因特網對等交換點上,通過快取來減輕因特網節點的擁塞,並對流量進行監視。

  

五、代理的層級結構

  可以通過代理層次結構將代理連線起來,代理層次結構的應用場景有:   1)負載均衡 子代理可能會根據當前父代理上的工作負載來決定如何選擇一個負載均衡,達到負載均衡的作用   2)地理位置附近的路由 子代理可能會選擇負責原始伺服器所在物理區域的代理   3)協議/型別路由 子代理可能會根據URI將報文轉發到不同的父代理和原始伺服器上去   4)基於訂購的路由 如果釋出者為高效能額外付費了,他們的URI就會被轉發到大型快取或壓縮引擎上去,以提高效能。  

六、如何使客戶端走向代理

客戶端通常會直接與Web伺服器進行通訊,如何使得客戶端的流量流向代理   1)修改客戶端   將客戶端配置為代理伺服器,客戶端就會將HTTP請求有意地直接傳送給代理,而不是原始伺服器。     2)修改網路   網路基礎層設施通過若干技術手段,在客戶端不知道或沒有參與的情況下,攔截網路流量並將其匯入代理。   3)修改DNS的名稱空間   放在Web伺服器的代理伺服器(反向代理),會直接假扮Web伺服器的名字和IP地址,這樣所有的請求就會發送給這些反向代理伺服器,而不得Web伺服器。   4)修改Web伺服器   將某些Web伺服器配置為向客戶端傳送一條HTTP重定向命令(響應碼305),將客戶端請求重定向到一個代理上去,收到重定向命令後,客戶端會與代理伺服器進行通訊。    

七、追蹤報文

1、Via首部   Via首部欄位列出了與報文途徑的每個中間節點有關的資訊,報文每經過一個節點,都必須將這個中間節點新增到Via列表的末尾。
Via:1.1 proxy-62.irenes-isp.net, 1.0 cache.joes-hardware.com

 

Via首部欄位用於記錄報文的轉發,診斷報文迴圈,標識請求、響應鏈上所有傳送者的協議能力。

 

  2、Via的語法   Via首部欄位包含一個由逗號分隔的路標,每個路標都表示一個獨立的代理伺服器或閘道器。Via包括四個元件,一個可選的協議名(預設為HTTP),一個必選的協議版本,一個必選的節點名和一個可選的描述性註釋。
Via:1.1 proxy-62.irenes-isp.net, 1.0 cache.joes-hardware.com

 

3、Via的請求和響應路徑   請求和響應報文都會經過代理進行傳輸,因此請求和響應報文中都要有Via首部。請求和響應通常都是通過同一條TCP連線傳送的,所以響應報文沿著與請求報文相同的路徑回傳。

 

4、Via與閘道器   有些代理會為非使用HTTP協議的伺服器提供閘道器的功能,Via首部記錄了這些協議的轉換。     5、Trace方法   代理伺服器可以在轉發報文時對其進行修改。可以新增、修改或刪除首部,也可以將主體部分轉換成不同的格式。通過HTTP/1.1的TRACE方法,使用者可以跟蹤代理鏈傳輸的請求報文,觀察報文經過了哪些代理,以及每個代理是如何對請求報文進行修改的。  

八、學習交流

歡迎大家關注我的公眾號,一起交流、學習。

 

&n