Page 245 - HTTP权威指南
P. 245

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

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




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

                     (e)此时,建立起了原始数据的任意、
                     双向通信,直到连接关闭为止。
                    mdsnrt734tngfd/p0f92piub5.
                    lod9fuo8w34b4/;p-90[g9yk,8
                    U|t6y6/ $!&9890G&*&98...
                                                  mdsnrt734tngfd/p0f92piub5.
                                                  lod9fuo8w34b4/;p-90[g9yk,8
                                                  U|t6y6/ $!&9890G&*&98...
                                                                         gal1304-*&hsgd
                                     gal1304-*&hsgd






         207   图 8-10 用 CONNECT 建立一条 SSL 隧道

               图 8-10 中的例子描述了一条 SSL 隧道,其中的 SSL 流量是在一条 HTTP 连接上
               发送的,但是通过 CONNECT 方法可以与使用任意协议的任意服务器建立 TCP 连
               接的。

               1. CONNECT请求

               除了起始行之外,CONNECT 的语法与其他 HTTP 方法类似。一个后面跟着冒号和
               端口号的主机名取代了请求 URI。主机和端口都必须指定:

                   CONNECT home.netscape.com:443 HTTP/1.0
                   User-agent: Mozilla/4.0

               和其他 HTTP 报文一样,起始行之后,有零个或多个 HTTP 请求首部字段。这些行
               照例以 CRLF 结尾,首部列表以一个仅有 CRLF 的空行结束。





               218   |   第 8 章
   240   241   242   243   244   245   246   247   248   249   250