Page 151 - HTTP权威指南
P. 151

•   读取以 CRLF 结尾的报文首部;
               •   检测到以 CRLF 结尾的、标识首部结束的空行(如果有的话);
               •   如果有的话(长度由 Content-Length 首部指定),读取请求主体。



                                             从网络中读取的请求报文
                                      GET /specials/saw-blade.gif HTTP/1.0CRLF
                                      Accept: image/gifCRLF
                                      Host: www.j

                                                因特网
                                           LF CR LF CR  moc.erawdrah-se  o

                            客户端                                     服务器

               图 5-5 从连接中读取请求报文
               解析请求报文时,Web 服务器会不定期地从网络上接收输入数据。网络连接可能随
               时都会出现延迟。Web 服务器需要从网络中读取数据,将部分报文数据临时存储在
               内存中,直到收到足以进行解析的数据并理解其意义为止。


               5.5.1 报文的内部表示法

               有些 Web 服务器还会用便于进行报文操作的内部数据结构来存储请求报文。比如,
               数据结构中可能包含有指向请求报文中各个片段的指针及其长度,这样就可以将这些
               首部存放在一个快速查询表中,以便快速访问特定首部的具体值了(参见图 5-6)。



                                                    请求报文
                                                     GET /specials/saw-blade.gif HTTP/1.0CRLF
                                                     Accept: image/gifCRLF
                                                     Host: www.joes-hardware.comCRLF
                                                     CRLF
                                                                   解析
                    请求报文解析后的编码
                    method:    1                             specials/saw-blade.gif
                    version:   1.0
                    uri:                                     www.joes-hardware.com
                    header count: 2
                    headers:                                 image/gif
                    body:      -
                                          name: Host  value:
                                          name: Accept value:

               图 5-6 将请求报文解析为便捷的内部表示形式



               124   |   第 5 章
   146   147   148   149   150   151   152   153   154   155   156