代理:代理服务器接受客户端的请求,并且转发给其它服务器。
网关:与代理服务器不同的是,网关服务器会将 HTTP 转化为其它协议进行通信,从而请求其它非 HTTP 服务器的服务。
隧道:使用 SSL 等加密手段,在客户端和服务器之间建立一条安全的通信线路

代理

代理服务器的基本行为就是:接收客户端发送的请求后转发给其他服务器,代理不改变URI,会直接发送给前方持有目标资源的服务器
持有源实体的服务器被称为源服务器,从源服务器返回的响应经过代理服务器再传给客户端
在进行HTTP通信时,可以级联多台代理服务器,请求和响应的转发会经过数台类似锁链一样连接起来的代理服务器;转发时需要追加via首部信息

代理服务器既是服务器又是客户端。客户端向代理发送请求报文,代理服务器必须向服务器一样,正确的处理请求和连接,然后返回响应。同时,代理自身要向服务器发送请求,这样,其行为必须像正确的客户端一样,要发送请求并接收响应。

特点:

  1. 客户端不知道真正的服务器是谁,服务器也不知道客户端是什么样的
  2. 客户端同代理服务器,代理服务器同服务器,这两者之间使用的通讯协议是一样的
  3. 代理服务器会对接收的请求进行解析,重新封装后再发送给服务器;在服务器响应后,对响应进行解析,重新封装后再发送给客户端。

使用代理服务器的原因:

  1. 利用缓存技术减少网络带宽的流量
  2. 组织内部针对特定网站的访问控制,以获取访问日志为主要目的

代理的分类:

  1. 缓存代理:会预先将资源的副本(缓存)保存在代理服务器上
  2. 透明代理:不对报文做任何加工的代理类型称为透明代理;对报文进行加工的代理称为非透明代理


    网关

    转发其他服务器通信数据的服务器,接收从客户端发送来的请求时,它就像自己拥有资源的源服务器一样对请求进行处理。有时客户端可能都不会察觉,自己的通信目标是一个网关。
    网关能使通信线路上的服务器提供非HTTP协议服务
    与代理十分相似,而网关能使通信线路上的服务器提供非HTTP协议服务。
    利用网关能够提高通信的安全性,因为可以在客户端与网关之间通信线路上加密以确保连接安全。

在传统TCP/IP术语中,网络设备只分成两种,一种为网关(gateway),另一种为主机(host)。网关能在网络间转递数据包,但主机不能转送数据包。
在主机(又称终端系统)中,数据包需经过TCP/IP四层协议处理,但是在网关(又称中介系统,)只需要到达网际层,决定路径之后就可以转送。在当时,网关与路由器还没有区别。

在现代网络术语中,网关(gateway)与路由器(router)的定义不同。
网关(gateway)能在不同协议间移动数据,而路由器(router)是在不同网络间移动数据,相当于传统所说的IP网关(IP gateway)。

网关服务器的特点:
客户端不知道真正的服务器是谁,服务器也不知道客户端是什么样的
客户端同代理服务器,代理服务器同服务器,这两者之间使用的通讯协议或者协议的版本是不一样的
代理服务器会对接收的请求进行解析,转换协议后再发送给服务器;在服务器响应后,对响应进行解析,转换协议后再发送给客户端。

隧道

可按要求建立起一条与其他服务器的通信线路,届时使用SSL等加密手段进行通信

目的:确保客户端与服务端进行安全的通信

隧道本身不会解析HTTP请求,请求会保持原样中转给之后的服务器,隧道会在通信双方断开连接时结束。
[

](https://blog.csdn.net/sjailjq/article/details/82287345)
隧道的特点:

  1. 该协议是为承载协议自身以外的流量而编写的协议
  2. 允许数据从一个网络移动到另一个网络
  3. 只关心流量的传输,不对承载的流量进行解析

Summary

代理与网关的对比

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

隧道与网关的对比

简单来说,如果使用网关,服务器与客户端是相互不知道的,因为数据是网关转发的;但是如果使用隧道,服务器与客户端是直接通信的。
我们预设如下场景:
在一个网络中,防火墙禁止端口443上的连接,因此网络中的用户无法访问使用HTTPS协议的网站。但是,防火墙允许端口80上的连接。网络中的用户想要访问该服务器有两种方法:一种是通过网关,一种是通过HTTP隧道。
(1)使用网关
该种方式由网关(而不是客户端)初始化远端HTTPS服务器的SSL会话,然后代表客户端执行HTTPS事务。响应会由网关接收并解密,然后通过(不安全)的HTTP传送给客户端。
该种方式有几个缺点:
客户端到网关之间的连接是普通的非安全HTTP;
尽管网关是已认证的主体,但客户端无法对远端服务器执行SSL客户端认证;
网关要支持完整的SSL实现。
(2)使用隧道
该种方式SSL流量被封装到一条HTTP报文中,并通过HTTP端口80上的连接发送,最后被解封为普通的SSL流量。
对于SSL隧道来说,无需在代理中实现SSL。SSL会话建立在产生请求的客户端和目的(安全的)Web服务器之间,中间的代理服务器只是将加密数据经过隧道传输,并不会在安全事务中扮演其他的角色。
[

](https://blog.csdn.net/sjailjq/article/details/82287345)