1. 程式人生 > >代理伺服器(Proxy)的原理

代理伺服器(Proxy)的原理

什麼是代理伺服器(Proxy)?

以類似代理人的身份去取的使用者需要的資料。由於它的【代理】能力,使得我們可以透過代理伺服器來達成防火牆與使用者資料的分析。除此之外我們還可以藉助代理伺服器來達成節省頻寬的目的,以及加快內部網路對因特網的全球資訊網的訪問速度。
當客戶端有因特網的資料要求時,Proxy會幫使用者去向目的地取得使用者所需要的資料。所以當客戶端指定www的代理伺服器之後,使用者的所有www相關要求就會通過代理伺服器去捉取。
這裡寫圖片描述
代理伺服器會架設在整個區網的單點對外防火牆上頭,而在區網內部的計算機都是通過Proxy來向英特網要求資料的,這就是所謂的【代理伺服器】
上面的架構僅僅是其中一個案例,架構的採用率比較高,因為這樣的Proxy server不僅可以充當代理伺服器的角色,還可以當做高階防火牆。
客戶端向外部要求的資料事實上都是Proxy幫使用者取得的,因此因特網上面看到要求資料者,將會是Proxy伺服器的IP而不是客戶端的IP。Proxy Server因為直接對外網,相當於當了個炮灰,外網只能找到這個代理伺服器,隱藏內網的機器,從而起到防火牆的作用。

代理伺服器的運作流程

這裡寫圖片描述

cache的存在,可以做假象的web加速;
當Proxy的快取擁有使用者所想要的資料時:
a.Client端向Server端傳送一個數據需求封包
b.Server端接收之後,先比對這個封包的【來源】與預計要前往的【目標】網站是否為可接受?如果來源和目標都是合法的,或者說,來源與目標網站我們的Proxy都能幫忙取得資料時,那麼Server端會開始替Client取得資料。取得資料中比較重要的政策就是【比對政策】,有點像認證的感覺。
c.對比政策,Server對先檢查自己的快取(新的資料可能在記憶體中,比較舊的資料放在硬碟中)資料,如果有Client所需要的資料,那麼將資料準備取出,而不經過向Internet要求資料的程式。
d.最後當然就是將資料回傳給Client
Proxy對於cache的速度是很有要求的,而這個cache就是硬碟了。硬碟的容量必須足夠大,而且還要【足夠快】才行!cache是一直被重複存取的地方。所以硬碟的好壞就差別打了。

上層代理伺服器

我們的Proxy代理伺服器的Proxy代理伺服器就是上層代理伺服器。上圖:
這裡寫圖片描述
作為上層代理伺服器的主機通常具有較高的頻寬,因此我們透過它去要求資料【理論上】速度會更快,而上層代理伺服器最大的優點是可以分流。
分流示意圖:這裡寫圖片描述
由於代理伺服器需要管控信任的來源客戶端計算機,因此各ISP僅能針對自家使用者開發Proxy使用權。

代理伺服器和NAT伺服器的差別

【百度百科概念】NAT:當在專用網內部的一些主機本來已經分配到了本地IP地址(即僅在本專用網內使用的專用地址),但現在又想和因特網上的主機通訊(並不需要加密)時,可使用NAT方法。
這種方法需要在專用網連線到因特網的路由器上安裝NAT軟體。裝有NAT軟體的路由器叫做NAT路由器,它至少有一個有效的外部全球IP地址。這樣,所有使用本地地址的主機在和外界通訊時,都要在NAT路由器上將其本地地址轉換成全球IP地址,才能和因特網連線。

NAT功能:
NAT不僅能解決IP不足的問題,而且還能夠有效的避免來自網路外部的攻擊,隱藏並保護網路內部的計算機。
1.寬頻分享:這是NAT主機的最大功能
2.安全防護:NAT之內對的PC聯機到Internet上面時,他所顯示的IP是NAT主機的公共IP,所以Client端的PC當然就具有一定程度的安全了,外界在進行porscan(埠掃描)的時候,就偵測不到源Client端的PC。

簡要的介紹了NAT,看一看代理伺服器和NAT的差別:

在內部區域網使用私有的IP客戶端,不論透過Proxy或者NAT均可以直接取得www的服務,那麼NAT與Proxy有沒有什麼不同的地方。
1.NAT伺服器的功能:Linux的NAT功能主要透過封包過濾的方式,並使用iptables的nat表格進行IP偽裝(SNAT),讓客戶端自行前往因特網的任何一個地方。主要的運作行為是在OSI七層協議的二,三,四層。由於是透過封包過濾與偽裝,因此客戶端可以使用埠號碼(第四層)較彈性。
2.Proxy伺服器的功能:主要透過Proxy的伺服器程式(daemon)提供網路代理的任務,因此Proxy能不能進行某些工作,與該服務的程式有關。舉例說明:如果你的Proxy並沒有提供郵件或FTP代理,那麼你的客戶端就無法透過Proxy去取得這些網路資源。主要運作的行為在OSI七層協議的應用層部分(這就是所謂的高階的意思)

NAT伺服器是由叫底層的網路去進行分析工作,至於通過NAT的封包是幹嘛用的,NAT不去管它。
Proxy則主要是由一個伺服器程式的功能達成的,所以必須符合該程式的需求才能達到某些功能。

架設代理伺服器的用途與優缺點

代理伺服器的主要功能是:
1.作為www的網頁資料的取得的代理人(最為主要的功能)
2.作為內部區網的單點對外防火牆系統(如果你的Proxy是放在內部區網的Gateway上頭,那麼這部代理伺服器就能夠作為內部計算機的防火牆)
由於Proxy的這種特性,讓他很常被使用於大型企業的內部,因為可以達到杜絕內部人員上班時使用非WWW以外的網路伺服器,而且還可以監測使用者的資料要求流向與流量。

主要優點:

1.節省單點對外的網路頻寬,降低網路負載
當你的Proxy使用者很多時,那麼Proxy內部的快取資料將會積累的非常多。因此客戶端想要取得網路上的資料時,很多將會從Proxy的快取中取得,而不用向因特網去請求資料,可以節省頻寬。
2.以較短的路徑取得網路資料,有網路加速的感覺:
例如你可以指定你的ISP提供的代理伺服器連線到國外,由於ISP提供的Proxy通常有較大的對外頻寬,因此在國外網站的資料取得上,通常比你自己的主機聯機到國外要快的多此外,與上一點的快取資料也有很大關係。從內部硬碟取得的路徑總比對外的因特網要短的多。
3.透過上層代理伺服器的輔助,達到自動資料分流的效果
4.提供防火牆內部的計算機連上Internet:即上文提到單點對外防火牆功能

需要連上國外的網頁,請一定要使用ISP提供給你的代理伺服器幫忙,不但可以節省頻寬,並且速度上可以快很多

主要缺點:

1.容易被內部區網的人員濫用:
因特網看到取資料的人是Proxy而不是客戶端計算機的IP,因此可能會讓某些內部網路使用人員開始利用你的proxy幹壞事,此時你就會很麻煩,為了杜絕這種情況,建議增加登入檔案分析的軟體。用於管理。
2.需要較高的設定技巧與除錯程式
在設定伺服器當中, Proxy 算是比較不容易設定好『效能』的一個伺服器了!由於 Proxy 的 Cache 與他的『上層代理伺服器』的關係是很緊密的, 萬一設定錯誤的話,很有可能反而讓你的Proxy 拖垮客戶端 WWW 的瀏覽速度!最嚴重的是造成無法聯機!
可能會取得舊的錯誤資料:
這個最容易發生了!由於曾經瀏覽過的網頁會被放置到快取, 並提供後續使用者的直接取得。 萬一因特網上面的那個網頁資料更新過呢?那時你會發現,怎麼客戶端無法看到更新後的資料? 就是因為快取的問題。