代理的概念:

Web代理服务器是网络的中间实体。位于客户端和服务器之间,扮演“中间人”的角色,在各端点之间来回传送HTTP报文。

私有和共享代理: 代理服务器可以是某个客户端专用的,也可以是很多客户端共享的。单个客户端专用的代理被称为 私有代理,众多客户端共享的代理被称为 共享代理

为什么使用代理:

代理服务器可以实现各种时髦且有用的功能。它们可以 改善安全性提高性能节省费用。代理服务器可以看到并接触到所有流过的 HTTP流量,所以代理可以监视流量并对其进行修改,以实现很多有用的增值Web服务。

代理使用方法示例:

  1. 过滤器:针对不同人群设定不同内容;
  2. 文档访问控制:可以将代理服务器在大量Web服务器和Web资源之间实现统一的访问控制策略,创建审核跟踪机制;
  3. 安全防火墙:通常使用代理服务器来提高安全性,代理服务器会在网络中的单一安全节点上限制哪些应用层协议的数据可以流入或流出一个组织,还可以提供用来消除病毒WebEmai 代理使用的挂钩程序,以便对流量进行详细检查。
  4. Web缓存:代理缓存维护了常用文档的本地副本,并将它们按需提供;
  5. 反向代理:代理可以假扮Web服务器收发请求给真实Web服务器,但与Web服务器不同的是,它们可以发起与其它服务器的通信。
  6. 内容路由器:根据因特网流量状况以及内容类型将请求导向特定的Web服务器。
  7. 转码器:代理服务器在将内容发送给客户端之前,可以修改内容的主题格式。在这些表示法之间进行透明转换成为转码,如将GIF图片转换为JPG图片,以减小尺寸;

代理服务器的部署:

  1. 出口代理:可以将代理固定在本地网络的出口点,以便控制本地网络与大型因特网之间的流量;
  2. 入口代理:常被放在ISP访问点上,用以处理来自客户的聚合请求;
  3. 反向代理:通常会被部署在网络边缘,在 Web服务器 之前,作为替代物使用。在那里它们可以处理所有传送给 Web服务器的请求,并只在必要时向Web服务器请求资源;
  4. 网络交换代理:可以将具有足够处理能力的代理放在网络之间的因特网对等交换点上,通过缓存来减轻因特网节点的拥塞,并对流量进行监控;
  5. 代理的层次结构:可以通过代理层次结构将代理级联起来。在层次结构中,代理服务器被赋予了父和子的关系,下一个入口代理<靠近服务器>被成为父代理,下一个出口<靠近客户端>被成为子代理;
  6. 负载均衡:子代理可能会根据当前父代理的工作负载级别来决定如何选择一个父代理, 以均衡负载;
  7. 地理附近的路由:子代理可能会选择负责原始服务器所在物理区域的父代理;
  8. 协议 / 类型路由:子代理可能会根据 URI 将报文转发到不同的父代理和原始服务器上去。某些特定的 URL 可能要通过一些特殊的代理服务器转发请求,以便进行特殊的协议处理;
  9. 基于订购的路由:如果发布者为高性能服务额外付费,它们的URI就会被转发到大型缓存或压缩引擎上,以提高性能;

代理是如何获取流量的?

四种 常见方式可以使客户端流向代理:

  1. 修改客户端:如果将客户端配置为使用代理服务器,客户端就会将HTTP请求有意地发送给代理;
  2. 修改网络:依赖监视HTTP流量的交换设备及路由设备,在客户端毫不知情的情况下,将其进行拦截,并将流量导入一个代理,这种代理被成为拦截代理;
  3. 修改DNS的命名空间:编辑DNS名称列表,或者用特殊的动态DNS服务器根据需要来确定适当的代理或服务器;
  4. 修改Web服务器:将某些Web服务器配置为想客户端发送一条HTTP重定向命令(305),将客户端请求定向到一个代理上去;

客户端的代理设置:

  1. 手工配置:显式地设置要使用的代理;
  2. 预先配置浏览器:浏览器厂商或发行商会在浏览器发送其客户之前预先对浏览器的代理设置进行手工设置;
  3. 代理的自动设置:提供一个 URI,指向一个用 Javascript语言 编写的代理自动配置文件,客户端或读取这个 Javascript 文件,并运行它以决定是否应该使用一个代理,如果是,应该使用哪个代理服务器;
  4. WPAD的代理发现:有些浏览器支持 Web代理自动发现协议(Web Proxy Auto Discovery: WPAD) 这个协议会自动检测出浏览器可以从哪个“配置服务器”下载到一个自动配置文件;

实现WPAD协议的客户端需要:

  1. 用WPAD找到PAC的URI;
  2. 从指定的URI获取PAC文件;
  3. 执行PAC文件来判定代理服务器;
  4. 为请求使用代理服务器;

代理请求的一些问题

客户端向Web服务器发送请求时,请求行中只包含部分URI(没有方案、主机或端口),但当客户端向代理发送请求时,请求行中则包含完整的URI。

HTTP/1.1 要求服务器为代理请求和服务器请求都提供完整的URI处理,但实际上,很多已经部署的服务器仍然只接受部分URI。根据是否有代理,浏览器对URI的解析会有所不同。没有代理时,浏览器会获取你输入的URI,尝试着寻找相应的IP地址,如果找到了主机名,浏览器会尝试相应的IP地址知道获取到成功的连接为止。如果没有找到主机,很多浏览器都会尝试着提供某种主机名自动“扩展”机制,以防用户输入的是“简短”的缩写形式。例如:当你输入 yahoo 时,大多数浏览器都会自动将其扩展成 www.yahoo.com,类似地,浏览器允许用户省略前缀,http://,如果省略了浏览器会自动插入。当使用显式代理时,用户的URI会将直接发送给代理,所以浏览器就不再执行这些便捷操作了。

Via首部

Via首部 列出了与报文途径的每个中间节点(代理或网关)有关的信息,报文每经过一个节点,都必须将这个中间节点添加到Via列表的末尾。

例如:
Via: 1.1 Proxy – 6.2 . irenes – isp.net (第一个代理名,实现了HTTP/1.1)
1.0 cache – joes – hardwave.com (第二个代理名,实现了HTTP/1.0)

Via语法: Via首部字段信息包含一个由逗号分隔的路标,每个路标都表示一个独立的代理服务器或网关,且包含与那个中间节点的协议和地址有关的信息。

每个Via路标中最多包含4个组件:

  1. 一个可选协议名,默认为HTTP
  2. 一个必选协议版本
  3. 一个必选的节点名
  4. 可选的描述行注释

协议名: 中间点收到的协议。如果协议为HTTP的话,协议名就是可选的。否则,要在版本之前加上协议名,中间用“/”分隔,网关将HTTP请求连接其它协议时,可能会使用非HTTP协议;

协议版本: 版本的格式与协议有关;

节点名: 中间节点的主机和可选端口号;

节点注释: 进一步描述这个中间节点的可选注释。通常会在这里包含厂商和版本信息;

请求和响应报文都会经过代理进行传输,因此,请求和报文中都要有Via首部,但是响应Via通常与请求Via相反。

OPTIONS首部:发现对可选特性的支持

通过 HTTP OPTIONS 方法,客户端可以发现Web服务器或者其上某个特定资源所支持的功能(比如:它们所支持的方法),通过使用 OPTIONS,客户端可以在与服务器进行交互之前,确定服务器的能力,这样就可以方便地与具备不同特性的代理和服务器进行交互了。如果OPTIONS请求的URI是个*,请求的是整个服务器所支持的功能。如果成功,OPTIONS方法就会返回一个包含了各种首部字段的 200 OK 回应,这些字段描述了服务器所支持的,或资源可用的各种可选特性。

Allow首部:

列出了请求URI标识的资源所支持的方法列表,如果请求URL为 *的话,列出的就是整个服务器所支持的方法列表。

### 图灵图书 -- HTTP权威指南

豆瓣读书 -- HTTP权威指南

《HTTP权威指南》– 6.代理的更多相关文章

  1. Struts2权威指南笔记

    Struts2权威指南笔记 1.mvc特点包括: ① 多个视图可以对应一个模型 ② 模型返回的数据与显示逻辑分离 ③ 应用层被分隔为三层,降低了各层之间的耦合,提供了应用的可扩展性 ④ 控制层的概念也 ...

  2. 【HTTP权威指南】第1 章 HTTP 概述

    1.1 HTTP--因特网的多媒体信使 ................................................................................ ...

  3. 《HTTP权威指南》读书笔记(一)

    1.因特网上有数千种不同的数据类型,HTTP仔细地给每种要通过Web传输的对象都搭上了名为MIME类型的数据格式标签.WEB服务器会为所有HTTP对象数据附加一个MIME类型.当Web浏览器从服务器中 ...

  4. 《http权威指南》读书笔记18

    概述 最近对http很感兴趣,于是开始看<http权威指南>.别人都说这本书有点老了,而且内容太多.我个人觉得这本书写的太好了,非常长知识,让你知道关于http的很多概念,不仅告诉你怎么做 ...

  5. 《http权威指南》读书笔记17

    概述 最近对http很感兴趣,于是开始看<http权威指南>.别人都说这本书有点老了,而且内容太多.我个人觉得这本书写的太好了,非常长知识,让你知道关于http的很多概念,不仅告诉你怎么做 ...

  6. 《http权威指南》读书笔记13

    概述 最近对http很感兴趣,于是开始看<http权威指南>.别人都说这本书有点老了,而且内容太多.我个人觉得这本书写的太好了,非常长知识,让你知道关于http的很多概念,不仅告诉你怎么做 ...

  7. 《http权威指南》读书笔记12

    概述 最近对http很感兴趣,于是开始看<http权威指南>.别人都说这本书有点老了,而且内容太多.我个人觉得这本书写的太好了,非常长知识,让你知道关于http的很多概念,不仅告诉你怎么做 ...

  8. 《http权威指南》读书笔记11

    概述 最近对http很感兴趣,于是开始看<http权威指南>.别人都说这本书有点老了,而且内容太多.我个人觉得这本书写的太好了,非常长知识,让你知道关于http的很多概念,不仅告诉你怎么做 ...

  9. 《http权威指南》读书笔记8

    概述 最近对http很感兴趣,于是开始看<http权威指南>.别人都说这本书有点老了,而且内容太多.我个人觉得这本书写的太好了,非常长知识,让你知道关于http的很多概念,不仅告诉你怎么做 ...

  10. 《http权威指南》读书笔记7

    概述 最近对http很感兴趣,于是开始看<http权威指南>.别人都说这本书有点老了,而且内容太多.我个人觉得这本书写的太好了,非常长知识,让你知道关于http的很多概念,不仅告诉你怎么做 ...

随机推荐

  1. Kubernetes角色访问控制RBAC和权限规则(Role+ClusterRole)

    文章转载自:https://blog.csdn.net/BigData_Mining/article/details/88849696 基于角色的访问控制(Role-Based Access Cont ...

  2. LINUX 新增的磁盘不建立分区,直接建立文件系统并挂载

    假设新硬盘是 /dev/sdc fdisk操作的是/dev/sdc ,分区后才会有/dev/sdc1 /dev/sdc2 之类 一般mkfs.ext4 /dev/sdc1 来格式化一个分区,再moun ...

  3. 企业MES系统与ERP信息集成要素有哪些?

    关于要讲明企业MES系统与ERP信息集成要素有哪些,得先弄清楚他们之间的关系:从工厂的管理来说,ERP在上MES在下,ERP统领企业全局包括MES,为管理层服务,重心在于企业决策,ERP对企业宏观管理 ...

  4. python中类与对象的命名空间(静态属性的陷阱)、__dict__ 和 dir() 在继承中使用说明

    1. 面向对象的概念 1)类是一类抽象的事物,对象是一个具体的事物:用类创建对象的过程,称为实例化. 2)类就是一个模子,只知道在这个模子里有什么属性.什么方法,但是不知道这些属性.方法具体是什么: ...

  5. C++面向对象编程之转换函数、explicit、one-argument

    1.转换函数 转换函数不需要返回值和参数,直接 "operator 类型名称() {}" ,类型名称就决定了返回值: 在一开始在执行 d = 4 + f; 时,先看有木有重载 + ...

  6. 关于maven插件在Myeclipse中的使用

    出现了如下几个错误: 1.访问不到maven的中央仓库,插件下载失败,无法使用插件启动tomcat命令. 解决方法到 maven的配置文件中,一般在我的文档中的.m2文件中的settting.xml中 ...

  7. numba jit加速python程序

    numba numba加速循环.numpy的一些运算,大概是将python和numpy的一些代码转化为机器代码,速度飞快! 加速耗时很长的循环时: from numba import jit # 在函 ...

  8. js中通过正则表达式验证邮箱是否合法

    文章目录 1.效果展示 2.问题描述 3.代码实现 1.效果展示 2.问题描述 当用户在输入框输入邮箱后.点击验证邮箱按钮.系统给出提示信息. 3.代码实现 <!DOCTYPE html> ...

  9. python视频与帧图片的相互转化,以及查看视频分辨率

    1.拆分视频为帧图片 import cv2 def video2frame(videos_path,frames_save_path,time_interval): vidcap = cv2.Vide ...

  10. 一、docker的介绍

    一.虚拟化和容器 虚拟化介绍 操作系统层虚拟化是指通过划分一个宿主操作系统的特定部分,产生一个个隔离的操作执行环境.操作系统层的虚拟化是操作系统内核直接提供的虚拟化,虚拟出的操作系统之间共享底层宿主操 ...