关于 HITP 代理,你还需要了解这些,不然面试你是过不去的!

本文涉及的产品
访问控制,不限时长
简介: 上一篇文章我们完整的介绍了 HTTP 是如何使用 TCP 进行连接的,接下来的文章我们再来看看你在面试中经常会被问到的关于代理的问题。

1. HTTP 代理

百度百科是这么解释的:代理客户机的 HTTP 访问,主要代理浏览器访问网页,它的端口一般为80、8080、3128等。

百度百科实在是太模糊了我们来细致的说一下什么是 HTTP 代理,说 HTTP 代理,那我们首先就得来说一下 WEB 代理了。

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

Web 上的代理服务器是代表客户端完成事务处理的中间人。如果没有 Web 代理,HTTP 客户端就要直接与 HTTP 服务器进行对话。有了 Web 代理,客户端就可以与代理进行对 话,然后由代理代表客户端与服务器进行交流。客户端仍然会完成对事务的处理,但它是 通过代理服务器提供的优质服务来实现的。 HTTP 的代理服务器既是 Web 服务器又是 Web 客户端。HTTP 客户端会向代理发送请求 报文,代理服务器必须像 Web 服务器一样,正确地处理请求和连接,然后返回响应。

同时,代理自身要向服务器发送请求,这样,其行为就必须像正确的 HTTP 客户端一样,要 发送请求并接收响应,我们大家来看一幅图:15.png

如果要创建自己的 HTTP 代理,就要认真地遵循为 HTTP 客户端和 HTTP 服务器制定的规则。

1.1 代理的类别

代理分为了私有的代理和共享的代理

  • 共享代理

大多数代理都是公共的共享代理。集中式代理的成本效率更高,更容易管理。某些代理应用,比如高速缓存代理服务器,会利用用户间共同的请求,这样的话,汇入同一个代理服务器的用户越多,它就越有用。

  • 私有代理

专用的私有代理并不常见,但它们确实存在,尤其是直接运行在客户端计算机上的时候。有些浏览器辅助产品,以及一些 ISP 服务,会在用户的 PC 上直接运行一些小型 的代理,以便扩展浏览器特性,提高性能,或为免费 ISP 服务提供主机广告。

1.2 代理和网关的区别

代理 连接的是两个或多个使用相同协议的应用程序。而网关不一样,网关连接的则是两个或 多个使用不同协议的端点。网关 扮演的是“协议转换器”的角色,即使客户端和服务器使用 的是不同的协议,客户端也可以通过它完成与服务器之间的事务处理。

16.jpg

其实我们从图上看, HTTP 网关和 HTTP 代理之间的区别实在是很模糊,由于浏览器和服务器实现的是不同版本的 HTTP,代理也经常要做一些协议转换工作。而商业化的代理服务器也会实现网关的功能 来支持 SSL 安全协议、SOCKS 防火墙、FTP 访问,以及基于 Web 的应用程序。

1.2 为什么使用代理

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

我们来看一下几种具体的代理的使用方法

儿童过滤器

17.jpg

小学在为教育站点提供无阻碍访问的同时,可以利用过滤器代理来阻止学生访问成人 内容。

文档访问控制

可以用代理服务器在大量 Web 服务器和 Web 资源之间实现统一的访问控制策略,创建审核跟踪机制。这在大型企业环境或其他分布式机构中是很有用的。 在集中式代理服务器上可以对所有访问控制功能进行配置,而无需在众多由不同组织管理、不同厂商制造、使用不同模式的 Web 服务器上进行经常性的访问控制升级。

安全防火墙

网络安全工程师通常会使用代理服务器来提高安全性。代理服务器会在网络中的单一安全节点上限制哪些应用层协议的数据可以流入或流出一个组织。还可以提供用来消除病毒的 Web 和 E-mail 代理使用的那种挂钩程序,以便对流量进行详细的检查

18.jpg

小学在为教育站点提供无阻碍访问的同时,可以利用过滤器代理来阻止学生访问成人 内容。

文档访问控制

可以用代理服务器在大量 Web 服务器和 Web 资源之间实现统一的访问控制策略,创建审核跟踪机制。这在大型企业环境或其他分布式机构中是很有用的。 在集中式代理服务器上可以对所有访问控制功能进行配置,而无需在众多由不同组织管理、不同厂商制造、使用不同模式的 Web 服务器上进行经常性的访问控制升级。

安全防火墙

网络安全工程师通常会使用代理服务器来提高安全性。代理服务器会在网络中的单一安全节点上限制哪些应用层协议的数据可以流入或流出一个组织。还可以提供用来消除病毒的 Web 和 E-mail 代理使用的那种挂钩程序,以便对流量进行详细的检查

19.jpg

既然我们都知道了代理能够做些什么,那是不是需要知道他从哪里来,到哪里去呢?接下来我们就看看代理他落在哪里

1.3 代理位于何处

1.3.1 代理服务器的部署

20.jpg

根据用处的不同,都能把代理服务器安置在不同的地点,

  • 出口代理
  • 访问(入口)代理
  • 反向代理
  • 网络交换代理

1.4 代理是如何进行认证的

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

  • 对受限内容的请求到达一台代理服务器时,代理服务器可以返回一个要求使用访问证 书的 407 Proxy Authorization Required 状态码,以及一个用于描述怎样提供这些证书 的 Proxy-Authenticate 首部字段
  • 客户端收到 407 响应时,会尝试着从本地数据库中,或者通过提示用户来搜集所需要 的证书。
  • 只要获得了证书,客户端就会重新发送请求,在 Proxy-Authorization 首部字段中 提供所要求的证书。
  • 如果证书有效,代理就会将原始请求沿着传输链路向下传送(参见图 6-25c);否 则,就发送另一条 407 应答。

其实说白了代理可以实现认证授权机制,然后对我们对内容的访问进行相对应的控制,如下图:

21.jpg

若传输链路中有多个代理,且每个代理都要进行认证时,代理认证通常无法很好地工作。 人们建议,应该对 HTTP 进行升级,将认证证书与代理链中特定的路标联系起来,但这些 升级措施并没有得到广泛实现。

代理所要注意的问题

代理服务器可能无法理解所有经其传输的首部字段。

有些首部可能比代理自身还要新;其 他首部可能是特定应用程序独有的定制首部。代理必须对不认识的首部字段进行转发,而 且必须维持同名首部字段的相对顺序。

关于 HTTP 代理,我就先说这么多,剩下的内容还有待大家一起进行发掘。

文章参考:

《图解 HTTP》

《HTTP 权威指南》

个人强烈推荐《图解 HTTP》这本书,作者是日本人,图解确实很清晰很帮助人理解。

我是懿,一个正在被打击却努力前进的码农。

相关实践学习
消息队列+Serverless+Tablestore:实现高弹性的电商订单系统
基于消息队列以及函数计算,快速部署一个高弹性的商品订单系统,能够应对抢购场景下的高并发情况。
云安全基础课 - 访问控制概述
课程大纲 课程目标和内容介绍视频时长 访问控制概述视频时长 身份标识和认证技术视频时长 授权机制视频时长 访问控制的常见攻击视频时长
相关文章
|
14天前
|
Java 编译器 程序员
小心踩坑!s1 = s1 + 1 和 s1 += 1 的区别你真的懂吗?
小米,一位29岁的技术爱好者,通过一个Java面试题解析了隐式类型转换与赋值运算符特性的知识点。题目涉及`short s1 = 1; s1 = s1 + 1;`与`short s1 = 1; s1 += 1;`的区别,前者因类型不匹配报错,后者则因`+=`运算符的隐式类型转换功能而成功编译。小米通过故事化讲解,深入浅出地解释了Java中数据类型转换的规则及其背后的逻辑,帮助读者更好地理解和记忆这一知识点。
17 3
|
6月前
|
设计模式 黑灰产治理
三分钟带您搞懂代理模式
三分钟带您搞懂代理模式
太可惜了,四面字节跳动,我的offer竟被一道“算法题”给拦截了
算法,在行业里越来越重要,一线互联网公司也非常注重算法,所以在面试时基本上都有涉及到。字节跳动是出了名的爱问算法题,几乎每一面都要问到算法。实际上,现在很多公司都会问算法,尤其是对于应届生来说,要求更高,所以想要进大厂,搞定算法是很重要的。
|
存储 应用服务中间件 nginx
奇安信C++后端面经,问的很奇怪!(下)
奇安信C++后端面经,问的很奇怪!
|
网络协议 安全 Java
奇安信C++后端面经,问的很奇怪!(上)
奇安信C++后端面经,问的很奇怪!
|
存储 Web App开发 缓存
一个简单的弱网差点搞死了组内前端
最近上线了一个 React Native 外访项目,用户为公司外访员,外访员根据公司业务去实地考察,收集记录一些资料,考察记录资料的过程全部用公司配的专用手机,里面安装了当前外访项目APP。目前项目试运行阶段,还没有正式交付。APP项目上线后,在用户真实使用中遇到一些各种各样的问题,有些问题处理时也比较棘手(如弱网情况),这次主要复盘APP在实际场景中的弱网(或网络不稳定)相关的问题。
912 0
一个简单的弱网差点搞死了组内前端
|
设计模式 缓存 算法
花了30天才肝出来,史上最全面Java设计模式总结,看完再也不会忘
Design Patterns: Elements of Reusable Object-Oriented Software(以下简称《设计模式》),一书由Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides合著(Addison-Wesley,1995)。这四位作者常被称为“四人组(Gang of Four)”,而这本书也就被称为“四人组(或 GoF)”书。他们首次给我们总结出一套软件开发可以反复使用的经验,帮助我们提高代码的可重用性、系统的可维护性等,解决软件开发中的复杂问题。
167 0
|
SQL 前端开发 JavaScript
前端VS后端:这个锅你背不背!
前端VS后端:这个锅你背不背!
64 0
|
存储 Web App开发 程序员
程序猿的血泪史:一定要有数据备份的思想,不然死都不知道咋死的!!!
程序猿的血泪史:一定要有数据备份的思想,不然死都不知道咋死的!!!
207 0
|
存储 NoSQL 网络安全
面试问Redis集群,被虐的不行了......(2)
面试问Redis集群,被虐的不行了......
187 2
面试问Redis集群,被虐的不行了......(2)