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 章