正向代理与反向代理的工作原理

正向代理与反向代理的工作原理

摘要

随着Internet技术的迅速发展,越来越多的计算机连入了Internet。很多公司也将自己公司的局域网接入了Internet。如何快速地访问Internet站点,提高网络的安全性,成为了当今的热门话题。在这种情况下,代理服务器便应运而生了。

一、代理服务器

代理服务器(Proxy Server)是个人网络和Internet服务商之间的中间代理机构,它负责转发合法的网络信息,对转发进行控制和登记。代理服务器作为连接Internet(广域网)与Intranet(局域网)的桥梁,在实际应用中发挥着极其重要的作用,它可用于多个目的,最基本的功能是连接,此外还包括安全性,缓存,内容过滤,访问控制管理等功能。

代理服务器能够让多台没有IP地址的电脑使用其代理功能高速、安全地访问互联网资源。当代理服务器客户端发出一个对外的资源访问请求,该请求先被代理服务器识别并由代理服务器代为向外请求资源。由于一般代理服务器拥有较大的带宽,较高的性能,并且能够智能地缓存已浏览或未浏览的网站内容,因此,在一定情况下,客户端通过代理服务器能更快速地访问网络资源。代理服务器应用的常见例子:拥有上百台电脑的局域网通过一台能够访问外部网络资源的代理服务器而也能访问外部互联网。

1.1 代理服务器的功能

  • 充当局域网与外部网络的连接出口:充当局域网与外部网络的连接出口,同时将内部网络结构的状态对外屏蔽起来,使外部不能直接访问内部网络。从这一点上说,代理服务器就充当了网关。
  • 作为防火墙:代理服务器.可以保护局域网的安全,起防火墙的作用。通过设置防火墙,为公司内部的网络提供安全边界,防止外界的侵入。
  • 网址过滤和访问权限限制:代理服务器可以设置IP地址过滤,对外界或内部的Internet地址进行过滤,限制不同用户的访问权限。例如代理服务器可以用来限制封锁IP地址,禁止用户对某些网页进行浏览。
  • 提高访问速度:代理服务器将远程服务器提供的数据保存在自己的硬盘上,如果有许多用户同时使用这一个代理服务器,他们对Internet站点所有的访问都会经由这台代理服务器来实现。当有人访问过某一站点后,所访问站点的内容便会被保存在代理服务器的硬盘上,如果下一次有人再要访问这个站点时,这些内容便会直接从代理服务器磁盘中取得,而不必再次连接到远程服务器上去取。因此,它可以节约带宽、提高访问速度。

1.2 正向代理与反向代理

图片

1.2.1 正向代理(forward proxy)

正向代理是一种位于客户端与目标服务器之间的中间服务器(即代理服务器)。当客户端无法直接访问目标服务器时,可以通过正向代理来实现访问:

  1. 客户端先向代理服务器发出请求,并告知目标地址;
  2. 代理服务器再代表客户端向目标服务器发送请求;
  3. 然后把目标服务器的响应内容返回给客户端。

生活中常见的“翻墙”行为,其实就是利用正向代理来访问一些在本地网络中受限制的网站。

图片

通俗类比:租房中的中介

正向代理的过程可以类比为租房中的“中介”:

  • 租客(客户端):想要租房(访问目标网站);
  • 房东(目标服务器):拥有房子(提供资源);
  • 中介(代理服务器):负责联系房东并传递信息。

有些房东为了省事,只把房源和钥匙交给中介,租客根本无法直接联系房东。此时,如果租客想看房,只能通过中介来传话,甚至中介可能直接冒充租客与房东交涉。

在这个过程中,房东并不知道真实的租客是谁,只知道是中介在联系他。正如目标服务器不知道真实的客户端,只看见了代理服务器。

正向代理的常见用途

  1. 突破访问限制
    比如在国内无法直接访问某些国外网站时,可以通过代理服务器中转请求,实现访问。
    就像租客通过中介联系上了原本联系不到的房东。
  2. 提高访问速度
    一些代理服务器具有缓存功能,会保存常见请求的响应结果。如果其他用户请求相同内容,可以直接从缓存返回,速度更快。
    就像中介保存了很多房源资料和钥匙,可以快速安排看房。
  3. 隐藏客户端真实IP
    代理服务器在转发请求时,使用的是它自己的IP地址,从而保护了客户端的真实身份,防止被追踪或攻击。
    就像房东看不到真正的租客是谁,只知道是中介。
    (**PS:但中介知道你是谁,可能会打更多电话来推销房子…**)

1.2.2反向代理(reverse proxy)

反向代理指的是:代理服务器接收来自 Internet 的客户端请求,然后将这些请求转发给内部网络中的真实服务器。服务器处理完请求后,再将结果返回给代理服务器,由代理服务器转发给客户端。

从客户端的角度看,它只与代理服务器打交道,完全不知道后端有哪些真实服务器,也不知道自己访问的是代理。这种隐藏真实服务器身份、对外统一出口的行为,就是“反向代理”。

图片

类比:房东找二房东代租

在租房的过程中,有时租客会直接联系到房东,完成租房流程,这就好比我们直接访问某个国内网站,没有使用任何代理。

但也有一种情况是:你以为自己在跟房东沟通,实际上对接的是房东的亲戚、朋友,甚至是“二房东”。你并不知道他不是房东本人,但他确实代表房东完成了看房、签约、交房等全过程。这类“帮房东处理租房事务”的角色,其实就类似于反向代理服务器。

在 Web 系统中,一个常见的反向代理场景是使用负载均衡服务器:

  • 客户端(租客)向负载均衡服务器(二房东)发送请求;
  • 负载均衡服务器(二房东)根据后端真实服务器(房东)的实际情况,决定把请求转发给哪一个;
  • 然后将处理结果返回给客户端(租客)。

所以说,反向代理就是代理服务器代表真实的目标服务器,去与客户端进行通信。客户端并不知道自己访问的是代理,也不知道目标服务器的具体信息。

反向代理的常见用途

  1. 隐藏服务器真实 IP
    反向代理可以隔离真实服务器,隐藏其 IP 和位置,保护其安全。
    就像租客永远见不到真正的房东,只接触到“二房东”。
  2. 负载均衡
    反向代理服务器可以将大量客户端请求,按策略分发给多个后端服务器,以平衡系统压力。
    比如二房东发现房东本人太忙,于是安排房东的妻子或朋友来带看房。
  3. 提高访问速度(缓存)
    反向代理可缓存静态内容或热点数据,减少重复请求对真实服务器的压力,提高访问速度。
    好比二房东自己保留了房屋钥匙和资料,可以迅速安排看房。
  4. 安全防护
    反向代理能作为应用层防火墙,阻挡恶意请求(如 DDoS 攻击)、过滤恶意软件,并统一管理 SSL 加密、身份认证等。
    就像二房东帮房东“筛人”,只有符合条件的人才能最终租房,保障房东的利益。

1.2.3 正向代理和反向代理的区别

虽然正向代理服务器和反向代理服务器所处的位置都是客户端和真实服务器之间,所做的事情也都是把客户端的请求转发给服务器,再把服务器的响应转发给客户端,但是二者之间还是有一定的差异的。

正向代理其实是客户端的代理,帮助客户端访问其无法访问的服务器资源。反向代理则是服务器的代理,帮助服务器做负载均衡,安全防护等。

正向代理一般是客户端架设的,比如在自己的机器上安装一个代理软件。而反向代理一般是服务器架设的,比如在自己的机器集群中部署一个反向代理服务器。

正向代理中,服务器不知道真正的客户端到底是谁,以为访问自己的就是真实的客户端。而在反向代理中,客户端不知道真正的服务器是谁,以为自己访问的就是真实的服务器。

正向代理和反向代理的作用和目的不同。正向代理主要是用来解决访问限制问题。而反向代理则是提供负载均衡、安全防护等作用。二者均能提高访问速度。

推荐阅读:

6.CPU三级缓存(L1/L2/L3)工作原理

5.CPU寻址工作原理

4.CPU流水线技术原理

3.CPU总线结构的工作原理

2.CPU指令的执行过程

1.CPU的工作原理

https://mp.weixin.qq.com/s/qFWKJZI6JZPCEdy4Lz5ngQ?scene=1