Page 249 - HTTP权威指南
P. 249

为了降低对隧道的滥用,网关应该只为特定的知名端口,比如 HTTPS 的端口 443,
               打开隧道。


                         客户端和网关之间的隧道
                                                          普通的SSL连接

                客户端                            网关                    orders.joes-hardware.com
                  (a)发送的CONNECT请求           (隧道端点)
                    CONNECT orders.joes-hardware.com:443 HTTP/1.0
                    User-agent: SuperBrowser 4.2



                  (b)返回的认证请求
                    HTTP/1.0 407 Proxy authentication required
                    Proxy-authenticate: Basic realm="wormhole"

                  (c)发送带有适当认证信息的CONNECT请求
                    CONNECT orders.joes-hardware.com:443 HTTP/1.0
                    User-agent: SuperBrowser 4.2
                    Proxy-authorization: Basic YnJpYW4tdG90dHk6T3ch




                     (f)返回HTTP连接就绪报文              (d)打开到端口443的TCP连接
                       HTTP/1.0 200 Connection established       (e)连接已建立





               图 8-13 网关允许某客户端使用隧道之前,可以对其进行代理认证

               8.6 中继

               HTTP 中继(relay)是没有完全遵循 HTTP 规范的简单 HTTP 代理。中继负责处理
               HTTP 中建立连接的部分,然后对字节进行盲转发。

               HTTP 很复杂,所以实现基本的代理功能并对流量进行盲转发,而且不执行任何首
               部和方法逻辑,有时是很有用的。盲中继很容易实现,所以有时会提供简单的过滤、
               诊断或内容转换功能。但这种方式可能潜在严重的互操作问题,所以部署的时候要
               特别小心。

               某些简单盲中继实现中存在的一个更常见(也更声名狼藉的)问题是,由于它们无
               法正确处理 Connection 首部,所以有潜在的挂起 keep-alive 连接的可能。图 8-14
               对这种情况进行了说明。



               222   |   第 8 章
   244   245   246   247   248   249   250   251   252   253   254