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

一般我们上网,都是插上网线即可,顶多需要拨号。但是在企业应用上网络的环境可能就要复杂的多,这是一般家庭网络所无法体会的。所以,代理这个功能就应运而生了。

代理顾名思义就是代替你去访问你访问不到的资源。

在维基百科上的定义是这样的:

代理(英语: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/代理服务器

“浅析 正向代理 反向代理 透明代理”的2个回复

    1. 这确个问题确实很麻烦!如何才能让人们意识到自己被封锁了呢?毕竟对大多数人来讲,互联网仅仅是个QQ和微博……有了微博和人人,谁还需要Twitter和Facebook,我觉得这要归功于我朝“成功”的英语课系统。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

28 − 20 =