代理服务器

  • Web 代理服务器是网络的中间实体。代理位于客户端和服务器之间,在各端点之间来回传送HTTP 报文。
  • HTTP 的代理服务器即是Web 服务器又是Web 客户端。HTTP 客户端会向代理发送请求报文,代理服务器必须像Web 服务器一样,正确的处理请求与连接,然后返回响应。同时,代理自身向服务器发送请求,这样,其行为就必须像正确的HTTP 客户端一样,要发送请求并接收响应。如果要创建自己的HTTP代理,就要认真地遵循为HTTP 客户端和HTTP 服务器制定的规则。
  • 公共代理:大多数代理都是公共的共享代理。集中式代理更容易管理。某些代理应用,比如高速缓存代理服务器,会利用用户间共同的请求,这样的话,汇入同一个代理服务器的用户越多,它就越有用。
  • 私有代理:专用的私有代理并不常见,但他们确实存在,尤其是直接运行在客户端计算机上的时候,有些浏览器辅助产品,以及一些ISP服务,会在用户的PC 上直接运行一些小型的代理。
代理与网关的对比
  • 严格来说,代理连接的是两个或多个使用相同协议的应用程序,而网关连接的则是两个或多个使用不同协议的端点。
  • 网关扮演的是 “ 协议转换器 ” 的角色,即使客户端和服务器使用的是不同的协议,客户端也可以通过它完成与服务器之间的事务处理。
为什么使用代理
  • 代理服务器可以实现各种有用的功能。他们可以改善安全性,提高性能,节省费用。代理服务器可以看到并接触到所有流过的HTTP 流量,所以代理可以监视流量并对其修改,以实现很多有用的增值Web 服务。
  • 儿童过滤器:可以利用过滤代理来阻止学生访问成人内容。代理应该允许学生无限制地访问教育性内容,但对不适合儿童的站点要强行禁止访问。
  • 文档访问控制:可以用代理服务器在大量Web 服务器和Web 资源之间实现统一的访问控制策略,创建审核跟踪机制。比如:允许客户端1无限制的访问服务器A的页面,但要求客户端2访问的时候输入口令。为了防止一些经验丰富的用户蓄意绕过控制代理,可以静态地配置Web 服务器,使其仅接受来自代理服务器的请求。
  • 反向代理:代理可以假扮Web 服务器。这些被称为替代物或者反向代理的代理接收发给Web 服务器的真实请求,但与Web 服务器不同的是,他们可以发起与其他服务器的通行,以便按需定位所请求的内容。可以用这些反向代理来提高访问慢速Web 服务器上公共内容时的性能。在这种配置中,通常将这些反向代理称为服务器加速器。还可以将替代物与内容路由功能配合使用,以创建按需复制内容的分布式网络。
  • 内容路由器:代理服务器可以作为 “ 内容路由器 ” 使用,根据因特网流量状况以及内容类型将请求导向特定的Web 服务器。内容服务器可以用来实现各种服务级的请求。比如:如果用户或内容提供者付费要求提供更高的性能,内容路由器可以将请求转发到附近的复制缓存,或者如果用户申请了过滤服务,还可以通过过滤代理来转发HTTP请求。可以用自适应内容路由代理来构建很多有趣的服务。
  • 转码器:代理服务器在将内容发送给客户端之前,可以修改内容的主体格式。在这些数据表示法之间进行的透明转换被称为转码。转码代理可以在传输GIF 图片时,将其转换成JPEG 图片,以减少尺寸。也可以对图片进行压缩,或降低颜色的色彩饱和度以便在电视上观看。
  • 匿名者代理:会主动从HTTP 报文中删除身份特性(比如客户端IP地址、From 首部、Referer首部、cookie、URI 的会话ID),从而提高高度的私密性和匿名性。
    • 匿名代理会对用户报文进行下列修改以增加私密性
    • 从User-Agent 首部删除用户的计算机与OS 类型
    • 删除From 首部以保护用户的E-mail 地址
    • 删除Referer 首部来掩盖用户访问过的其他站点
    • 删除Cookie 首部以剔除概要信息和身份的数据
代理服务器的部署
  • 出口代理:将代理固定在本地网络的出口点,以便控制本地网络与大型因特网之间的流量。可以在公司网络中使用出口代理,提供针对公司外部恶意黑客的防火墙保护,或降低带宽费用,提高因特网流量的性能。
  • 访问(入口)代理:代理被放在ISP 访问点上,用以处理来自客户的聚合请求。ISP 使用缓存代理来存储常用文档的副本,以提高用户(尤其是高速连接用户)的下载速度,降低因特网带宽耗费。
  • 反向代理:代理通常被部署在网络边缘,在Web 服务器之前,作为替代物使用,在哪里他们可以处理所有传送给Web 服务器的请求,并只在必要时向Web 服务器请求资源。替代物可以提高Web 服务器的安全特性,或者将快速的Web 服务器缓存放在较慢的服务器之前,以提高性能。反向代理通常会直接冒用Web 服务器的名字和IP 地址,这样所有的请求就会被发送给代理而不是服务器了。
  • 网络交换代理:可以将具有足够能力的代理放在网络之间的因特网对等交换点上,通过缓存来减轻因特网节点的拥塞,并对流量进行监视。
代理层次结构的内容路由
  • 层次不一定非得是静态的,代理服务器可以根据众多因素,将报文转发给一个不断变化的代理服务器和原始服务器集。
  • 如果请求的对象属于一个付费试用内容分发服务的Web 服务器,代理就会将请求发送给附近的一个缓存服务器,这个服务器会返回已缓存对象,或者如果它哪儿没有的话,它会去取回内容
  • 如果请求的是特定类型的图片,访问代理会将请求转发给一个特定的压缩代理,这个代理会获取图片,然后对其进行压缩,这样通过到客户端的慢速下载时,速度会更快一些。
代理是如何获取流量的
  • 修改客户端:很多Web 客户端,都支持手工和自动的代理配置。如果将客户端配置为使用代理服务器,客户端就会将HTTP 请求有意地直接发送给代理,而不是原始服务器。
  • 修改网络:网络基础设施可以通过若干种技术手段,在客户端不知道,或没有参与的情况下,拦截网络流量并将其导入代理。这种拦截通常依赖于监视HTTP 流量的交换设备及路由设备,在客户端毫不知情的情况下,对其进行拦截,并将流量导入一个代理。这种代理被称为拦截代理。
  • 修改DNS 的命名空间:放在DNS 服务器之前的代理服务器----替代物,会直接假扮Web 服务器的名字和IP地址,这样,所有的请求就会发送给这些替代物,而不是服务器了。要实现这一点,可以手工编辑DNS 名称列表,或者用特殊的动态DNS 服务器根据需要来确定适当的代理或服务器。有时在安装过程中,真实服务器的IP地址和名称被修改了,替代物得到的会是之前的地址和名称。
  • 修改Web 服务器:也可以将某些Web 服务器配置为向客户端发送一条HTTP 重定向命令(响应吗305),将客户端请求重定向到一个代理上去。收到重定向命令后,客户端会与代理进行通信。
代理URI 和服务器URI 的不同
  • Web 服务器报文和Web 代理报文的语法是一样的。客户端向服务器而不是代理发送请求时,HTTP 请求报文中的URI 会有所不同。
  • 客户端向Web 服务器发送请求时,请求行只包含部分URI(没有方案、主机和端口)。但当客户端向代理发送请求时,请求行中则包含完整的URI。在原始的HTTP 设计中,客户端会直接与单个服务器进行对话。不存在虚拟主机,也没有为代理制定规则。单个的服务器都知道自己的主机名和端口,所以为了避免发送过多信息,客户端只需发送部分的URI 即可,无需发送方案和主机。
  • 代理出现之后,使用部分的URI 就有问题了。代理需要知道目标服务器的名称,这样他们才能建立自己与服务器的连接。基于代理的网关要知道URI 的方案才能连接到FTP 资源和其他方案上去。
  • 没有设置客户端使用代理时,它会发送部分URI
  • 设置客户端使用代理时,它会发送完整URI
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值