一、 报文的大致组成
1. 报文首部
a) 请求行:请求的URI和HTTP协议版本。
b) 状态行:返回的状态码和原因短语和HTTP协议版本。
c) 首部字段:请求和响应的各种属性和条件的首部,一般分为四种。
d) 其他:可能包含HTTP的RFC未定义的,例如Cookie。
2. 空行:由LF+CR组成,不同的环境(windows、linux、mac OS等等)使用的换行符不同,有的是其中一个,有的是两者的结合。
LF:换行符,16进制0x0d
CR:回车符,16进制0x0ax
二、 编码——提升传输效率
1. 优点:编码提升了传输时的速度;缺点:增加了本地或者服务器CUP的工作量。
2. 没有编码时:报文主体=实体主体;编码后:报文主体=编码后的实体主体。
3. 内容编码:对实体主体进行压缩。
4. 分块传输编码:对实体主体进行分块,一块一块的传输,让浏览器逐步显示页面。
三、 发送多种数据的多部分对象集合
这种功能,允许了在发送一个报文中可以包含多种不同类型的实体。
四、 获取部分内容的范围请求
这种功能,允许了客户端请求部分内容。示例如下:
GET/tip.jpg HTTP/1.1
Host:www.usagidesign.jp
Range:bytes =5000- 6000, 7000-
解释:获取5000—6000和7000—END的数据。
五、 内容协商——返回最合适的内容
内容协商:指的是客户端和服务器对资源内容进行交涉,使客户端获得最合适的资源。例如,一个Web网页有许多语言版本,服务器根据浏览器默认的语言发送相应版本的Web网页。
分类:
a) 服务器驱动协商:有服务器进行内容协商,以请求首部字段为依据,在服务器端自动处理。
b) 客户端驱动协商:用户从浏览器里选择资源种类(例如语言)。
c) 透明协商:a、b的结合版。