Web的中间实体

HTTP的代理服务器既是Web服务器又是Web客户端,它既需要正确地处理从客户端发来的请求和连接,返回响应,有需要向服务器发送请求,并接受响应。

私有和共享代理

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

为什么使用代理

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

  • 儿童过滤器:利用过滤器代理阻止学生访问成人内容
  • 安全防火墙:代理服务器会在网络中的单一安全节点上限制哪些应用层协议的数据可以流入或流出一个组织。
  • Web缓存:维护了常用文档的本地副本,将它们按需提供,以减少缓慢且昂贵的因特网通信
  • 反向代理:假扮Web服务器,接收发给Web服务器的真实请求,然后可以发起与其他服务器的通信,以便按需定位所请求的内容。
  • 内容路由器:根据因特流量状况以及内容类型将请求导向特定的Web服务器
  • 转码器:代理服务器在将内容发送给客户端之前,可以修改内容的主题格式,在这些数据表示法之间进行的透明转换被称为转码
  • 匿名者:匿名者代理会主动从HTTP报文中删除身份特性,从而提供高度的私密性和匿名性。

代理会去往何处

在一个网络结构中部署代理时,它会位于何处???

代理服务器的部署

根据代理的目标用途,可以将代理放在任意位置,如下是部署代理服务器的几种方式:

  • 出口代理:将代理固定在本地网络的出口点,以便控制本地网络和大型因特网之间的流量。
  • 访问(入口)代理:代理常被放在ISP访问点上,用以处理来自客户的聚合请求。
  • 反向代理:通常被部署在网络边缘,在Web服务器之前,作为替代物使用。
  • 网络交换代理:可以将具有足够处理能力的代理放在网络之间的因特网对等交换点上,通过缓存来减轻因特网节点的拥塞,并对流量进行监视。

代理的层次结构

可以通过代理层次(proxy hierarchy)结构将代理级联起来。
在代理层次结构中,会将报文从一个代理传给另一个代理,直到最终抵达原始服务器为止。

代理是如何获取流量的

客户端通常会直接与Web服务器进行通信,那么HTTP流量怎样才能首先流向代理呢?
常见方式有如下四种:

  • 修改客户端:如果将客户端配置为使用代理服务器,客户端就会将HTTP请求有意地直接发送给代理。
  • 修改网络:网络基础设施可以通过若干种技术,在客户端不知道的情况下,拦截流量并将其导入代理。
  • 修改DNS的命名空间:放在Web服务器之前的代理服务器,会直接假扮Web服务器的名字和IP地址
  • 修改Web服务器:可以在某些Web服务器配置为向客户端发送一条HTTP重定向命令,将客户端请求重定向到一个代理上去。

客户端的代理设置

所有的现代Web浏览器都允许用户对代理的使用进行配置,很多浏览器提供了多种配置代理的方式

手工配置

显示地设置要使用的代理

代理的自动配置(Proxy Auto-Configuration,PAC)

PAC文件是一些小型的JavaScript程序,可以在运行过程中计算代理设置。
要使用PAC文件,就要用JavaScript PAC文件的URI来配置浏览器,浏览器会从这个URI上获取PAC文件,并用JavaScript逻辑为每次访问计算恰当的代理服务器。

WPAD(Web Proxy Autodiscovery Protocol)

WPAD协议的算法会使用发现机制,逐级上升策略自动地为浏览器找到合适的PAC文件,实现WPAD协议的客户端需要。

追踪报文

现在,在将Web请求从客户端传送到服务器的路径上,经过两个或多个代理是很常见的。
代理是由不同厂商开发的,有不同的特性和缺陷,由各种不同的组织负责管理。
随着代理的逐渐流行,我们要能够追踪经过代理的报文流,以检测出各种问题。

Via首部

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

TRACE方法

通过TRACE方法,用户可以跟踪经代理链传输的请求报文,观察报文经过了哪些代理,以及每个代理是如何对请求报文进行修改的。

代理认证

HTTP定义了一种名为代理认证(proxy authentication)的机制,这种机制可以阻止对内容的请求,知道用户向代理提供了有效的访问权限证书为止。

《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. C/C++扩展Python的时候数据类型转换的对应:

  2. MyBatis-Plus学习笔记

    MybatisPlus的全局策略配置 注意:我们写的配置还要加到 MybatisSqlSessionFactoryBean 中 applicationContext.xml <!--定义Myba ...

  3. 使用nifi采集数据要配置的环境

    第一步 安装 Anaconda3-2019.03-Windows-x86_64.exe 下载地址:https://repo.anaconda.com/archive/Anaconda3-2019.03 ...

  4. anaconda使用方法

    我是用的win10.想写爬虫,所以使用了  anaconda .总结一下使用的方法. 安装阶段跳过.: 再终端输入  jupyter notebook  然后就会在. 浏览器显示一个网页.其实这个也不 ...

  5. Top值

    业务开发中经常会用到元素或者浏览器窗口的各种top值,最近开发组件的过程中也遇到各种问题,因此决定好好总结一下. 常见的top值 scrollTop Element.scrollTop 属性可以获取或 ...

  6. leetcode4:两个排序数组的中位数

    给定两个大小为 m 和 n 的有序数组 nums1 和 nums2 . 请找出这两个有序数组的中位数.要求算法的时间复杂度为 O(log (m+n)) . 1.我的思路:直接用sort,时间复杂度应如 ...

  7. 利用mybatis generator实现数据库之间的表同步

    项目背景: 项目需要对两个服务器上的表进行同步,表的结构可能不一样.比如服务器A上的表i同步数据到服务器B上的表j,i和j的结构可能不一样,当然大部分字段是一样的.项目看起来很简单,网上一搜也是很多, ...

  8. linux(centos) tomcat设置开机启动

    亲测有效 环境: centos7 apache-tomcat-8.5.37 设置步骤: 1.修改/etc/rc.d/rc.local vi /etc/rc.d/rc.local 2.添加下面两行脚本, ...

  9. Python unittest使用小结

    unittest是Python自带的单元测试框架,其中最核心的四个概念是:test case, test suite, test runner, test fixture. 流程:TestLoader ...

  10. odoo8 元素简介

    一:模型module: 1. 字段类型 (1)可控字段: fileds.char() fileds.Boolean() fileds.Date() (2)保留字段:(系统自动生成) id (Id) t ...