Mr.J-- HTTP學習筆記(六)-- 代理

代理服務器可以是某個客戶端專用的, 也可以是很多客戶端共享的。 單個客戶端專用的代理被稱爲私有代理。 衆多客戶端共享的代理被稱爲公共代理。

私有和共享代理

• 公共代理
大多數代理都是公共的共享代理。集中式代理的成本效率更高,更容易管理。某些代理應用, 比如高速緩存代理服務器, 會利用用戶間共同的請求, 這樣的話, 匯入同一個代理服務器的用戶越多, 它就越有用。

• 私有代理
專用的私有代理並不常見, 但它們確實存在, 尤其是直接運行在客戶端計算機上的時候。 有些瀏覽器輔助產品, 以及一些 ISP 服務, 會在用戶的 PC 上直接運行一些小型的代理, 以便擴展瀏覽器特性, 提高性能, 或爲免費 ISP 服務提供主機廣告。

代理和網關的區別

•中間設備是一個 HTTP 代理, 因爲代理與客戶端和服務器之間使用的都是 HTTP 協議。
• 中間設備是一個 HTTP/POP 網關, 因爲它把 HTTP 的前臺與 POPE-mail 的後端連接了起來。 網關將 Web 事務轉換成適當的 POP 事務, 這樣用戶就可以通過 HTTP 讀取 E-mail 了。 

爲什麼使用代理

兒童過濾器

小學在爲教育站點提供無阻礙訪問的同時, 可以利用過濾器代理來阻止學生訪問成人內容。 

文檔訪問控制

可以用代理服務器在大量 Web 服務器和 Web 資源之間實現統一的訪問控制策略, 創建審覈跟蹤機制。 

集中式訪問控制代理:

允許客戶端 1 無限制地訪問服務器 A 的新聞頁面;
客戶端 2 可以無限制地訪問因特網;
在允許客戶端 3 訪問服務器 B 之前, 要求其輸入口令。

安全防火牆

網絡安全工程師通常會使用代理服務器來提高安全性。

Web 緩存

代理緩存維護了常用文檔的本地副本, 並將它們按需提供, 以減少緩慢且昂貴的因特網通信。

反向代理

代理可以假扮 Web 服務器。 可以用這些反向代理來提高訪問慢速 Web 服務器上公共內容時的性能。

內容路由器

代理服務器可以作爲“內容路由器” 使用, 根據因特網流量狀況以及內容類型將請求導向特定的 Web 服務器。內容路由器也可以用來實現各種服務級的請求。

轉碼器

代理服務器在將內容發送給客戶端之前, 可以修改內容的主體格式。

轉碼代理可以在傳輸 GIF 圖片時, 將其轉換成 JPEG 圖片, 以減小尺寸。 也可以對圖片進行壓縮, 或降低顏色的色彩飽和度以便在電視上觀看。 同樣, 可以對文本文件進行壓縮, 併爲能夠使用因特網的呼機和智能手機生成小型的文本摘要Web 頁面。 代理甚至可以在傳輸文檔的過程中將其轉換成外語。

匿名者

匿名者代理會主動從 HTTP 報文中刪除身份特性(比如客戶端 IP 地址、 From首部、 Referer 首部、 cookie、 URI 的會話 ID), 從而提供高度的私密性和匿名性。

匿名代理會對用戶報文進行下列修改以增加私密性。

  1. 從 User-Agent 首部刪除用戶的計算機與 OS 類型。
  2. 刪除 From 首部以保護用戶的 E-mail 地址。
  3. 刪除 Referer 首部來掩蓋用戶訪問過的其他站點。
  4. 刪除 Cookie 首部以剔除概要信息和身份的數據。

代理去向何處

怎樣將代理部署到網絡中去

出口代理
 
可以將代理固定在本地網絡的出口點, 以便控制本地網絡與大型因特網之間的流
量。
訪問(入口) 代理
 
代理常被放在 ISP 訪問點上, 用以處理來自客戶的聚合請求。
 
反向代理 代理通常會被部署在網絡邊緣, 在 Web 服務器之前, 作爲替代物(也常被稱爲反向代理) 使用
網絡交換代理 可以將具有足夠處理能力的代理放在網絡之間的因特網對等交換點上, 通過緩存來減輕因特網節點的擁塞, 並對流量進行監視。

三級的代理層次結構

roxy 層次結構中的代理服務器被賦予了父(parent) 和子(child) 的關係。 下一個入口(inbound) 代理(靠近服務器) 被稱爲父代理, 下一個出口(outbound) 代理(靠近客戶端) 被稱爲子代理。
代理層次結構可以是動態的, 隨請求而變的。

• 如果所請求的對象屬於一個付費使用內容分發服務的 Web 服務器, 代理就會將請求發送給附近的一個緩存服務器, 這個服務器會返回已緩存對象, 或者如果它那兒沒有的話, 它會去取回內容。

• 如果請求的是特定類型的圖片, 訪問代理會將請求轉發給一個特定的壓縮代理,這個代理會去獲取圖片, 然後對其進行壓縮, 這樣通過到客戶端的慢速 Modem下載時, 速度會更快一些。

HTTP 流量怎樣才能首先流向代理

修改客戶端 如果將客戶端配置爲使用代理服務器, 客戶端就會將 HTTP 請求有意地直接發送給代理, 而不是原始服務器。
修改網絡 在客戶端不知道, 或沒有參與的情況下, 攔截網絡流量並將其導入代理。
修改 DNS 的命名空間 放在 Web 服務器之前的代理服務器——替代物, 會直接假扮 Web 服務器的名字和 IP 地址, 這樣, 所有的請求就會發送給這些替代物。
修改 Web 服務器 也可以將某些 Web 服務器配置爲向客戶端發送一條 HTTP 重定向命令(響應碼305), 將客戶端請求重定向到一個代理上去。

 

客戶端的代理設置

• 手工配置

顯式地設置要使用的代理。

• 預先配置瀏覽器

瀏覽器廠商或發行商會在將瀏覽器發送給其客戶之前預先對瀏覽器(或所有其他Web 客戶端) 的代理設置進行手工配置。

• 代理的自動配置(Proxy Auto-Configuration, PAC)

提供一個 URI, 指向一個用 JavaScript 語言編寫的代理自動配置文件; 客戶端會取回這個 JavaScript 文件, 並運行它以決定是否應該使用一個代理, 如果是的話, 應該使用哪個代理服務器。

• WPAD 的代理髮現

有些瀏覽器支持 Web 代理自動發現協議(Web Proxy Autodiscovery Protocol,WPAD), 這個協議會自動檢測出瀏覽器可以從哪個“配置服務器” 下載到一個自動配置文件。

代理請求有關問題

代理URI與服務器URI的不同

我們要將部分 URI 發送給服務器, 將完整 URI 發送給代理。 在顯式地配置客戶端代理設置的情況下, 客戶端就知道要發佈哪種類型的請求了。

(1) 沒有設置客戶端使用代理時, 它會發送部分 URI。
(2) 設置客戶端使用代理時, 它會發送完整 URI。

攔截代理會收到部分URI

反向代理是一個用來取代原始服務器的代理服務器, 它通常會通過假扮服務器的主機名或 IP 地址來做到這一點。客戶端無法區分反向代理和 Web服務器, 因此它會發送部分 URI。

攔截代理是網絡流量中的代理服務器, 它會攔截從客戶端發往服務器的請求, 並提供一個緩存響應, 或對其進行轉發。 所以它會收到發送給 Web 服務器的部分 URI。

URI的客戶端自動擴展和主機名解析

沒有代理時URI的解析

瀏覽器會去查找各種主機名, 直到找到一個有效主機名爲止。

有顯式代理時URI的解析

使用顯式代理時, 用戶的 URI 會被直接發送給代理。有顯式代理時, 瀏覽器沒有對不完整的主機名進行自動擴展。 因
此, 當用戶在瀏覽器的地址窗口中輸入 oreilly 時, 發送給代理的就是 http://oreilly/

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章