作者简介

李先生(Lemon),高级运维工程师(自称),SRE专家(目标),梦想在35岁买一辆保时捷。喜欢钻研底层技术,认为底层基础才是王道。一切新技术都离不开操作系统(CPU、内存、磁盘)、网络等。坚持输入输出,记录自己学习的点滴,在平凡中坚持前行,总有一天会遇见不一样的自己。公众号:运维汪(ID:Leeeee_Li)。
 
                                                                               

一、什么是Web代理

Web代理(proxy)服务器是网络的中间实体。代理位于客户端和服务端之间,扮演“中间人”的角色,在各端点之间来回传送HTTP报文。某个客户端专用的代理为私有代理,众多客户端共享的代理称为公共代理。
 
 
 

二、Web代理和网关的区别

代理:连接的是两个或多个使用相同协议的应用程序。
网关:连接的是两个或多个使用不同协议的端点。
 
 
 

三、为什么使用代理

1、儿童过滤器
 
假如在一个学校,既要对教育站点访问无障碍,又要使用代理来组织对成人内容的访问。
 

2、文档访问控制
 
使用代理服务器在大量Web服务器和Web资源之间实现统一的访问控制策略。如
a)允许客户端1无限制地访问服务器A的新闻页面
b)客户端2可以无限制地访问互联网
c)在允许客户端3访问服务器B之前,需要输入账号密码
 
 
 
3、安全防火墙
 
防火墙代理提高安全性,代理服务器会在网络中的单一安全节点上限制哪些应用层协议的数据可以流入另一组织。还可以提供用来消除病毒的Web和E-mail代理使用的那种挂钩程序,对流量进行详细的检查。

 
4、Web缓存
 
代理缓存维护了常用的文档的本地副本,并将他们按需提供,以减少缓慢且昂贵的网络通信。
 
5、反向代理
 
代理可以假扮Web服务器,这些反向代理的代理接收发给Web服务器的真实请求,与Web服务器不同的是它们可以发起与其他服务器的通信,以便按需定位所请求的内容。
 
6、内容服务器
 
代理服务器可以作为“内容服务器”使用,根据因特网流量状况以及内容类型将请求导向特定的Web服务器。也可实现各种服务级别的请求,比如用户付费需要提高性能,内容路由器可以将请求转发到附近的复制缓存。
 
7、转码器
 
代理服务器在将内容发送给客户端之前,可以修改内容的主体格式。在这些数据表示法之间进行的透明转换被称为转码。如在传输GIF图片时,将其转换为JPEG图片;也可以对图片进行压缩。或者在传输文档的过程中将其转换成另一种语言(将英文文档转换为中文文档)。
 
8、匿名者
 
匿名者代理会主动从HTTP报文中删除身份特性(比如客户端IP地址、From首部、Referer首部、cookie、URI的session ID等),提高高度的私密性和匿名性。

四、代理服务器的位置

1、出口代理
将代理固定在本地网络的出口点,以便控制本地网络与互联网之间的流量。
 
2、访问入口代理
代理常被放在ISP(Internet Server Provider)互联网服务提供商访问点上,用以处理来自客户的聚合请求。ISP使用缓存代理来存储常用的文档副本,以提高用户的下载速度,降低因特网带宽耗费。
 
3、反向代理
代理通常会被部署在网络边缘,在Web服务器之前,作为替代物(反向代理)使用,它们可以处理所有传送给Web服务器的请求,并只在必要时向Web服务器请求资源。
 
4、网络交换代理
可以将具有足够处理能力的代理放在网络之间的因特网对等交换点上,通过缓存来减轻因特网节点的拥塞,并对流量进行监视。

五、代理的层级结构

 
可以通过代理层次结构将代理连接起来,代理层次结构的应用场景有:
 
1)负载均衡
子代理可能会根据当前父代理上的工作负载来决定如何选择一个负载均衡,达到负载均衡的作用
 
2)地理位置附近的路由
子代理可能会选择负责原始服务器所在物理区域的代理
 
3)协议/类型路由
子代理可能会根据URI将报文转发到不同的父代理和原始服务器上去
 
4)基于订购的路由
如果发布者为高性能额外付费了,他们的URI就会被转发到大型缓存或压缩引擎上去,以提高性能。
 

六、如何使客户端走向代理

客户端通常会直接与Web服务器进行通信,如何使得客户端的流量流向代理
 
1)修改客户端
 
将客户端配置为代理服务器,客户端就会将HTTP请求有意地直接发送给代理,而不是原始服务器。
 
 
2)修改网络
 
网络基础层设施通过若干技术手段,在客户端不知道或没有参与的情况下,拦截网络流量并将其导入代理。
 
3)修改DNS的命名空间
 
放在Web服务器的代理服务器(反向代理),会直接假扮Web服务器的名字和IP地址,这样所有的请求就会发送给这些反向代理服务器,而不得Web服务器。
 
4)修改Web服务器
 
将某些Web服务器配置为向客户端发送一条HTTP重定向命令(响应码305),将客户端请求重定向到一个代理上去,收到重定向命令后,客户端会与代理服务器进行通信。
 
 

七、追踪报文

1、Via首部
 
Via首部字段列出了与报文途径的每个中间节点有关的信息,报文每经过一个节点,都必须将这个中间节点添加到Via列表的末尾。
Via:1.1 proxy-62.irenes-isp.net, 1.0 cache.joes-hardware.com

Via首部字段用于记录报文的转发,诊断报文循环,标识请求、响应链上所有发送者的协议能力。

 
2、Via的语法
 
Via首部字段包含一个由逗号分隔的路标,每个路标都表示一个独立的代理服务器或网关。Via包括四个组件,一个可选的协议名(默认为HTTP),一个必选的协议版本,一个必选的节点名和一个可选的描述性注释。
Via:1.1 proxy-62.irenes-isp.net, 1.0 cache.joes-hardware.com
3、Via的请求和响应路径
 
请求和响应报文都会经过代理进行传输,因此请求和响应报文中都要有Via首部。请求和响应通常都是通过同一条TCP连接传送的,所以响应报文沿着与请求报文相同的路径回传。

4、Via与网关
 
有些代理会为非使用HTTP协议的服务器提供网关的功能,Via首部记录了这些协议的转换。
 
 
5、Trace方法
 
代理服务器可以在转发报文时对其进行修改。可以添加、修改或删除首部,也可以将主体部分转换成不同的格式。通过HTTP/1.1的TRACE方法,用户可以跟踪代理链传输的请求报文,观察报文经过了哪些代理,以及每个代理是如何对请求报文进行修改的。
 

八、学习交流

欢迎大家关注我的公众号,一起交流、学习。

图解HTTP权威指南(四)| 代理的更多相关文章

  1. 图解HTTP权威指南 | HTTP报文

                                                                                    一.问题 1.报文流是如何流动的 2.H ...

  2. 图解HTTP权威指南(二)| 连接管理

    一.两个问题 1.HTTP是如何使用TCP连接的 2.HTTP的连接,并行连接.keep-alive(持久连接)和管道化连接   二.TCP连接 1.什么是TCP   TCP/IP是全球计算机及网络设 ...

  3. 图解HTTP权威指南(五) | HTTP缓存

    作者简介 李先生(Lemon),高级运维工程师(自称),SRE专家(目标),梦想在35岁买一辆保时捷.喜欢钻研底层技术,认为底层基础才是王道.一切新技术都离不开操作系统(CPU.内存.磁盘).网络等. ...

  4. 图解HTTP权威指南(三)| Web服务器对HTTP请求的处理和响应

    作者简介   李先生(Lemon),高级运维工程师(自称),SRE专家(目标),梦想在35岁买一辆保时捷.喜欢钻研底层技术,认为底层基础才是王道.一切新技术都离不开操作系统(CPU.内存.磁盘).网络 ...

  5. 【文章内容来自《Android 应用程序开发权威指南》(第四版)】如何设计兼容的用户界面的一些建议(有删改)

    最近一直在看的一本书是<Android 应用程序开发权威指南>(第四版),十分推荐.书中讲到了一些用户界面设计的规范,对于初学者我认为十分有必要,在这里码给大家,希望对我们都有用. 在我们 ...

  6. 《Web性能权威指南》

    <Web性能权威指南> 基本信息 原书名:High performance browser networking 原出版社: O'Reilly Media 作者: (加)Ilya Grig ...

  7. HTTP权威指南读书笔记

    HTTP权威指南笔记 读书有两种境界,第一种境界是将书读薄,另一种是读厚.本篇文章就是HTTP权威指南的读书笔记,算是读书的第一重境界,将厚书读薄.文章对HTTP的一些关键概念做了比较详细的概述,通读 ...

  8. 【Android实战】----从Retrofit源代码分析到Java网络编程以及HTTP权威指南想到的

    一.简单介绍 接上一篇[Android实战]----基于Retrofit实现多图片/文件.图文上传中曾说非常想搞明确为什么Retrofit那么屌. 近期也看了一些其源代码分析的文章以及亲自查看了源代码 ...

  9. [置顶] 【Android实战】----从Retrofit源码分析到Java网络编程以及HTTP权威指南想到的

    一.简介 接上一篇[Android实战]----基于Retrofit实现多图片/文件.图文上传中曾说非常想搞明白为什么Retrofit那么屌.最近也看了一些其源码分析的文章以及亲自查看了源码,发现其对 ...

随机推荐

  1. 第7.24节 Python案例详解:使用property函数定义属性简化属性访问代码实现

    第7.24节 Python案例详解:使用property函数定义属性简化属性访问代码实现 一.    案例说明 本节将通过一个案例介绍怎么使用property定义快捷的属性访问.案例中使用Rectan ...

  2. PyQt(Python+Qt)学习随笔:Designer中的QDialogButtonBox的ButtonRole详解

    一.引言 在Designer中创建的QDialogButtonBox对应的Button,都有指定的ButtonRole,而我们创建自定义的Button加入到QDialogButtonBox中去时,也需 ...

  3. 在 GitHub 玩硬件——GitHub 热点速览 Vol.49

    作者:HelloGitHub-小鱼干 本周的 GitHub Trending 可以说是非常之硬核,天才少年稚晖君的 2 个硬件变装项目荣登热点榜,看完将充电宝改装为显示器的视频,搭配 HDMI-PI ...

  4. Scrum 冲刺 第二篇

    Scrum 冲刺 第二篇 每日会议照片 昨天已完成工作 队员 昨日完成任务 黄梓浩 初步完成app项目架构搭建 黄清山 完成部分个人界面模块数据库的接口 邓富荣 完成部分后台首页模块数据库的接口 钟俊 ...

  5. centos7.5以上poenssl和openssh升级

    2020年12月09日,360CERT监测发现  openssl  发布了  openssl 拒绝服务漏洞  的风险通告,该漏洞编号为  CVE-2020-1971  ,漏洞等级:高危 ,漏洞评分:7 ...

  6. 基于Fisco-Bcos的区块链智能合约-简单案例实践

    一.智能合约介绍 智能合约是指把合同/协议条款以代码的形式电子化地放到区块链网络上.FISCO BCOS平台支持两种智能合约类型:Solidity智能合约与预编译智能合约 Solidity与Java类 ...

  7. uniapp保存图片到本地(APP和微信小程序端)

    uniapp实现app端和微信小程序端图片保存到本地,其它平台未测过,原理类似. 微信小程序端主要是权限需要使用button的开放能力来反复调起,代码如下: 首先是条件编译两个平台的按钮组件: < ...

  8. 查询是否sci或者ei收录

    1,如果查文章是不是被SCI检索:进入ISI Web of Knowledge,选择Web of Science 数据库,进行查询:2,如果查文章是不是被EI检索:进入EI Village, 选择Co ...

  9. Python定时任务利器—Apscheduler

    导语 在工作场景遇到了这么一个场景,就是需要定期去执行一个缓存接口,用于同步设备配置.首先想到的就是Linux上的crontab,可以定期,或者间隔一段时间去执行任务.但是如果你想要把这个定时任务作为 ...

  10. AWT10-位图

    1.概述 Graphics提供了drwaImage(Image image)来绘制位图,该方法需要一个位图做参数. 步骤: 1.创建Image的子类对象BufferedImage(int width, ...