ip代理服務器有三種實現方式:一是在應用層實現,相當于應用網關,如web代理服務器、Socks代理服務器;二是在IP層或更低層實現,通過轉發數據包完成http代理功能;三是通過改變系統調用的方式來實現,比如微軟的Winsock代理服務器,在自己的電腦上安裝代理程序,程序會自動修改系統調用。由于Web代理服務器是目前應用最廣泛的代理服務器,下面將主要針對Web代理服務器來說明代理服務器的實現原理。
Web代理服務器一般由過濾器和應用程序兩部分組成。過濾器判斷接收到http請求是代理格式還是標準格式,如果是標準格式,則交給本地WWW服務器處理;如果是代理格式,將由代理應用程序處理。代理應用程序首先在代理緩沖區中搜索,如果數據存在且有效,則從緩沖區中取出數據;如果沒有,連接到遠程目標服務器并獲取數據。無論代理服務器是從緩存還是從Internet遠程服務器獲取數據,它都會根據HTTP協議使用端口80將信息返回給請求者。
在HTTP通信鏈中,客戶端和目標服務器之間通常有一些中轉代理服務器,它們提供對目標資源的中轉訪問。一個HTTP請求可能由多個代理服務器轉發,后一個服務器稱為前一個服務器的上游服務器。代理服務器根據用途和功能分為正向代理服務器、反向代理服務器和透明代理服務器。
轉發代理ip要求客戶端自己設置代理ip的地址。來自客戶端的每個請求都將被直接發送到代理服務器,代理ip將請求目標資源。例如,為了訪問互聯網,或者訪問一些被阻止的外國網站,防火墻中的局域網機器需要使用轉發代理ip。反向代理ip設置在服務器端,所以客戶端不需要做任何設置。
代理ip在Internet上接收連接請求,然后將請求轉發給內部網絡上的服務器,并將結果從內部服務器返回給客戶端。在這種情況下,代理服務器看起來像一個真實的服務器。
只能在網關上設置透明代理ip。用戶訪問互聯網的數據報必須全部通過網關。如果在網關上設置了代理ip,代理ip顯然對用戶是透明的。透明代理ip可以看作是前向代理ip的一個特例。