代理
HTTP 代理是代替用户处理事务的实体。代理会接收来自客户端的请求,再向目标服务器发起请求,等待服务器返回结果后,在返回结果给客户端之前可以对目标服务器返回的结果经过加工再返回给客户端,也可以不加工,直接返回给客户端。
这个过程就可以对目标服务器隐藏本地的 IP 地址。假设有某个服务要求必须是在美国的 IP 地址才允许访问,但是自己用的电脑在别的地方,如果要使用此服务,可以购买一个美国地区的 VPS,在 VPS 上面搭建一个代理服务器,自己的电脑通过 VPS 上的代理服务器进行请求,目标服务器获取到的 IP 地址就是 VPS 的 IP 地址,于是允许使用其服务,这样通过代理服务器的转发,我们就可以达到隐藏了自己的 IP 以及访问类似于限制 IP 的服务了。
缓存
这里的缓存指的是公有缓存。公有缓存又被称为缓存代理服务器或代理缓存,当某个页面的访问量很大的时候,缓存代理服务器就可以将其缓存起来,当客户端请求这个页面时,缓存代理服务器可以从本地直接返回该页面的数据到客户端,这样可以减少目标服务器的压力。
缓存代理服务器也是代理服务器的一种,当缓存代理服务器本地没有客户端请求的资源时,会向目标服务器发起请求,目标服务器返回结果之后,保存一份在本地,同时把返回的结果返回到客户端。当有客户端再次对相同的资源发起请求时,如果这个资源还没有过期,则不会向目标服务器请求获取资源,直接返回本地的资源给客户端。真实的处理缓存的机制会复杂一点,这里不详述了。
网关
网关的主要功能是进行协议转换。
客户端向网关发起一条 HTTPS 请求,网关对这条请求进行解密后,对目标服务器的发起 HTTP 请求,获取到数据之后再通过 HTTPS 加密后返回到客户端。
或者网关对 FTP 服务器发起指令,把获取到的数据通过 HTTP 返回给客户端。
网关通常被用在作为反向代理服务器,客户端通过 HTTPS 请求网关,网关通过 HTTP 请求内网的后端服务器,通常这时候还会加一个负载均衡功能,把接收到的 HTTPS 请求根据后端服务器的负载压力决定把请求发送给某一个压力较小的服务器进行处理。这样就可以对客户端隐藏了后端的服务器集群。
隧道
隧道是另一种网关,当隧道网关接收到请求时,会向目标服务器请求 TCP 连接,并向客户端发送连接建立成功的消息,此时客户端就可以通过隧道与目标服务器进行 TCP 通信,而隧道对于客户端和服务器之间通信的信息是不知情的,只进行盲转发,这一点是与网关最大的不同。
VPN
VPN 是虚拟私有网络(Virtual Private Networks)的简称,VPN 会劫持客户端的所有向外的流量,把流量通过加密的方式导向已配置好的 VPN 服务器,由 VPN 服务器与目标服务器进行通信,把结果通过加密的方式返回到客户端。
在客户端和 VPN 之间的通信是加密的,所以可以保证不被中间人窃听,因为即使被中间人截获了,中间人也不能对数据进行正确的解密,可以保证数据的私密性。