要点: 1) HTTP成为应用程序开发的一种基本构造模块
2) 开发者在HTTP上捎带其他协议的内容(其他协议的流量包裹在HTTP中)
3)用HTTP通过隧道方式或中继方式将这些流量传回公司的防火墙(SSL)
1)在HTTP和其他协议及应用程序之间起到接口作用的网关
2)允许不同类型的Web应用程序互相通信的应用程序接口(API)
3)允许用户在HTTP连接上发送非HTTP流量的隧道
4)作为一种简化的HTTP代理, 一次将数据转发一跳的中继
8.1 网关
HTTP扩展和接口的发展: 用户需求驱动. .
e.g.: GET /index.phpHTTP/1.1HOST:www.xxxxx.cn
起源: 单个应用程序无法处理所有这些能想到的资源
Gateway:网关(处理这些想要的资源)
网关是资源和应用程序之间的粘合剂. 应用程序可以(通过HTTP或者已定义的接口)请求网关来处理某条请求
网关可以提供响应(response message??)
流程: 客户端通过HTTP请求资源 —> 服务器获取请求 -> 与网关交互获取资源 (PHP? Python?)
HTTP客户端<->网关<->FTP服务器
HTTPS客户端<->网关<->Web服务器
HTTP客户端<->应用程序服务器(CGI)<->程序(资源网关)
区分:客户端和服务器端网关
Web网关在一侧使用HTTP协议, 在另一侧使用另一种协议
<客户端协议> | <服务器端协议>
客户端网关: 通过其他协议与客户端对话, 通过HTTP与服务器通信
服务器端网关: 通过HTTP协议与客户端对话, 通过其他协议与服务器通信
8.2 协议网关 Protocol Gateway
HTTP流量导向方式: HTTP流量导向网关时所使用的方式与流量导向代理的方式差不多
GET http://www.xxxx.cn/index.php HTTP/1.1 导向网关
一般的HTTP流量不受影响, 会继续流入原始服务器. 但对于FTP URL的请求则会被放在HTTP请求中发送给网关gw1.joes-hardware.com. 网关代表客户端在执行FTP事务, 并通过HTTP将结果回送给客户端
GEThttp://www.cnn.com/HTTP/1.0. -> Web服务器
HTTP客户端 {
GETftp://ftp.irs.gov/pub/00-index.txt. HTTP/1.0-> HTTP/FTP网关 <-> FTP服务器
8.2.1 HTTP/* :服务器端WEB网关(HTTP客户端和网关服务器)
原理: 请求流入原始服务器, 服务器端Web网关会将客户端HTTP请求转换为其他协议
HTTP客户端 ———-> HTTP/FTP输入转换网关 <-(FTP控制链接, FTP数据连接)->FTP服务器
(GETftp://ftp.irs.gov/pub/00-index.html.txtHTTP/1.0)
步骤:(通过FTP协议获取对象)
1)发送USER和PASS命令登陆到服务器上;
2)发布CWD命令, 转移到服务器合适的目录上去;
3)将下载类型设置为ASCII;
4)用MDTM获取文档最后的修改时间;
5)用PASV告诉服务器将有被动数据获取请求到达
6)用RETR请求进行对象获取
7)打开到FTP服务器的数据连接, 服务器端由控制信道返回; 一旦数据信道打开,就讲对象回传到网关
8.2.2 HTTP/HTTPS:服务器安全网关
通过网关对所有输入Web请求加密,以提供额外的隐私和安全性保护。
8.2.2 HTTPS/HTTP:客户端安全加速器网关
接受安全的HTTPS流量, 对安全流量进行解密-> 向Web服务器发送普通的HTTP请求: 减轻原始服务器的负荷
8.3 资源网关 Source Gateway
应用程序服务器: 将目标服务器与网关结合在一个服务器中实现
应用程序服务器是服务器端网关, 与客户端HTTP进行连接。与客户端用HTTP链接通信。
8.3.1 CGI
动态HTML, 信用卡处理和数据库查询(现在一般用PHP. PYTHON. JAVA语言脚本进行)
每一条CGI请求都会引发一个新进程的开销->限制那些使用CGI的服务器性能。
8.3.2 服务器扩展API
8.4 应用程序接口和Web服务
HTTP作为一种链接应用程序的基础软件来使用
8.5 隧道
HTTP应用Web隧道tunnel: 通过HTTP应用程序访问使用非HTTP协议的应用程序
8.5.1 用Connect建立HTTP隧道
Web隧道: 用HTTP的Connect方法建立起来, CONNECT方法并不是HTTP/1.1核心规范的一部分。
Connect 方法请求隧道网关创建一条到达任意目的服务器和端口的TCP链接,并对客户端和服务器之间的后继数据进行盲转发。
在图8-10a中.客户端发送一条CONNECT请求到隧道网关(TUNNEL GATEWAY):
建立TCP链接
一旦建立连接,网关会发送一条HTTP 200 CONNECTION ESTABLISHED响应
隧道建立,客户端通过HTTP隧道发送所有数据直接转发给TCP链接,服务器发送的所有数据都通过HTTP隧道转发给客户端
1.CONNECT请求
CONNECT home.netscape.com:443 HTTP/1.0
User-agent: Mozilla/4.0
2.CONNECT响应
HTTP/1.0 200 CONNECTION Established
Proxy-agent: Netsacpe-Proxy/1.1
8.5.2 数据隧道, 定时及链接管理
管道化数据: 对网关不透明。所以网关不能对分组顺序和分组流作任何假设。一旦隧道建立起来, 数据就可以在任何时间流向任何方向了。
优化方法: 允许客户端在发送了CONNECT请求之后, 接受响应之前,发送隧道数据(不推荐)
8.5.3 SSL隧道
Web隧道开发: 为了通过防火墙来传输加密的SSL流量,
加密SSL协议: 无法通过传统的代理服务器转发, 隧道通过一条HTTP连接来传输SSL流量。以穿过端口80的HTTP防火墙
HTTP中添加的新的隧道特性: 在此特性中, 可以将原始的加密数据放在HTTP报文中,通过普通的HTTP信道传送。
8.5.4 SSL隧道与HTTP/HTTPS网关的对比
注: 与其他协议一样,对HTTPS协议(SSL上的HTTP)进行网关操作。由网关(而不是客户端)初始化与远端的HTTPS服务器的SSL会话。然后代表客户端执行HTTPS事务。
(a)直接的SSL链接:客户端 —SSL(隧道) —SSL服务器
(b)通过HTTP隧道建立的SSL连接:
客户端SSL—>隧道起点—>HTTP(SSL)->HTTP链接->隧道终点—>SSL链接与SSL服务器通信
8.5.5 隧道认证
将HTTP的其他特性与隧道配合使用。尤其是,可以将代理的认证支持与隧道配合使用, 对客户端使用隧道的权利进行认证。
8.5 中继(relay)
定义:没有完全遵循HTTP规范的简单HTTP代理
中继负责处理HTTP中建立链接的部分,然后对自己进行盲转发。
网友评论