HTTP权威指南-8:网关、隧道及中继深度解析
Executive Summary
核心观点(金字塔原理)
结论先行: 网关、隧道和中继是HTTP协议扩展能力的三大支柱,它们使HTTP能够与其他协议互通、穿透防火墙并简化连接管理。
支撑论点:
- 网关作为协议转换器,实现HTTP与其他协议的双向转换,CGI是最常见的资源网关实现
- Web隧道通过CONNECT方法允许非HTTP流量穿越只允许Web流量的防火墙
- 中继是简化版HTTP代理,仅做字节盲转发,但存在Connection首部处理问题
SWOT 分析
| 维度 | 分析 |
|---|---|
| S 优势 | 网关实现协议互通;隧道可穿透防火墙传输SSL等非HTTP流量;架构灵活可扩展 |
| W 劣势 | CGI为每个请求创建新进程,性能开销大;中继无法正确处理Connection首部,可能挂起keep-alive连接 |
| O 机会 | HTTPS/HTTP网关提供服务器端安全转换;服务器扩展API替代CGI提升性能 |
| T 威胁 | 隧道可能被滥用传输恶意流量;中继实现不当导致连接问题 |
适用场景
- 需要HTTP与其他协议互通的企业集成场景
- 通过防火墙传输加密流量的安全通信需求
- 构建高性能Web服务的CGI替代方案选型
网关
- 网关:协议转换器
- 客户端和服务器端网关
<客户端协议>/<服务器端协议>;服务器端网关就是:HTTP/*;客户端网关:*/HTTP; - 协议网关
- HTTPS/HTTP服务器端安全网关
资源网关
- CGI(Common Getway Interface),为每个请求创建一个新进程,开销比较高,服务器负载大。
- 服务器扩展API
应用程序接口和Web服务
隧道
- Web隧道允许用户通过HTTP连接发送非HTTP流量,这样就可以在HTTP上捎带其他协议数据了,使用Web隧道最常见的原因就是要在HTTP连接中嵌入非HTTP流量,这样,这类流量就可以穿过只允许Web流量通过的防火墙了。
- 使用CONNECT建立HTTP隧道
请求建立一条SSL隧道:
CONNECT www.example.com:443 HTTP/1.0
User-agent: Mozilla/4.0
响应:
HTTP/1.0 200 Connection Established
Proxy-agent: Netscape-Proxy/1.1
与普通HTTP响应不同,这个响应并不需要包含Content-Type首部,此时连接只是对原始字节进行转接,不再是报文的承载着,所以不需要使用内容类型了。
- 数据隧道、定时及连接管理
- 隧道认证
中继
- 中继(relay)是没有完全遵循HTTP规范的简单HTTP代理,中继负责处理HTTP中建立连接的部分,然后对字节进行盲转发。
- 简单盲中继实现中存在一个问题,就是他们无法正确处理Connection首部,所以有潜在的刮起keep-alive连接的可能。