首页 > 编程知识 正文

透明代理和反向代理,反向代理和代理

时间:2023-05-03 07:30:17 阅读:178978 作者:3249

套用古龙武侠小说的模式来说,代理服务技术是一项非常古老的技术,是互联网初期出现后就开始使用的技术。 实现代理技术的常用方法是在服务器上安装代理服务软件,将其作为一个代理服务器,实现代理技术。 常用的代理技术分为前向代理、反向代理和透明代理。 本文针对这三类agent说明了一些基本原理和具体应用范围,便于更深入地理解agent服务技术。 一.前锋代理(Forward Proxy )? XML : namespace prefix=ons=' urn : schemas-Microsoft-com : office 3360 office ' /通常,如果未明确说明,代理技术默认情况下为前锋代理的概念如下。

前锋代理【forward】是位于客户【用户a】和原创服务器【origin server】【服务器b】之间的服务器【代理服务器z】,从原创服务器获得内容客户端必须进行特殊设置才能使用正向代理。 下图1.1

) 1.1 )根据上述概念,可以看出文中的转发代理是指代理服务器代替访问源【用户a】访问目标服务器【服务器b】

这就是正向代理的意义。 为什么要用代理服务器代替访问方【用户a】来访问服务器b呢? 这必须从使用代理服务器的意义开始。

使用前向代理服务器的主要作用如下。

1、访问应该无法访问的服务器b。 下图1.2

图1.2 :为了观看图1.2,假定除了复杂网络路由场景之外,图中的路由器被从左到右命名为R1、R2

首先,假设用户a要接入服务器b,必须经由路由节点(如R1和R2路由器),从而如果路由器R1或路由器R2发生故障,则变得不能访问服务器b。 但是,如果用户a代替自己请求代理服务器z访问服务器b,则代理服务器z不在路由器R1或R2的节点上,而是通过其他路由节点访问服务器b,因此用户a可以得到服务器b的数据

现实的例子是“***”。 然而,自***技术广泛使用以来,“***”不仅使用了传统的前向代理技术,还有一些使用了***技术。 2、加快对服务器b的访问

这种说法现在不像以前那么流行了,主要是带宽流量的快速发展。 在早期的前锋代理中,很多人使用前锋代理是为了提高速度。 此外,如图1.2所示,假设从用户a到服务器b,经由R1路由器和R2路由器,从R1到R2路由器的链路是低带宽链路。 另一方面,从用户a到代理z,从代理z到服务器b都是高带宽链路。 很明显,这样可以加快对服务器b的访问速度。 3、Cache作用

缓存技术和代理服务技术密切相关(不仅是前向代理,反向代理也使用缓存技术。 此外,如上图所示,在用户a访问服务器b的某个数据j之前,已经有人通过代理服务器z访问了服务器b上的数据j的情况下,代理服务器z将数据j保存一定期间,在有人正好取得了该数据j的情况下这项技术在Cache中被称为Cache命中。 当许多用户(如用户a )访问代理服务器z时,这些用户可以直接从代理服务器z获取数据j而无需将数据下载到服务器b上。 4、客户端权限方面的内容目前使用较多。 例如,一些公司采用ISA SERVER作为正向代理服务器,允许用户是否有访问互联网的权限。 下图1.3

(图1.3 )

1.3防火墙作为网关,用于过滤来自外网的接入。 假设用户a和用户b正在安装代理服务器。 用户a允许访问互联网,而用户b不允许访问互联网。 这受到代理服务器z的限制。 这样,用户a可以通过代理服务器z访问服务器b进行授权,但由于用户b没有通过代理服务器z进行授权,因此访问服务器b时会直接丢弃数据包。

5、隐藏访问者的位置,可以看出如下图1.4所示,服务器b不知道访问自己的实际上是用户a。 这是因为代理z代表用户a直接与服务器b进行交互。 如果代理服务器z完全由用户a控制或不完全控制,则我们习惯用术语“肉鸡”来称呼它。

(图1.4 )

前向代理是指客户机和原始服务器(origin server )之间的服务器。 为了从原始服务器检索内容,客户端向代理发送请求并指定目标(原始服务器)。 然后,代理将请求传递到原始服务器,并将获取的内容返回给客户端。 客户端必须设置前向代理服务器。 当然,前提是您知道前向代理服务器的IP地址和代理的端口。 二、反向代理(reverse proxy )反向代理与正向代理截然相反,对于客户端而言,代理服务器就像原始服务器,客户端无需特殊设置。 客户端到反向代理的名称空间(name-space

)中的内容发送普通请求,接着反向代理将判断向何处(原始服务器)转交请求,并将获得的内容返回给客户端。

使用反向代理服务器的作用如下:

1、  保护和隐藏原始资源服务器

如下图2.1

(图 2.1 )

用户 A 始终认为它访问的是原始服务器 B 而不是代理服务器 Z ,但实用际上反向代理服务器接受用户 A 的应答,从原始资源服务器 B 中取得用户 A 的需求资源,然后发送给用户 A 。由于防火墙的作用,只允许代理服务器 Z 访问原始资源服务器 B 。尽管在这个虚拟的环境下,防火墙和反向代理的共同作用保护了原始资源服务器 B ,但用户 A 并不知情。

2、  负载均衡

如下图2.2

(图2.2)

     当反向代理服务器不止一个的时候,我们甚至可以把它们做成集群,当更多的用户访问资源服务器B的时候,让不同的代理服务器Z(x)去应答不同的用户,然后发送不同用户需要的资源。

当然反向代理服务器像正向代理服务器一样拥有CACHE的作用,它可以缓存原始资源服务器B的资源,而不是每次都要向原始资源服务器B请求数据,特别是一些静态的数据,比如图片和文件,如果这些反向代理服务器能够做到和用户X来自同一个网络,那么用户X访问反向代理服务器X,就会得到很高质量的速度。这正是CDN技术的核心。如下图2.3

(图2.3)

  我们并不是讲解CDN,所以去掉了CDN最关键的核心技术智能DNS。只是展示CDN技术实际上利用的正是反向代理原理这块。

反向代理结论与正向代理正好相反,对于客户端而言它就像是原始服务器,并且客户端不需要进行任何特别的设置。客户端向反向代理的命名空间(name-space)中的内容发送普通请求,接着反向代理将判断向何处(原始服务器)转交请求,并将获得的内容返回给客户端,就像这些内容原本就是它自己的一样。

基本上,网上做正反向代理的程序很多,能做正向代理的软件大部分也可以做反向代理。开源软件中最流行的就是squid,既可以做正向代理,也有很多人用来做反向代理的前端服务器。另外MS ISA也可以用来在WINDOWS平台下做正向代理。反向代理中最主要的实践就是WEB服务,近些年来最火的就是Nginx了。网上有人说NGINX不能做正向代理,其实是不对的。NGINX也可以做正向代理,不过用的人比较少了。   三、透明代理     如果把正向代理、反向代理和透明代理按照人类血缘关系来划分的话。那么正向代理和透明代理是很明显堂亲关系,而正向代理和反向代理就是表亲关系了 。

透明代理的意思是客户端根本不需要知道有代理服务器的存在,它改编你的request fields(报文),并会传送真实IP。注意,加密的透明代理则是属于匿名代理,意思是不用设置使用代理了。

透明代理实践的例子就是时下很多公司使用的行为管理软件。如下图3.1

(图3.1)     用户A和用户B并不知道行为管理设备充当透明代理行为,当用户A或用户B向服务器A或服务器B提交请求的时候,透明代理设备根据自身策略拦截并修改用户A或B的报文,并作为实际的请求方,向服务器A或B发送请求,当接收信息回传,透明代理再根据自身的设置把允许的报文发回至用户A或B,如上图,如果透明代理设置不允许访问服务器B,那么用户A或者用户B就不会得到服务器B的数据。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。