1. 程式人生 > >代理服務器原理(轉)

代理服務器原理(轉)

開始 也有 代理服 分析 .com gateway 網絡服務 inux 有用

本文轉自:https://www.cnblogs.com/Aiapple/p/5955882.html 以類似代理人的身份去取得用戶所需要的數據就是了! 但是由於它的『代理』能力,使得我們可以透過代理服務器來達成防火墻功能與用戶瀏覽數據的分析! 此外,也可以藉由代理服務器來達成節省帶寬的目的,以及加快內部網絡對因特網的 WWW 訪問速度 17.1.1 什麽是代理服務器 我們或許會幫忙家人去辦理一些雜務吧!舉個例子來說,例如繳費或者是申辦提款卡等等的, 由於你並不是『申請者本人』而是『代理人』的角色, 因此有時候會需要拿出一些證件 代理服務器(Proxy Server)與上面真實世界一樣,當客戶端有因特網的數據要求時, Proxy 會幫用戶去向目的地取得用戶所需要的數據。 所以,當客戶端指定 WWW 的代理服務器之後,用戶的所有 WWW 相關要求就會通過代理服務器去捉取。 技術分享圖片

技術分享圖片 代理服務器會架設在整個區網的單點對外防火墻上頭,而在區網內部的計算機就都是透過 Proxy 來向因特網要求數據的,這就是所謂的『代理服務器』! 當然,上面的架構僅只是一個案例,但是這個架構比較多人用的原因, 是因為這樣的Proxy server 還可以兼做高階防火墻之用。 客戶端向外部要求的數據事實上都是 Proxy 幫用戶取得的,因此因特網上面看到要求數據者,將會是 Proxy 服務器的 IP 而不是客戶端的 IP Proxy server 因為直接對外網,相當於當了個炮灰,外網只能找到這個代理服務器,隱藏內網的機器,從而 起到防火墻的作用。 17.1.2 代理服務器的運作流程
技術分享圖片 技術分享圖片

cache的存在,可以做假象的web加速; 當Proxy的快取擁有用戶所想要的數據時:
  • a. Client 端向 Server 端發送一個數據需求封包;
  • b. Server 端接收之後,先比對這個封包的『來源』與預計要前往的『目標』網站是否為可接受? 如果來源與目標都是合法的,或者說,來源與目標網站我們的 Proxy 都能幫忙取得資料時,那麽 Server 端會開始替 Client 取得資料。這個步驟中比較重要的就是『比對政策』啦,有點像是認證的感覺啦;
  • c. Server 首先會檢查自己快取 (新的數據可能在內存中,較舊的數據則放置在硬盤上) 數據, 如果有 Client 所需的數據,那就將數據準備取出,而不經過向 Internet 要求數據的程序;
  • 最後當然就是將數據回傳給 Client 端!
當Proxy的快取沒有用戶所想要的數據時: 1. Client 端向 Server 端發送一個數據需求封包; 2. Server 端接收之後,開始進行政策比對; 3. Server 發現快取並沒有 Client 所需要的資料,準備前往因特網抓取數據; 4. Server 開始向 Internet 發送要求與取得相關資料; 5. 最後當然就是將數據回傳給 Client 端啰! 註意: Proxy 對於 cache 的速度是很要求的,而這個 cache 就是硬盤啦!當然,硬盤容量必需要足夠大,而且還要『足夠快』才行! 因為由上面的流程當中,我們不難發現, cache 是一直被重復存取的一個地方!所以硬盤的好壞就差別很大啦! 可以說他是影響一個 Proxy效能好壞的關鍵 17.1.3 上層代理服務器 即,我的Proxy 代理服務器的Proxy 代理服務器。 技術分享圖片 技術分享圖片

由於可做為我們的上層代理服務器的主機通常是具有較高帶寬的, 因此我們透過它去要求數據當然『理論上』速度會更快!而上層代理服務器最大的好處其實是在於『分流』喔 分流的效果示意圖: 技術分享圖片 技術分享圖片

由於代理服務器需要管控信任的來源端客戶端計算機,因此各 ISP 僅能針對自家的用戶來開放 Proxy 使用權而已。 17.1.4 代理服務器與NAT服務器的差異 在內部局域網絡使用私有 IP 的客戶端,不論透過 Proxy 或者 NAT 均可以直接取得 WWW 的服務,那麽 NAT 與 Proxy 有沒有什麽不同的地方啊。
  • NAT 服務器的功能:就如同第九章提到的數據, Linux 的 NAT 功能主要透過封包過濾的方式, 並使用 iptables 的 nat 表格進行 IP 偽裝 (SNAT) ,讓客戶端自行前往因特網上的任何地方的一種方式。主要的運作行為是在 OSI 七層協議的二、三、四層。由於是透過封包過濾與偽裝,因此客戶端可以使用的端口口號碼 (第四層) 較彈性;
  • Proxy 服務器的功能:主要透過 Proxy 的服務程序 (daemon) 提供網絡代理的任務,因此 Proxy 能不能進行某些工作,與該服務的程序功能有關。 舉例來說,如果你的 Proxy 並沒有提供郵件或 FTP 代理,那麽你的客戶端就是無法透過 Proxy 去取得這些網絡資源。 主要運作的行為在 OSI 七層協議的應用層部分(所謂的比較“高階”之意)
NAT 服務器是由較底層的網絡去進行分析的工作,至於通過 NAT 的封包是幹嘛用的, NAT 不去管他! 至於 proxy 則主要是由一個daemon 的功能達成的,所以必需要符合該 daemon 的需求,才能達到某些功能。 17.1.5 架設代理服務器的用途與優缺點 代理服務器的功能主要有:
  • 作為 WWW 的網頁資料取得代理人:這是最主要的功能。
  • 作為內部區網的單點對外防火墻系統:
    • 如果你的Proxy 是放在內部區網的 Gateway 上頭,那麽這部代理服務器就能夠作為內部計算機的防火墻
由於 Proxy 的這種特性,讓他很常被使用於大型的企業內部,因為可以達到杜絕內部人員上班時使用非 WWW 以外的網絡服務,而且還可以監測用戶的資料要求流向與流量。 主要優點:
  • 節省單點對外的網絡帶寬,降低網絡負載
    • 當你的 Proxy 用戶很多時,那麽 Proxy 內部的快取數據將會累積較多。因此客戶端想要取得網絡上的數據時,很多將會從 Proxy 的快取中取得,而不用向因特網要求資料。 所以可以節省帶寬啊!
  • 以較短的路徑取得網絡數據,有網絡加速的感覺:
    • 例如你可以指定你的 ISP提供的代理服務器連接到國外,由於 ISP 提供的 Proxy 通常具有較大的對外帶寬,因此在對國外網站的數據取得上, 通常會比你自己的主機聯機到國外要快的多。此外,與上一點的快取數據也有關系啊!從內部硬盤取得的路徑總比對外的因特網要短的多啊!
  • 透過上層代理服務器的輔助,達到自動數據分流的效果:
    • 例如圖 17.1-4 所示,讓客戶端在不知不覺之間,就可以得到數據由不同 Proxy 取得的加速效果!
  • 提供防火墻內部的計算機連上 Internet:就是上面提到的單點對外防火墻功能
需要連上國外的網頁,請一定使用 ISP 提供給你的代理服務器來幫忙,因為不但可以節省帶寬,並且速度上會快上很多很多 (例如美國環保署, EPA 網站)。 主要缺點:
  • 容易被內部區網的人員濫用:
    • 我們知道因特網上看到取得數據的人是 Proxy那部主機而不是客戶端計算機的 IP,因此可能會讓某些內部網絡使用人員開始利用你的 proxy 幹壞事,此時你就會很麻煩~ 所以,為了杜絕這個狀況,強烈的建議多加登錄檔案分析的軟件,在管理上面會輕松很多!
  • 需要較高超的設定技巧與除錯程序:
    • 在設定服務器當中, Proxy 算是比較不容易設定好『效能』的一個服務器了!由於 Proxy 的 Cache 與他的『上層代理服務器』的關系是很緊密的, 萬一設定錯誤的話,很有可能反而讓你的Proxy 拖垮客戶端 WWW 的瀏覽速度!最嚴重的是造成無法聯機!
  • 可能會取得舊的錯誤數據:
    • 這個最容易發生了!由於曾經瀏覽過的網頁會被放置到快取, 並提供後續用戶的直接取得。 萬一因特網上面的那個網頁數據更新過呢?那時你會發現,怎麽客戶端無法看到更新後的資料? 就是因為快取的問題。
一般架設需求:
  • 我的 Client 端用戶不少,而且大部分僅需要 WWW 這個網絡服務而已;
  • 我的 Proxy 還兼做防火墻的任務;
  • 我的 Client 端常常需要聯機到傳輸速度很慢的網站,例如國外的網站;
  • 我的 Client 端常常瀏覽的網站是『靜態』網站,而不是動態網站 (例如討論區的 PHP)。

代理服務器原理(轉)