淺析 正向代理 反向代理 透明代理

一般我們上網,都是插上網線即可,頂多需要撥號。但是在企業應用上網路的環境可能就要複雜的多,這是一般家用網路所無法體會的。所以,代理這個功能就應運而生了。

代理顧名思義就是代替你去訪問你訪問不到的資源。

在維琪百科上的定義是這樣的:

代理(英語:Proxy),也稱網路代理,是一種特殊的網路服務,允許一個網路終端(一般為用戶端)通過這個服務與另一個網路終端(一般為伺服器)進行非直接的連接。一些閘道、路由器等網路設備具備網路代理功能。一般認為代理服務有利於保障網路終端的隱私或安全,防止攻擊。

在代理當中,一般會把代理分為三種,即正向代理、反向代理還有透明代理。接下來,我們就依次818這些代理。

正向代理

正向代理就是我們接觸最多的代理模式,一般來講,很多企業以前(現在也有不少)是不允許員工隨便訪問外網的,有一些則是部分外網,如果你想要或者需要訪問外網資源,那你很可能會希望在自己家裡搭建一個代理伺服器。這時候你就發現,正向代理一般都是 C/S 架構的,它通過用戶端,將你要訪問某站的請求打包,然後發給代理伺服器,而代理伺服器負責將你的要求傳送給目標站。——通過這樣的方式,便可以繞過防火牆的遮罩了。

另外,如果你想悄悄地訪問某站,不想讓別人知道,你也可以使用代理,通過高度匿名的代理訪問,這樣你的蹤跡就完全被隱藏了,別人只會找到代理伺服器的訪問資訊而不是你的,從而達到了隱藏痕跡的目的。

由於需求的不同,就肯定催生了一批不同用途的代理,比如說我們最常見的 HTTP 代理、FTP 代理、SSL 代理等等等等。

哦對了,還有比較低層的 socks 代理,這個比較特殊一些,它不會關心你代理什麼協定,它統統會將你的 IP 包擼走,不過,我們常用的 shadowsocks 雖然使用了 sock5 代理,但是對於 UDP 的支援並不是很完善。(已經支援 UDP,但是近對 DNS 好使,其他情況尚不明確。)

正向代理又會根據高度匿名與否來區分:

高度匿名代理

這樣的伺服器會把你的資料包原封不動的來轉發,就好像自己的一樣;這樣對目標站來講,根本就會以為是代理伺服器在訪問它而不是你;

普通匿名代理

相對於高度匿名代理來講,這樣的伺服器會被目標站認出來是代理伺服器,從而很有可能還是會追蹤到你的真實 IP。

透明代理

這個其實不能和正向、反向代理並列,因為它是正向代理中的一種;它不會加密你的資訊,而是明明白白的告訴目標站你是通過代理訪問的! 當然好處是允許緩存,以及一些規則來讓你的訪問變得更加安全——典型應用就是內網硬體防火牆上的透明代理。(不過,我們常說的 shadowsocks 透明代理與此定義不同,前者表示相對電腦訪問,代理是透明的;後者表示相對目標網站,代理是透明的。)

反向代理

說完了正向代理,我們來818與之相對的反向代理,相對於正向代理來說,反向代理的技術含量更高一些,應用的範圍也更加廣泛,從小到你代理訪問網站 ,大到網站內部負載均衡都會使用到這種技術。

其實這個技術最典型的應用是在服務後端,比如說某大型網站伺服器有一台,然後後端負責計算的伺服器有 N 台,其實真正的伺服器在這 N 台伺服器上,這 N 台伺服器通過某些機制同步內容,然後前端的伺服器只負責收發資料,那麼前端接收到請求之後就會根據後臺某伺服器的空閒資源來決定將請求反向代理給誰,從而達到了負載均衡的目的。

反向代理示意圖(來自維琪百科)

反向代理示意圖(來自維琪百科)

比如說淘寶以前速度一般,後來就是革新了負載均衡的系統,對於反向代理都需要這個代理的過程,而淘寶把這個代理過程砍掉一半,也就是上文中的 N 台伺服器中的某台收到前端的請求之後並不會將資料返回給前端,而是直接回饋給了使用者。(這個案例具體的忘記了,兩年前朋友講給我聽的...... 求斧正。)

總之呢,後來這個反向代理就被人們給玩壞了,從搭建快取服務器,到釣魚攻擊,再到後來的變成了我們常用的梯子......

它的特點就是絕對可以保護代理後邊的東西,使用者只能訪問到代理伺服器,而代理伺服器後邊發生的事情你絕對不會知曉,這樣一來就讓它變得很危險,這絕對是個黑箱。比如說用來釣魚,悄悄篡改你的訪問連結之類的,完全沒有問題。所以,如果你要使用反向代理的梯子,那一定要找絕對信任的人提供的服務——或者乾脆自己動手搭建一個只給身邊的人用。

反向代理就講這麼多吧,它一般還是用在開發環境的多,反代的最大特點就是一個功能變數名稱一個站,比如我們常見的那些谷歌的跨境反代,明明訪問的是谷歌,但功能變數名稱卻不盡相同醬紫。還有其實你訪問的淘寶啊京東啊都是反代網站,只不過應用的技術更多,而且他們只反代他們自己的站哈哈!

透明代理

前邊講過,透明代理本應該是正向代理的一個級別分支,但為什麼還是要任性地將它單獨拎出來八一八呢? 正如上文所說,此透明代理非彼透明代理!

我們這裡要將的透明代理,特指裝在我們家用小路由器上的各種代理,這樣一來,就實現了電腦正常上網但實際上是被代理出去的效果——即相對電腦來說代理是透明的。

這樣一來,就要把 VPN 囊括進來,說起 VPN 它其實不屬於代理,簡單講一句就是它們被開發出來的初衷不太相同,這麼講,你家,防火牆,公司。這三個地方,雖然代理和 VPN 的手段都是穿透這個牆,但代理的目的是從公司出去,而 VPN 則是從家裡連到公司。所以代理只會轉發某些對應的資料包,而 VPN 則是在邏輯上讓你的電腦「穿越」到了目的地,從而實現在那裡上網。

不過,這對於我們的「透明代理」來講都不重要,在路由器上使用透明代理,一般有兩種,一種是使用 socks5,比如 shadowsocks;另一種就是 vpn ;通過特製的路由器,讓它們來實現代理,這樣你上網所發出的資料包就會被路由器「自動」地代理。

你看,相對你的電腦,你的手機,你的 iPad 來講,這個代理是不是變得「透明」了呢?


延伸閱讀:

代理伺服器 詳解 正向代理 反向代理

http://zh.wikipedia.org/wiki/代理服务器

本文由 落格博客 原創撰寫:落格博客 » 淺析 正向代理 反向代理 透明代理

轉載請保留出處和原文鏈接:https://www.logcg.com/archives/929.html

關於作者

R0uter

如非聲明,本人所著文章均為原創手打,轉載請註明本頁面鏈接和我的名字。

註釋

    1. 這確個問題確實很麻煩! 如何才能讓人們意識到自己被封鎖了呢? 畢竟對大多數人來講,互聯網僅僅是個QQ和微博...... 有了微博和人人,誰還需要Twitter和Facebook,我覺得這要歸功於我朝「成功」的英語課系統。

發表評論

您的電子郵件地址不會被公開. 必填字段標 *