8.1 网关

1. 网关

  • 网关(gateway):是一种特殊的服务器,作为其他服务器的中间实体使用。客户端并不知道与其对话的是网关。通常用作协议网关和资源网关。
  • 网关是资源和客户端之间的粘合剂。客户端可以(通过 HTTP 或其他已定义的接口)请求网关来处理某条请求,网关可以提供一条响应。网关可以向数据库发送查询语句,或者生成动态的内容,就像一个门一样:进去一条请求,出来一个响应。
  • 下图显示的是一种资源网关。在这里,Joe 的五金商店服务器就是作为连接数据库内容的网关使用的——注意,客户端只是在通过 HTTP 请求资源,而 Joe 的五金商店的服务器在与网关进行交互以获取资源。
    这里写图片描述
  • 有些网关会自动将 HTTP 流量转换为其他协议,这样 HTTP 客户端无需了解其他协议,就可以与其他应用程序进行交互了:
    这里写图片描述

客户端和服务器端网关

  • Web 网关在一侧使用 HTTP 协议,在另一侧使用另一种协议。(注意:在不同 HTTP 版本之间进行转换的 Web 代理就像网关一样,它们会执行复杂的逻辑,以便在各个端点之间进行沟通。但因为它们在两侧使用的都是 HTTP,所以从技术上来讲,它们还是代理)
  • 用一个斜杠来分隔客户端和服务器端协议:< 客户端协议 >/< 服务器端协议 >
  • 用术语客户端网关和服务器端网关来说明对话是在网关的哪一侧进行的:
    • 客户端网关(client-side gateway):通过其他协议与客户端对话,通过 HTTP 与服务器通信( */HTTP )。
    • 服务器端网关(server-side gateway):通过 HTTP 与客户端对话,通过其他协议与服务器通信( HTTP/* )。
  • 将 HTTP 流量导向网关时所使用的方式与将流量导向代理的方式相同。最常见的方式是,显式地配置浏览器使用网关,对流量进行透明的拦截,或者将网关配置为替代者(反向代理)。

2. 协议网关

1. HTTP/* :服务器端网关

  • 请求流入原始服务器时,服务器端网关会将客户端 HTTP 请求转换为其他协议:
    这里写图片描述
  • 上图中,网关收到了一条对 FTP 资源的 HTTP 请求:ftp://ftp.irs.gov/pub/00-index.txt ,网关会打开一条到原始服务器 FTP 端口(端口 21)的 FTP 连接,通过 FTP 协议获取对象。网关会做下列工作:
    • 发送 USER 和 P ASS 命令登录到服务器上去;
    • 发布 CWD 命令,转移到服务器上合适的目录中去;
    • 将下载类型设置为 ASCII;
    • 用 MDTM 获取文档的最后修改时间;
    • 用 PASV 告诉服务器将有被动数据获取请求到达;
    • 用 RETR 请求进行对象获取;
    • 打开到 FTP 服务器的数据连接,服务器端口由控制信道返回;一旦数据信道打开了,就将对象内容回送给网关。
    • 网关获取内容后,将对象放在一条HTTP响应中会送给客户端。

2. HTTP/HTTPS :服务器端安全网关

  • 一个组织可以通过网关对所有的输入 Web 请求加密,以提供额外的隐私和安全性保护。客户端可以用普通的 HTTP 浏览 Web 内容,但网关会自动加密用户的对话。但是需要原始服务器进行解密。
    这里写图片描述

3. HTTPS/HTTP :客户端安全加速器网关

  • HTTPS/HTTP 网关位于 Web 服务器之前,通常作为不可见的拦截网关或反向代理使用。它们接收安全的 HTTPS 流量,对安全流量进行解密,并向 Web 服务器发送普通的 HTTP 请求。
  • 这些网关中通常都包含专用的解密硬件,以比原始服务器有效得多的方式来解密安全流量,以减轻原始服务器的负荷。
  • 这些网关在网关和原始服务器之间发送的是未加密的流量,所以,要谨慎使用,确保网关和原始服务器之间的网络是安全的。
    这里写图片描述

3. 资源网关

  • 最常见的网关,应用程序服务器,会将目标服务器与网关结合在一个服务器中实现。
  • 应用程序服务器是服务器端网关,与客户端通过 HTTP 进行通信,并与服务器端的应用程序相连。
    这里写图片描述
  • 客户端请求需要使用网关的资源时,服务器会将应用程序所需数据传送给它们,让应用程序处理请求。处理完毕后应用程序向服务器返回一条响应或响应数据,服务器将其转发给客户端。
    这个简单的协议(输入请求,转交,响应)就是最古老,也最常用的服务器扩展接口 CGI (通用网关接口 Common Gateway Interface)的本质。
    这里写图片描述

1. CGI

  • CGI(通用网关接口 Common Gateway Interface)是第一个,可能仍然是得到最广泛使用的服务器扩展。在 Web 上广泛用于动态 HTML、信用卡处理以及数据库查询等任务。几乎可以用任意语言来实现。几乎所有的 HTTP 服务器都支持它。
  • CGI 的处理对用户来说是不可见的。从客户端的角度来看,就像发起一个普通请求一样。它完全不清楚服务器和 CGI 应用程序之间的转接过程。URL 中出现字符 cgi 和可能出现的“?”是客户端发现使用了 CGI 应用程序的唯一线索。
  • 优点:它在服务器和众多的资源类型之间提供了一种简单的、函数形式的粘合方式,用来处理各种需要的转换。这个接口还能很好地保护服务器,防止一些糟糕的扩展对它造成的破坏(如果这些扩展直接与服务器相连,造成的错误可能会引发服务器崩溃)。
  • 缺点:这种分离会造成性能的耗费。为每条 CGI 请求引发一个新进程的开销是很高的,会限制那些使用 CGI 的服务器的性能,并且会加重服务端机器资源的负担。
  • 快速 CGI:为了解决上述问题开发的新型CGI,这个接口模拟了 CGI,但它是作为持久守护进程运行的,消除了为每个请求建立或拆除新进程所带来的性能损耗。

2. 服务器扩展API

  • CGI 协议为外部翻译器与现有的 HTTP 服务器提供了一种简洁的接口方式,但如果想要改变服务器自身的行为,或者只是想尽可能地提升能从服务器上获得的性能呢?
  • 服务器开发者为这两种需求提供了几种服务器扩展 API,为 Web 开发者提供了强大的接口,以便他们将自己的模块与 HTTP 服务器直接相连。
  • 扩展 API 允许程序员将自己的代码嫁接到服务器上,或者用自己的代码将服务器的一个组件完整地替 换出来。
  • 大多数流行的服务器都会为开发者提供一个或多个扩展 API。这些扩展通常都会绑定在服务器自身的结构上,所以,大多数都是某种服务器类型特有的。

4. 应用程序接口和Web服务

  • HTTP 可以作为一种连接应用程序的基础软件来使用。
  • 在将应用程序连接起来的过程中,一个更为棘手的问题是在两个应用程序之间进行协议接口的协商,以便这些应用程序可以进行数据的交换——这通常都是针对具体应用程序的个案进行的。
  • 应用程序之间要配合工作,所要交互的信息比 HTTP 首部所能表达的信息要复杂得多。将在以后的章节介绍。
  • 因特网委员会开发了一组允许 Web 应用程序之间相互通信的标准和协议。Web 服务的引入并不新鲜,但这是应用程序共享信息的一种新机制。Web 服务是构建在标准的 Web 技术(比如 HTTP)之上的。
  • Web 服务可以用 XML 通过 SOAP 来交换信息。
  • XML(Extensible Markup Language,扩展标记语言)提供了一种创建数据对象的定制信息,并对其进行解释的方法。
  • SOAP(Simple Object Access Protocol,简单对象访问协议)是向 HTTP 报文中添加 XML 信息的标准方式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值