代理类型
公共代理
泛滥客户端共享的代理被称为公共代理
大多数代理都是公共的共享代理。集中式代理的老本效率更高,更容易治理。某些代理利用,比方高速缓存代理服务器,会利用用户间独特的申请,这样的话,汇入同一个代理服务器的用户越多,它就越有用。
公有代理
单个客户端专用的代理被称为公有代理。
专用的公有代理并不常见,但它们的确存在,尤其是间接运行在客户端计算机上的时候。有些浏览器辅助产品,以及一些 ISP 服务,会在用户的 PC 上间接运行一些小型的代理,以便扩大浏览器个性,进步性能,或为收费 ISP 服务提供主机广告。
为什么要应用代理 - 代理的作用
它们能够改善安全性,进步性能,节俭费用。里给出了几种代理应用办法的示例
儿童过滤器
能够利用过滤器代理来阻止学生拜访成人内容。如下图所示
文档访问控制
集中式访问控制代理:
- 容许客户端 1 无限度地拜访服务器 A 的新闻页面;
- 客户端 2 能够无限度地拜访因特网;
- 在容许客户端 3 拜访服务器 B 之前,要求其输出口令。
平安防火墙
Web 缓存
反向代理
反向代理服务器位于用户与指标服务器之间,然而对于用户而言,反向代理服务器就相当于指标服务器正向代理,意思是一个位于客户端和原始服务器 (origin server) 之间的服务器,为了从原始服务器获得内容,客户端向代理发送一个申请并指定指标(原始服务器),而后代理向原始服务器转交申请并将取得的内容返回给客户端。和反向代理不同之处在于,典型的正向代理是一种最终用户晓得并被动应用的代理形式
转码器
代理服务器在将内容发送给客户端之前,能够批改内容的主体格局。在这些数据表示法之间进行的通明转换被称为转码(transcoding)
部署代理的地位
按部署代理的地位代理能够分为一下几种:
1、进口代理:部署在本地网络端,用于爱护本地网络或者限度公司带宽
2、拜访(入口)代理:用于实现提供缓存响应
3、反向代理:部署在服务器端本地网络上,用于实现更准确的申请和提供性能
4、网络替换代理:部署在网络上,用于检测漂泊等
代码层次结构
代理层次结构形容的代理的部署层级构造,比方一级代理,二级代理等,这是一种动态层级构造,有父代理和子代理的概念,离原始服务器进的的代理是离服务器远的代理的父代理!然而代理层级不应该动态的,而应该能够是动静的,以保障代理能够依据理论网络负载状况而下发报文到不同的代理!从而产生的动静层级代理概念有负载平衡、地理位置左近的路由等!
http 申请报文流量导入代理
http 申请报文是怎么进入代理的,形容的怎么把 http 申请报文流量导入代理!次要有一下几种形式:
1、批改客户端:比方当初的客户端都反对收手动和主动配置代理!
2、批改网络:网络通过一些技术在客户端不知情的状况揽入流量进入代理!
3、批改 dns 命名空间:把主机名映射为代理的 ip 地址,比方批改零碎的 dns 映射文件,让代理伪装成原始服务器,从而把 web 申请导入代理!
4、批改服务器:让服务器返回一个重定向无关的代码,把 http 申请报文导入到代理!
客户端代理的配置
显式的手工配置
事后配置浏览器
代理的主动配置,通过 PAC 动静计算代理的设置,抉择适合的代理服务器
代理的 URI 和服务器的 URI 的不同
客服端向 web 服务器发送申请时,申请行只蕴含局部 URI,但向代理发送申请时,申请行蕴含所有的 URI
解决规定
1、如果提供的是残缺 URI,代理就应该应用这个残缺 URI。
2、如果提供的是局部 URI,而且有 Host 首部,就应该用 Host 首部来确定原始服务器的名字和端口号。
3、如果提供的是局部 URI,而且没有 Host 首部,就要用其余办法来确定原始服务器:
1. 如果代理是代表原始服务器的替代物,能够用实在服务器的地址和端口号来配置代理;2. 如果流量被拦挡了,而且拦挡者也能够提供原始的 IP 地址和端口,代理就能够应用拦挡技术提供的 IP 地址和端口号;3. 如果所有办法都失败了,代理没有足够的信息来确定原始服务器,就必须返回一条谬误报文(通常是倡议用户降级到反对 Host 首部的古代浏览器)。
URI 的客户端主动扩大和主机名解析
没有代理是 URI 的解析
浏览器会对主机名进行主动扩大,直到找到一个无效主机名为止
有显示代理 URI 的解析
浏览器不会对主机名进行主动扩大,发送给代理时,只会对加默认计划和门路
有拦挡代理时 URI 的解析
此时,对于客户端来说是没有代理的,浏览器会主动扩大主机名
追踪报文
Via 首部
Via 首部字段会列出与报文路径的每个两头节点无关的信息,没过一个代理或网关,就会在尾部加一个代理或网关的信息
留神,每个 Via 路标中最多蕴含 4 个组件:
1. 一个可选的协定名: 两头节点收到的协定, 默认为 HTTP;
2. 一个必选的协定版本;
3. 一个必选的节点名;
4. 一个可选的描述性正文
TRACE
通过 HTTP/1.1 的 TRACE 办法,朱总经代理传输的申请报文,以及每个代理如何对申请报文进行批改的
当 TRACE 申请达到目标服务器时,整条申请报文都会被封装在一条 HTTP 响应的主体中回送给发送端(参见图 6 -23)。当 TRACE 响应达到时,客户端能够查看服务器收到的确切报文,以及它所通过的代理列表(在 Via 首部)。TRACE 响应的 Content-Type 为 message/http,状态为 200 OK
Max-Forwards
能够应用 Max-Forwards(最大转发次数)首部来限度 TRACE 和 OPTIONS 申请所通过的代理跳数
如果 Max-Forwards 的值为零(Max-Forwards:0),那么即便接收者不是原始服务器,它也必须将 TRACE 报文回送给客户端,而不应该持续转发。
代理认证
对受限内容的申请达到一台代理服务器时,代理服务器能够返回一个要求应用拜访证书的 407 Proxy Authorization Required 状态码,以及一个用于形容怎么提供这些证书的 Proxy-Authenticate 首部字段
代理认证的处理过程
1、客户端收到 407 响应时,会尝试着从本地数据库中,或者通过提醒用户来收集所须要的证书。
2、只有取得了证书,客户端就会从新发送申请,在 Proxy-Authorization 首部字段中提供所要求的证书。
3、如果证书无效,代理就会将原始申请沿着传输链路向下传送(如上图所示);否则,就发送另一条 407 应答。
Proxy-Authorization
<type>
身份验证类型。一个常见的类型是 "Basic"。<credentials>
凭证的形成形式如下:将用户名和明码用冒号拼接(aladdin:opensesame)。将拼接生成的字符串应用 base64 编码方式进行编码(YWxhZGRpbjpvcGVuc2VzYW1l)。
解决代理不反对的首部和办法
代理必须对不意识的首部字段进行转发,而且必须维持同名首部字段的绝对程序。相似地,如果代理不相熟某个办法,那么只有可能,就应该尝试着将报文转发到下一跳节点下来。