關(guān)于 HITP 代理,你還需要了解這些,不然面試你是過不去的!
1. HTTP 代理
百度百科是這么解釋的:代理客戶機(jī)的 HTTP 訪問,主要代理瀏覽器訪問網(wǎng)頁,它的端口一般為80、8080、3128等。
百度百科實(shí)在是太模糊了我們來細(xì)致的說一下什么是 HTTP 代理,說 HTTP 代理,那我們首先就得來說一下 WEB 代理了。
代理,說白了就是“中介”,而 Web 代理(proxy)服務(wù)器是網(wǎng)絡(luò)的中間實(shí)體。代理位于客戶端和服務(wù)器之間,扮演“中間 人”的角色,在各端點(diǎn)之間來回傳送 HTTP 報(bào)文。
Web 上的代理服務(wù)器是代表客戶端完成事務(wù)處理的中間人。如果沒有 Web 代理,HTTP 客戶端就要直接與 HTTP 服務(wù)器進(jìn)行對話。有了 Web 代理,客戶端就可以與代理進(jìn)行對 話,然后由代理代表客戶端與服務(wù)器進(jìn)行交流??蛻舳巳匀粫瓿蓪κ聞?wù)的處理,但它是 通過代理服務(wù)器提供的優(yōu)質(zhì)服務(wù)來實(shí)現(xiàn)的。 HTTP 的代理服務(wù)器既是 Web 服務(wù)器又是 Web 客戶端。HTTP 客戶端會向代理發(fā)送請求 報(bào)文,代理服務(wù)器必須像 Web 服務(wù)器一樣,正確地處理請求和連接,然后返回響應(yīng)。
同時,代理自身要向服務(wù)器發(fā)送請求,這樣,其行為就必須像正確的 HTTP 客戶端一樣,要 發(fā)送請求并接收響應(yīng),我們大家來看一幅圖:
如果要創(chuàng)建自己的 HTTP 代理,就要認(rèn)真地遵循為 HTTP 客戶端和 HTTP 服務(wù)器制定的規(guī)則。
1.1 代理的類別
代理分為了私有的代理和共享的代理
- 共享代理
大多數(shù)代理都是公共的共享代理。集中式代理的成本效率更高,更容易管理。某些代理應(yīng)用,比如高速緩存代理服務(wù)器,會利用用戶間共同的請求,這樣的話,匯入同一個代理服務(wù)器的用戶越多,它就越有用。
- 私有代理
專用的私有代理并不常見,但它們確實(shí)存在,尤其是直接運(yùn)行在客戶端計(jì)算機(jī)上的時候。有些瀏覽器輔助產(chǎn)品,以及一些 ISP 服務(wù),會在用戶的 PC 上直接運(yùn)行一些小型 的代理,以便擴(kuò)展瀏覽器特性,提高性能,或?yàn)槊赓M(fèi) ISP 服務(wù)提供主機(jī)廣告。
1.2 代理和網(wǎng)關(guān)的區(qū)別
代理 連接的是兩個或多個使用相同協(xié)議的應(yīng)用程序。而網(wǎng)關(guān)不一樣,網(wǎng)關(guān)連接的則是兩個或 多個使用不同協(xié)議的端點(diǎn)。網(wǎng)關(guān) 扮演的是“協(xié)議轉(zhuǎn)換器”的角色,即使客戶端和服務(wù)器使用 的是不同的協(xié)議,客戶端也可以通過它完成與服務(wù)器之間的事務(wù)處理。
其實(shí)我們從圖上看, HTTP 網(wǎng)關(guān)和 HTTP 代理之間的區(qū)別實(shí)在是很模糊,由于瀏覽器和服務(wù)器實(shí)現(xiàn)的是不同版本的 HTTP,代理也經(jīng)常要做一些協(xié)議轉(zhuǎn)換工作。而商業(yè)化的代理服務(wù)器也會實(shí)現(xiàn)網(wǎng)關(guān)的功能 來支持 SSL 安全協(xié)議、SOCKS 防火墻、FTP 訪問,以及基于 Web 的應(yīng)用程序。
1.2 為什么使用代理
代理服務(wù)器可以改善安全性,提高性能,節(jié)省費(fèi) 用。代理服務(wù)器可以看到并接觸到所有流過的 HTTP 流量,所以代理可以監(jiān)視流量并對其 進(jìn)行修改,以實(shí)現(xiàn)很多有用的增值 Web 服務(wù)。
我們來看一下幾種具體的代理的使用方法
兒童過濾器:
小學(xué)在為教育站點(diǎn)提供無阻礙訪問的同時,可以利用過濾器代理來阻止學(xué)生訪問成人 內(nèi)容。
文檔訪問控制
可以用代理服務(wù)器在大量 Web 服務(wù)器和 Web 資源之間實(shí)現(xiàn)統(tǒng)一的訪問控制策略,創(chuàng)建審核跟蹤機(jī)制。這在大型企業(yè)環(huán)境或其他分布式機(jī)構(gòu)中是很有用的。 在集中式代理服務(wù)器上可以對所有訪問控制功能進(jìn)行配置,而無需在眾多由不同組織管理、不同廠商制造、使用不同模式的 Web 服務(wù)器上進(jìn)行經(jīng)常性的訪問控制升級。
安全防火墻
網(wǎng)絡(luò)安全工程師通常會使用代理服務(wù)器來提高安全性。代理服務(wù)器會在網(wǎng)絡(luò)中的單一安全節(jié)點(diǎn)上限制哪些應(yīng)用層協(xié)議的數(shù)據(jù)可以流入或流出一個組織。還可以提供用來消除病毒的 Web 和 E-mail 代理使用的那種掛鉤程序,以便對流量進(jìn)行詳細(xì)的檢查。
反向代理
其實(shí)這個反向代理才是我們需要使用的,代理可以假扮 Web 服務(wù)器。這些被稱為替代物(surrogate)或反向代理(reverse proxy)的代理接收發(fā)給 Web 服務(wù)器的真實(shí)請求,但與 Web 服務(wù)器不同的是,它們可以發(fā)起與其他服務(wù)器的通信,以便按需定位所請求的內(nèi)容??梢杂眠@些反向代理來提高訪問慢速 Web 服務(wù)器上公共內(nèi)容時的性能。在這種配置 中,通常將這些反向代理稱為服務(wù)器加速器(server accelerator),還 可以將替代物與內(nèi)容路由功能配合使用,以創(chuàng)建按需復(fù)制內(nèi)容的分布式網(wǎng)絡(luò)。
既然我們都知道了代理能夠做些什么,那是不是需要知道他從哪里來,到哪里去呢?接下來我們就看看代理他落在哪里
1.3 代理位于何處
1.3.1 代理服務(wù)器的部署
根據(jù)用處的不同,都能把代理服務(wù)器安置在不同的地點(diǎn),
- 出口代理
- 訪問(入口)代理
- 反向代理
- 網(wǎng)絡(luò)交換代理
1.4 代理是如何進(jìn)行認(rèn)證的
代理可以作為訪問控制設(shè)備使用。HTTP 定義了一種名為代理認(rèn)證(proxy authentication)的機(jī)制,這種機(jī)制可以阻止對內(nèi)容的請求,直到用戶向代理提供了有效的訪問權(quán)限證書為止。
- 對受限內(nèi)容的請求到達(dá)一臺代理服務(wù)器時,代理服務(wù)器可以返回一個要求使用訪問證 書的 407 Proxy Authorization Required 狀態(tài)碼,以及一個用于描述怎樣提供這些證書 的 Proxy-Authenticate 首部字段
- 客戶端收到 407 響應(yīng)時,會嘗試著從本地?cái)?shù)據(jù)庫中,或者通過提示用戶來搜集所需要 的證書。
- 只要獲得了證書,客戶端就會重新發(fā)送請求,在 Proxy-Authorization 首部字段中 提供所要求的證書。
- 如果證書有效,代理就會將原始請求沿著傳輸鏈路向下傳送(參見圖 6-25c);否 則,就發(fā)送另一條 407 應(yīng)答。
其實(shí)說白了代理可以實(shí)現(xiàn)認(rèn)證授權(quán)機(jī)制,然后對我們對內(nèi)容的訪問進(jìn)行相對應(yīng)的控制,如下圖:
若傳輸鏈路中有多個代理,且每個代理都要進(jìn)行認(rèn)證時,代理認(rèn)證通常無法很好地工作。 人們建議,應(yīng)該對 HTTP 進(jìn)行升級,將認(rèn)證證書與代理鏈中特定的路標(biāo)聯(lián)系起來,但這些 升級措施并沒有得到廣泛實(shí)現(xiàn)。
代理所要注意的問題
代理服務(wù)器可能無法理解所有經(jīng)其傳輸?shù)氖撞孔侄巍?/p>
有些首部可能比代理自身還要新;其 他首部可能是特定應(yīng)用程序獨(dú)有的定制首部。代理必須對不認(rèn)識的首部字段進(jìn)行轉(zhuǎn)發(fā),而 且必須維持同名首部字段的相對順序。
關(guān)于 HTTP 代理,我就先說這么多,剩下的內(nèi)容還有待大家一起進(jìn)行發(fā)掘。