關於 HTTP 代理,你還需要了解這些,不然面試你是過不去的

上一篇文章我們完整的介紹了 HTTP 是如何使用 TCP 進行連接的,接下來的文章我們再來看看你在面試中經常會被問到的關於代理的問題。

1. HTTP 代理

百度百科是這麼解釋的:代理客戶機的 HTTP 訪問,主要代理瀏覽器訪問網頁,它的端口一般為80、8080、3128等。

百度百科實在是太模糊了我們來細緻的說一下什麼是 HTTP 代理,說 HTTP 代理,那我們首先就得來說一下 WEB 代理了。

代理,說白了就是“中介”,而 Web 代理(proxy)服務器是網絡的中間實體。代理位於客戶端和服務器之間,扮演“中間 人”的角色,在各端點之間來回傳送 HTTP 報文。

Web 上的代理服務器是代表客戶端完成事務處理的中間人。如果沒有 Web 代理,HTTP 客戶端就要直接與 HTTP 服務器進行對話。有了 Web 代理,客戶端就可以與代理進行對 話,然後由代理代表客戶端與服務器進行交流。客戶端仍然會完成對事務的處理,但它是 通過代理服務器提供的優質服務來實現的。 HTTP 的代理服務器既是 Web 服務器又是 Web 客戶端。HTTP 客戶端會向代理發送請求 報文,代理服務器必須像 Web 服務器一樣,正確地處理請求和連接,然後返回響應。

同時,代理自身要向服務器發送請求,這樣,其行為就必須像正確的 HTTP 客戶端一樣,要 發送請求並接收響應

如果要創建自己的 HTTP 代理,就要認真地遵循為 HTTP 客戶端和 HTTP 服務器制定的規則。

1.1 代理的類別

代理分為了私有的代理和共享的代理

  • 共享代理

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

  • 私有代理

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

1.2 代理和網關的區別

代理 連接的是兩個或多個使用相同協議的應用程序。而網關不一樣,網關連接的則是兩個或 多個使用不同協議的端點。網關 扮演的是“協議轉換器”的角色,即使客戶端和服務器使用 的是不同的協議,客戶端也可以通過它完成與服務器之間的事務處理。

其實我們從圖上看, HTTP 網關和 HTTP 代理之間的區別實在是很模糊,由於瀏覽器和服務器實現的是不同版本的 HTTP,代理也經常要做一些協議轉換工作。而商業化的代理服務器也會實現網關的功能 來支持 SSL 安全協議、SOCKS 防火牆、FTP 訪問,以及基於 Web 的應用程序。

1.2 為什麼使用代理

代理服務器可以改善安全性,提高性能,節省費 用。代理服務器可以看到並接觸到所有流過的 HTTP 流量,所以代理可以監視流量並對其 進行修改,以實現很多有用的增值 Web 服務。

我們來看一下幾種具體的代理的使用方法

兒童過濾器

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

文檔訪問控制

可以用代理服務器在大量 Web 服務器和 Web 資源之間實現統一的訪問控制策略,創建審核跟蹤機制。這在大型企業環境或其他分佈式機構中是很有用的。 在集中式代理服務器上可以對所有訪問控制功能進行配置,而無需在眾多由不同組織管理、不同廠商製造、使用不同模式的 Web 服務器上進行經常性的訪問控制升級。

安全防火牆

網絡安全工程師通常會使用代理服務器來提高安全性。代理服務器會在網絡中的單一安全節點上限制哪些應用層協議的數據可以流入或流出一個組織。還可以提供用來消除病毒的 Web 和 E-mail 代理使用的那種掛鉤程序,以便對流量進行詳細的檢查

反向代理

其實這個反向代理才是我們需要使用的,代理可以假扮 Web 服務器。這些被稱為替代物(surrogate)或反向代理(reverse proxy)的代理接收發給 Web 服務器的真實請求,但與 Web 服務器不同的是,它們可以發起與其他服務器的通信,以便按需定位所請求的內容。可以用這些反向代理來提高訪問慢速 Web 服務器上公共內容時的性能。在這種配置 中,通常將這些反向代理稱為服務器加速器(server accelerator),還 可以將替代物與內容路由功能配合使用,以創建按需複製內容的分佈式網絡。

既然我們都知道了代理能夠做些什麼,那是不是需要知道他從哪裡來,到哪裡去呢?接下來我們就看看代理他落在哪裡

1.3 代理位於何處

1.3.1 代理服務器的部署

關於 HTTP 代理,你還需要了解這些,不然面試你是過不去的

根據用處的不同,都能把代理服務器安置在不同的地點,

  • 出口代理
  • 訪問(入口)代理
  • 反向代理
  • 網絡交換代理

1.4 代理是如何進行認證的

代理可以作為訪問控制設備使用。HTTP 定義了一種名為代理認證(proxy authentication)的機制,這種機制可以阻止對內容的請求,直到用戶向代理提供了有效的訪問權限證書為止。

  • 對受限內容的請求到達一臺代理服務器時,代理服務器可以返回一個要求使用訪問證 書的 407 Proxy Authorization Required 狀態碼,以及一個用於描述怎樣提供這些證書 的 Proxy-Authenticate 首部字段
  • 客戶端收到 407 響應時,會嘗試著從本地數據庫中,或者通過提示用戶來蒐集所需要 的證書。
  • 只要獲得了證書,客戶端就會重新發送請求,在 Proxy-Authorization 首部字段中 提供所要求的證書。
  • 如果證書有效,代理就會將原始請求沿著傳輸鏈路向下傳送(參見圖 6-25c);否 則,就發送另一條 407 應答。

其實說白了代理可以實現認證授權機制,然後對我們對內容的訪問進行相對應的控制

若傳輸鏈路中有多個代理,且每個代理都要進行認證時,代理認證通常無法很好地工作。 人們建議,應該對 HTTP 進行升級,將認證證書與代理鏈中特定的路標聯繫起來,但這些 升級措施並沒有得到廣泛實現。

代理所要注意的問題

代理服務器可能無法理解所有經其傳輸的首部字段。

有些首部可能比代理自身還要新;其 他首部可能是特定應用程序獨有的定製首部。代理必須對不認識的首部字段進行轉發,而 且必須維持同名首部字段的相對順序。

關於 HTTP 代理,我就先說這麼多,剩下的內容還有待大家一起進行發掘。


分享到:


相關文章: