《HTTP权威指南》-第8章 集成点:网关、隧道及中继
8.1 网关
客户端和服务器端网关
〈客户端协议〉/〈服务吉普端协议〉
- 服务器将网关( server-side gateway )通过HTTP 与客户端对话,通过其他协议与服务器通信( HTTP/*)。
- 客户端网关(client-side gateway )通过其他协议与客户端对话,通过HTTP 与服务器通信(*/HTTP)。
8.2 协议网关
8.2.1 HTTP/*:服务器端Web网关
8.2.2 HTTP/HTTPS :服务器端安全网关
一个组织可以通过网关对所有的输入Web 请求加密,以提供额外的隐私和安全性保护。客户端可以用普通的HTIP 浏览Web 内容,但网关会自动加密用户的对话。
8.2.3 HTTPS/HTTP客户端安全加速器网关
8.3 资源网关
8.3.1 CGI
8.3.2 服务器扩展API
8.4 应用程序接口和Web服务
8.5 隧道
Web 隧道允许用户通过HTTP 连接发送非HTTP 流量,这样就可以在HTTP 上捎带其他协议数据了。
8.5.1 用CONNECT建立HTTP隧道
Web 隧道是用HTTP的CONNECT 方法建立起来的。
CONNECT 方能请求隧道网关创建一条到达任意目的服务器和端口的TCP 连接,并对客户端和服务器之间的后继数据进行盲转发。
- CONNECT请求
除了起始行之外, CONNECT 的语捺与其他HTTP方法类似。一个后面跟着冒号和端口号的主机名取代了请求URI。主机和端口都必须指定:
CONNECT home.netscape.com:443 HTTP/1.0
User- agent: Mozilla/4.0 - CONNECT响应
发送了请求之后.客户端会等待来自网关的响应。和普通HTTP 报文一样,响应码200 表示成功。按照惯例,响应中的原因短语通常被设置为“Connection Established”:
HTTP/1 .0 200 Connection Established
Proxy- agent: Netscape - Proxy/1 .1
8.5.2 数据隧道、定时及连接管理
管道化数据对网关是不透明的,所以网关不能对分组的顺序和分组流作任何假设。
一且隧道建立起来了,数据就可以在任意时间流向任意方向了。
8.5.3 SSL隧道
最初开发Web 隧道是为了通过防火端来传输加密的SSL 流量。很多组织都会将所有流量通过分组过滤路由器和代理服务器以隧道方式传输,以提升安全性。
但有些协议,比如加密SSL , 其信息是加密的,无法通过传统的代理服务器转发。隧道会通过一条HTTP 连接来传输SSL 流量,以穿过端口80 的HTTP 防火墙。
8.5.4 SSL隧道与HTTP/HTTPS 网关的对比
8.5.5 隧道认证
8.5.6 隧道的安全性考虑
为了降低对隧道的滥用,网关应该只为特定的知名端口。比如HTTP的端口443,打开隧道。
8.6 中继
HTTP 中继(relay )是没有完全遵循HTTP 规范的简单HTTP 代理。中继负责处理HTIP 中建立连接的部分,然后对字节进行盲转发。
Keep-Alive挂起