第6章 代理

1、HTTP的代理服务器既是Web服务器又是Web客户端。

代理与网关的对比:代理连接的是两个或多个使用相同协议的应用程序,而网关连接的则是两个或多个使用不同协议的端点。实际上,代理和网关之间的区别很模糊,代理也经常要做一些协议转换的工作。

2、代理可以作为儿童过滤器;文档访问控制;安全防火墙;Web缓存;反向代理(假扮Web服务器。接收发给Web服务器的真是请求,但与Web服务器不同的是它们可以发起与其他服务器的通信,以便按需定位所请求的内容);内容路由器;转码器;匿名者(匿名者代理会主动从HTTP报文中删除什么特性)

3、代理的层次结构

通过代理层级结构将代理级联起来。代理层次结构中的代理服务器被赋予了父和子的关系。下一个入口代理(靠近服务器)被称为父代理,下一个出口代理(靠近客户端)被称为子代理。代理服务器可以根据众多因素,将报文转发给一个不断变化的代理服务器和原始服务器集。

4、代理如何获取流量

修改客户端:很多Web客户端都支持手工和自动的代理配置。若将客户端配置为使用代理服务器,客户端都会将HTTP请求有意地直接发送给代理,而不是原始服务器。

修改网络:在客户端不知情的情况下,拦截网络流量并将其导入代理。这种拦截通常都依赖于监视HTTP流量的交换设备及路由设备。这种代理被称为拦截代理。

修改DNS的命名空间:放在Web服务器之前的代理服务器——反向代理,会直接假扮Web服务器的名字和IP地址,这样,所有的请求就会发送给这些反向代理,而不是服务器了。要实现这一点可以手工编辑DNS名称列表,或者用特殊的动态DNS服务器根据需要来确定适当的代理或服务器。

修改Web服务器:可以将某些Web服务器配置为向客户端发送一条HTTP重定向命令,将客户端请求重定向到一个代理上去。

5、与代理请求有关的一些棘手问题

5.1、客户端向代理和服务器发送请求时,HTTP请求报文中的URI会有所不同。没有设置代理的客户端向服务器发送请求时会发送部分URI,设置代理的客户端发送完整URI。

5.2、虚拟主机面临的问题和代理一样,虚拟主机Web服务器需要知道目的Web站点的主机名,通过Host首部来承载主机和端口信息。

5.3、根据是否有代理,浏览器对请求URI的解析会有不同。没有代理时,浏览器会获取URI,尝试寻找响应的IP,若没有找到主机,很多浏览器都会尝试着提供某种主机名自动”扩展“机制,以防用户输入的是缩写形式。但是如果有显式代理,那么用户的URI会直接发送给代理,浏览器不再执行这一扩展功能,而是交给代理来做。

6、追踪报文

via首部字段列出了与报文途径中的每个中间节点有关的信息。代理也可以用via首部来检测网络中的路由循环。代理应该在发送一条请求之前,在via首部插入一个与其自身有关的独特字符串,并在输入的请求中查找这个字符串,以检测网络中是否存在路由循环。

每个via中的中间节点的格式最多包含4个组件:一个可选的协议名,一个必选的协议版本,一个必选的节点名和一个可选的描述性注释。

关于via的隐私问题:有时候,我们并不希望在via字符串中使用确切的主机名。总的来说,除非显式地允许这种行为,否则当代理服务器作为网络防火墙的一部分使用时,是不应该转发防火墙后面那些主机的名字和端口号的,因为防火墙后面的网络结构信息可能会被恶意群体利用。

7、通过HTTP/1.1的TRACE方法,用户可以跟踪经代理链传输的请求报文,观察报文经过了哪些代理,以及每个代理是如何对请求报文进行修改的。通常,不管中间插入了多少代理,TRACE报文都会沿着整条路径传到目的服务器上。可以使用Max-Forwards首部来限制TRACE和OPTIONS请求所经过的代理跳数,来查看在代理链的任意一跳上接收到的请求。

8、代理认证

代理可以作为访问控制设备使用。HTTP定义了一种名为代理认证的机制,这种机制可以阻止对内容的请求,直到用户向代理提供了有效的访问权限证书为止。

时间: 2024-10-13 11:50:21

第6章 代理的相关文章

第12章 代理模式(Proxy Pattern)

原文   第12章 代理模式(Proxy Pattern) 代理模式 概述: 在软件系统中,有些对象有时候由于跨越网络或者其他的障碍,而不能够或者不想直接访问另一个对象,如果直接访问会给系统带来不必要的复杂性,这时候可以在客户程序和目标对象之间增加一层中间层,让代理对象来代替目标对象打点一切.这就是本文要说的Proxy模式. 结构图:     举例:       代练游戏,玩游戏,自己不想花时间去升级.委托给代练. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1

设计模式之第16章-代理模式(Java实现)

设计模式之第16章-代理模式(Java实现) “现在朋友圈真是太让人蛋疼了啊.”“怎么说?”“一堆代理,各种卖东西的,看着好烦人.”“哎,删了呗.”“都是朋友,哪里好意思删啊.”“这倒也是...哎,迫于生计,没办法咯.还好我不玩.”“对了,你不就是代理的鼻祖么,身为代理模式,你作何感想.”“以代理之道还治代理之身啊.” 代理模式之自我介绍 最近出场率超级高,哦不,一直以来出场率都挺高的说的大名鼎鼎的模式,就是我-代理模式是也.有关我的定义如下:Provide a surrogate or pla

大话设计模式C++实现-第7章-代理模式

一.UML图 二.概念 代理模式:为其他对象提供一种代理以控制对这个对象的访问. 三.应用场景 (1)远程代理,也就是为一个对象在不同的地址空间提供局部代表.这样可以隐藏一个对象存在于不同地址空间的事实. (2)虚拟代理,是根据需要创建开销很大的对象.通过他来存放实例化需要很长时间的真实对象.例如:图片加载的时候. (3)安全代理,用来控制真是对象访问时的权限. (4)智能指引,是指当调用真实的对象的时候,代理处理另外一些事. 根本原理:代理模式其实就是在访问对象的时候引入了一定程度的间接性,因

HTTP权威指南 第六章 代理

代理的含义? Web代理服务器是网络的中间实体. Web上的代理服务器是代表客户端完成事务处理的中间人. HTTP的代理服务器既是Web服务器端又是Web客户端. 代理和网关的对比 代理连接的是两个或多个使用相同协议的应用程序. 网关连接的则是两个或多个使用不同协议的端点. 为什么要使用代理? 代理可以改善安全性,提高性能,节省费用. 代理服务器可以看到并接触到所有流过的HTTP流量,所以代理可以监视流量并对其进行修改,以实现很多有用的增值服务. eg: 儿童过滤器 文档访问控制 安全防火墙 W

读书笔记_java设计模式深入研究 第七章 代理模式 Proxy

1,代理模式:一个类可以用作其他东西的接口,其他类可以通过此类去访问被代理者. 2,UML图如下: 3,角色: ISubject:抽象主题接口,该接口定义对象和它的代理共用的接口. RealSubject:真实主题角色,使实现抽象主题接口的类. Proxy:代理角色,内部含有对真实对象的引用,从而可以操作真实对象,代理对象提供与真实对象相同的接口,以便在任何时候都可以替代真实对象. 4,简单代码: package pattern.chp07.proxy;   /** * 类描述:抽象主题接口 *

第 7 章 代理模式

定义:代理模式为其他对象提供一种代理以控制对这个对象的访问. 一般代理分为几种: 1.远程代理,也就是为一个对象在不同的地址空间提供局部代表,这样可以隐藏一个对象存在于不同地址空间的事实. 比如WebService在.Net 中的调用 2.虚拟代理,是根据需要创建开销很大的对象.通过它来存放实例化需要很长时间的真实对象. 这样就可以达到性能的最大化,比如说你打开一个很大的HTML网页时,里面可能有很多的文字和图片,但你还是可以很快的打开它,此时你所看到的是所有的文字,但是图片确实一张一张的下载后

大话设计模式第七章---代理模式模式PHP实现

<?php abstract class Subject { abstract public function request(); } class Real_subject extends Subject { public function request() { echo "真实请求"; } } class Proxy extends Subject { private $_real_subject = null; public function request() { if

大话设计模式C++实现-文章7章-代理模式

一个.UML画画 二.概念 代理模式:为其它对象提供一种代理以控制对这个对象的訪问. 三.应用场景 (1)远程代理.也就是为一个对象在不同的地址空间提供局部代表.这样能够隐藏一个对象存在于不同地址空间的事实. (2)虚拟代理,是依据须要创建开销非常大的对象.通过他来存放实例化须要非常长时间的真实对象. 比如:图片载入的时候. (3)安全代理.用来控制真是对象訪问时的权限. (4)智能指引,是指当调用真实的对象的时候.代理处理另外一些事. 根本原理:代理模式事实上就是在訪问对象的时候引入了一定程度

设计模式之代理模式---Proxy Pattern

模式的定义 代理模式(Proxy Pattern)也叫做委托模式,定义如下: Provide a surrogate or placeholder for another object to control access to is. 为其他对象提供一种代理以控制对这个对象的访问. 类型 结构类 模式的使用场景 想想现实世界中,打官司为什么要找个律师?因为你不想参与中间过程的是是非非,只要完成自己的工作就可以,其它的事情比如事前调查,事后追查都可以由律师来负责,这就可以减少你的负担.代理模式使用