网关

网关连接的是多个使用不同协议的端点,扮演着协议转换器的角色。

网关

web网关在一侧使用http协议,在另一侧使用另一种协议。可以使用<客户端协议>/<服务器端协议>来描述网关。

  • 服务器端网关:通过http与客户端通信,服务端使用其他协议。
  • 客户端网关:通过其他协议与客户端通信,服务器端采用http协议


常见网关类型

  • 服务器端Web网关:HTTP/*

    HTTP_FTP网关

  • 服务器端安全网关:HTTP/HTTPS
  • 客户端安全加速器网关:HTTPS/HTTP
  • 应用程序服务器
    应用程序服务器是服务器端网关,与客户端通过HTTP通信,并与服务器端的应用程序相连。

隧道Tunnel

Web隧道允许用户通过HTTP连接发送非HTTP流量,这样就可以在HTTP上捎带其他协议数据了。 Web隧道是用HTTP的CONNECT方法(该方法不在HTTP/1.1的核心规范中)建立起来的。

下图为CONNECT方法如何建立一条到达网关的SSL隧道

  1. (a)客户端发送CONNECT请求给隧道网关
  2. (b)(c)隧道网关建立与服务器的TCP连接
  3. (d)隧道网关发送200响应码给客户端,这个响应并不需要包含Content-Type首部 至此,隧道就连接成功了,客户端通过HTTP隧道发送的所有数据都会被隧道网关直接转发给它建立的TCP连接。

SSL隧道

SSL隧道

Web隧道可以通过防火墙来传输加密的SSL流量。很多组织都会将所有流量通过分组过滤路由器和代理服务器传输,以提升安全性。但有些协议(比如加密SSL)信息是加密的,无法通过传统的代理服务器转发。隧道会通过一条HTTP连接来传输SSL流量,以穿过端口80的防火墙。

隧道使用http连接传输非http流量

隧道可以将非HTTP流量传过端口过滤防火墙,这项特性可能会被滥用,使得恶意协议通过HTTP隧道流入组织内部。为了防止隧道的滥用,可以

  1. 在隧道网关上,对客户端使用隧道的权利进行认证
  2. 网关应该只为特定的端口打开隧道

当然这只能一定程度上阻止隧道的滥用。

参考

  • 《HTTP权威指南》