网关的分类

========================摘自《HTTP权威指南》=============================

1、  HTTP/*:服务器端Web网关

请求流入原始服务器时,服务器端Web网关会将客户度的HTTP请求转换成其他协议(见图8-5)

在图8-5中,网关收到了一条对FTP资源的HTTP请求:

ftp://ftp.irs.gov/pub/00-index.txt

网关会打开一条道原始服务器FTP端口(端口21)的FTP连接,通过FTP协议获取对象。网关会做下列事情:

(1)、发送USER和PASS命令登录到服务器上去;

(2)、发布CWD命令,转移到服务器上合适的目录中去;

(3)、将下载类型设置为ASCII;

(4)、用MDTM获取文档的最后修改时间;

(5)、用PASV告诉服务器将有被动数据获取请求到达;

(6)、用RETR请求进行对象获取;

(7)、打开到FTP服务器的数据连接,服务器端口由控制信道返回;一旦数据通信打开了就将对象内容回送给网关

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

一个组织可以通过网关对所有的输入Web请求加密,以提供额外的隐私和安全性保护。客户端可以用普通的HTTP浏览Web内容,但网关会自动加密用户的对话(参见图8-6)

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

将HTTPS/HTTP网关作为安全加速器使用的情况是越来越多了。这些HTTPS/HTTP网关位于Web服务器之前,通常作为不可见的拦截网关或反向代理使用。它们接收安全的HTTPS流量,对安全流量进行解密,并向Web服务器发送普通的http请求(见图8-7)

这些网关中通常包含专用的解密硬件,以比原始服务器有效得多的方式来解密安全流量,以减轻原始服务器的负荷。这些网关在网关和原始服务器之间发送的是未加密的流量,所以,要谨慎使用,确保网关和原始服务器之间的网络是安全的。

4、资源网关

前面我们一直说的是通过网络连接客户端和服务器的网关。但最常见的网关,应用程序服务器会将目标服务器与网关结合在一个服务器中实现。应用程序服务器是服务器端网关,与客户端通过HTTP进行通信,并与服务器端的应用程序相连(参见图8-8)

在图8-8中,两个客户端是通过HTTP连接到应用程序服务器的。但应用程序服务器并没有回送文件,而是将请求通过一个网关应用编程接口(Application Programming Interface)发送给运行在服务器上的应用程序。

(1)、收到客户端A的请求,根据URL将其通过API发送给一个数码摄像机应用程序。将得到的图片绑定到一条HTTP响应报文中,再回送给客户端,在客户端的浏览器中显示。

(2)、客户端B的URL请求的是一个电子商务应用程序。客户端B的请求是通过服务器网关API发送给电子商务软件的,结果会被回送给浏览器。电子商务软件与客户端进行交互,应道用户通过一系列HTML页面来完成购物的。

第一个流行的应用程序网关API就是通用网关接口(Common Gateway Interface,CGI)。CGI是一个标准接口集,Web服务器可以用它来装载程序以响应对特定URL的HTTP请求,并收集程序的输出数据,将其放在HTTP响应中回送。商业的web服务器提供了一些更复杂的接口,以便将Web服务器连接到应用程序上。

请求需要使用网关的资源时,服务器会请辅助应用程序来处理请求。服务器会将辅助应用程序所需的数据传送给它。通常就是整条请求,或者用户想在数据库上运行的请求(来自URL的请求字符串)之类的东西。

然后它会向服务器返回一条响应或响应数据,服务器会将其转发给客户端。服务器和网关是相互独立的应用程序,因此,它们的责任是分得很清楚的。图8-9显示了服务器与网关应用程序之间交互的基本运行机制。

(1)、CGI

CGI是第一个得到最广泛应用的服务器扩展。在Web上广泛用于动态HTML、信用卡处理以及数据库查询等任务。

CGI应用程序是独立于服务器的,所以,几乎可以用任意语言来实现。CGI很简单,几乎所有的HTTP服务器都支持它。

CGI的处理对用户来说是不可见的。从客户端的角度来看,就像发起一个普通请求一样。它完全不清楚服务器和CGI应用程序之间的转接过程。URL中出现字符CGI和可能出现的“?”是客户端发现使用了CGI应用程序的唯一线索。

(2)、服务器扩展API

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

HTTP之网关的分类的更多相关文章

  1. 网关 php-cgi fastcgi phpfpm

    本文同时发表在https://github.com/zhangyachen/zhangyachen.github.io/issues/88 关于网关的理解,一句话就是:作为一种翻译器,抽象出了一种能够 ...

  2. 微服务与网关技术(SIA-GateWay)

    一.背景 软件架构,总是在不断的演进中... 把时间退回到二十年之前,当时企业级领域研发主要推崇的还是C/S模式,PB.Delphi这样的开发软件是企业应用开发的主流.随着时间的推移,基于浏览器的B/ ...

  3. 微服务技术栈:API网关中心,落地实现方案

    本文源码:GitHub·点这里 || GitEE·点这里 一.服务网关简介 1.外观模式 客户端与各个业务子系统的通信必须通过一个统一的外观对象进行,外观模式提供一个高层次的接口,使得子系统更易于使用 ...

  4. 合适的LoRa网关应该怎么选择

    LoRa网关是什么 LoRa网关有时也被称之为lora基站或者lora集中器,它在lora星形组网中处于核心位置,是数据终端和服务器之间的一个信息桥梁.LoRa网关使用的是不同扩频因子,因为不同的扩频 ...

  5. 物联网通讯协议:MQTT,CoAP,NB-IOT,RFID,BLUETOOTH,NFC

    一.按网络四层协议分类: NB-IoT,LORA,WIFI,蓝牙,zigbee,4G都是物理层的,这几个都需要芯片模组支持(硬件支持) 而MQTT,COAP,HTTP都是应用层协议,这些需要开发服务器 ...

  6. 微服务入门二:SpringCloud(版本Hoxton SR6)

    一.什么是SpringCloud 1.官方定义 1)官方定义:springcloud为开发人员提供了在分布式系统中快速构建一些通用模式的工具(例如配置管理.服务发现.断路器.智能路由.微代理.控制总线 ...

  7. IP、子网的详述 ——IP分类、网关地址,子网掩码、子网作用(转)

    IP地址    在Internet上连接的所有计算机,从大型机到微型计算机都是以独立的身份出现,我们称它为主机.为了实现各主机间的通信,每台主机都必须有一个唯一的网络地址.就好像每一个住宅都有唯一的门 ...

  8. MVB设备分类

    连接在MVB上的设备按性能可以分为5类 MVB上的设备应具备下面六个性能中的一个或多个. MVB设备的性能 性能 说明 分类 设备状态 设备被轮询时能够发送出其设备状态 1,2,3,4,5 过程数据 ...

  9. HTTP状态码分类说明

    状态码分类 HTTP状态码被分为五大类, 目前我们使用的HTTP协议版本是1.1, 支持以下的状态码.随着协议的发展,HTTP规范中会定义更多的状态码. 小技巧:  假如你看到一个状态码518, 你并 ...

随机推荐

  1. Asp.Net SignalR 使用记录

    工作上遇到一个推送消息的功能的实现.本着面向百度编程的思想.网上百度了一大堆.主要的实现方式是原生的WebSocket,和SignalR,再次写一个关于Asp.Net SignalR 的demo 这里 ...

  2. Java中级知识归纳(二)

    六.Java中Collection和Collections的区别? java.util.Collection是一个集合接口,它提供了对集合对象进行基本操作的通用接口方法. java.util.Coll ...

  3. Python【day 12】生成器和推导式

    一.生成器和生成器函数1.生成器和生成器函数的概念 1.生成器的本质是迭代器 2.函数中包含yield,就是生成器函数 2.生成器函数的写法 def func(): a =10 yield 20 ge ...

  4. vue中使用axios进行ajax请求数据(跨域配置)

    npm安装axios npm install axios --save 引入axios import axios from 'axios' 使用axios mounted () { this.getH ...

  5. CSS3动画实践——简易牛顿摆

    最近在练习CSS3的关键帧动画(keyframes),于是做了一个简单的牛顿摆(听名字可能陌生,但你一定见过它): 先上代码(老版本IE可能存在兼容性问题): <!DOCTYPE html> ...

  6. sess文件编译输出css的四种方式以及使用

    sess文件输出css有下面四种方式: :nested(嵌套) :compact(紧凑) :expanded(展开) :compressed(压缩) 如何使用: sass --watch style. ...

  7. SAP MM 同一个序列号可以被多次用在交货单发货过账?

    SAP MM 同一个序列号可以被多次用在交货单发货过账? 如下公司间转储订单,从公司代码CSAS转入公司代码HKCS, 物料有启用序列号管理. 转储数量为5 PC.该STO单据共计有2个外向交货单 8 ...

  8. VMware虚拟机可与Win10物理机互ping并可访问互联网的设置方法

     一.系统环境: VMware 15.Windows 10 1903.Windows 7 虚拟机 二.具体步骤: 1.Win10物理机,控制面板-所有控制面板项-网络连接-物理网卡适配器右键-属性-共 ...

  9. Python语言基础01-初识Python

    本文收录在Python从入门到精通系列文章系列 1. Python简介 1.1 Python的历史 Python的创始人为吉多·范罗苏姆(荷兰语:Guido van Rossum) 1989年的圣诞节 ...

  10. JS高阶---语句分号相关

    [总结] 小括号和中括号开头的在其前必须加封号: [主体] 首先搜索下 [主体] (1)讨论---编码风格问题 (2)什么情况必须用封号? 1.其后跟着匿名式函数调用 此时可以在匿名函数前加:如下所示 ...