理解「Http结构」中的代理

HTTP代理处于用户客户端与Web服务器之间,充当中间人的角色,代理客户端向服务器发起访问请求。

1、代理与网关的简单对比
从部署方式上来说,两者都是部署在客户端和服务器这两种网络实体之间的应用程序。从本质上来说:代理连接的两端网络实体使用的是相同的网络协议;而网关起到的却是「网络协议转换器」的角色(如客户端向网关发起HTTP请求,请求访问邮件信息,而网关与邮件服务器之间的通信协议却是POP,邮件服务器在POP协议的支持下把邮件信息返回给网关,网关最终把邮件内容通过HTTP协议返回给客户端)。两者之间的简单对比如下图所示:

agent and gateway

2、几种代理的使用方式
我们来看看代理可以在哪些场景下发挥作用:
– 儿童过滤器

children filter
对某些网站设置黑名单,用户无法访问这些网站上的资源。

– 文档访问控制

file access controll
在集中式代理服务器上对所有访问功能进行集中配置。分别对每台客户端设置允许访问的服务器资源,并按需在服务器上进行资源访问的授权验证。

– 安全防火墙

firewall
对一个组织的数据流入/流出进行监控和控制。

– Web缓存代理

web cache agent
看了这一点终于明白很多资源下载网站是如何为付费会员提供资源快速下载服务的。Web缓存代理保存了原始服务器上常用资源的本地副本,付费会员会被引流到就近的缓存代理服务器上去下载资源,而免费会员则向原始资源服务器发起资源访问请求。

– 反向代理

antiagent
在代理的最初设计中,代理的功能是代表客户端向服务器发起请求,现在反过来,代理服务器通过冒用Web服务器的名字和IP地址来代表Web服务器来接受客户端发起的真实请求。反向代理的引入大大提高了访问慢速Web服务器上公共内容时的性能。

– 内容路由器

content route
根据网络当前流量状况以及客户端请求的资源类型,将请求引导到特定的Web服务器上(与「Web缓存代理」结合起来理解)。

– 转码器

converter
代理服务器在把响应内容推送给客户端时,可以改变内容的主体格式,比如上图例子所示,亦或是我们经常遇到的一种情况,明明想下载的是一个.gif格式的图片文件,结果下载下来的却是.png格式的图片文件,这是转码器在中间进行了转换。

– 匿名者

annonmy
简单的说就是在正常的HTTP报文中把身份信息摘除,然后再把这个请求发向真正的服务器,摘除的信息包含客户端IP地址、From首部、Referer首部、Cookie、URI的会话ID。

3、代理服务器如何部署在网络中
一般根据使用代理的目的不同,而把代理置于不同的网络结构中,下图给出了部署的几种方式:

deploy

[a] 出口代理
把代理部署在本地网络的出口位置上,控制本地网络与因特网之间的巨大流量。

[b] 访问(入口)代理
ISP向用户提供访问Internet的服务,代理也可以部署在ISP访问点上,用于缓存常用的Web资源,用户在访问资源时,如果在缓存中命中,则直接从缓存中下载资源,提高资源访问速度。

[c] 反向代理(替代物)
在之前的「反向代理」这一节已经介绍,部署在Web服务器之前,冒用Web服务器的名字和IP地址,用户发出的请求首先到达反向代理,反向代理在必要的情况下才会去访问Web服务器。

[d] 网络交换代理
把代理部署在对等的网络实体之间,通过缓存来减轻Internet节点之间的拥塞,同时起到流量监控的作用。

4、如何把流量引流到代理上
在学习这一章节的过程中,我们了解到通过代理可以做很多事情,在很多场景下都具有实际的应用价值,但这里的前提是我们如何把访问流量引导到代理上,不然之前讨论的一切都不成立。
现在来解释清楚客户端发起的HTTP流量如何流向代理,大致有以下四种方式,如下图所示:

triffic
[a] 修改客户端
现代主流的浏览器如IE、Chrome、Firefox等都支持设置代理,如果将客户端设置为使用代理服务器,那么用户在发起HTTP请求时,该请求会直接发往代理服务器。

[b] 修改网络
这种手段同样也非常好理解,在网络基础设施搭建过程中,一般都会使用到路由器/交换机等网络设备,在用户无察觉的情况下,可以把访问流量拦截住并把流量路由到代理服务器。

[c] 修改DNS命名空间
反向代理假扮Web服务器的名字和IP地址,所有客户端的请求都会发往代理服务器,要实现这一点,只需手工编辑DNS名称列表即可。

[d] 修改Web服务器
当真正的Web服务器接收到用户发起的请求时,服务器返回给客户端一个重定向的响应命令(HttpCode: 305),客户端根据重定向地址(代理服务器的地址),与代理服务器建立连接,客户端发起的资源请求最终被代理服务器接管。

本人不才,欢迎留言指正!

1 Comment

  1. 互刷互访

    完全免费,十万站长,互刷排名

    http://www.loveuv.com/l/NDGBXQ

    注册即送5000流量。

    Reply

Leave a Comment

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