HTTP通信过程包括从客户端发往服务器的请求及从服务器端返回客户端的响应。
1、HTTP报文
请求端(客户端)的HTTP报文叫请求报文,响应端(服务器端)的叫响应报文。
HTTP报文大致分为报文首部和报文主体两块。当然,并不一定要有报文主体。
报文首部:服务器或客户端需处理的请求或响应的内容及属性。
报文主体:应被发送的数据。
2、请求报文及响应报文的结构
首先来看一下两者报文的首部
请求报文 响应报文
请求行 状态行
请求首部字段 响应首部字段
通用首部字段 通用首部字段
实体首部字段 实体首部字段
其他 其他
请求行:包含用于请求的方法,包括 URI 和 HTTP版本。
状态行:包括表明响应结果的状态码,原因短语和 HTTP 版本。
首部字段:包含表示请求和响应的各种条件和属性的个来首部,一般有四类(请求首部、响应首部、通用首部和实体首部)
3、编码提升传输速率
报文主体和实体主体的差异:通常两者相等。只有当传输中进行编码操作时,实体主体的内容发生变化,两者才会出现差异
压缩传输的内容编码:通俗来讲为了方便数据传输,要先对实体信息进行压缩,而进行压缩的方法就是内容编码。客户端在 接收到内容编码后的实体进行解码。常用的内容编码有:gzip、compress、deflate、identify。
分割发送的分块传输编码:当资源比较大时,通过把数据分割成多块,让浏览器逐步显示页面。这种分块的功能就是分块传 输编码。
4、发送多种数据的多部分对象集合
多部分对象集合包含的对象如下:
multipart/form-data(在 web 表单文件上传时使用)
multipart/byterranges(状态码 206 响应报文包含多个范围的内容时使用)
在 HTTP 报文中使用多部分对象集合时,需要在首部字段里加上 Content-type 。
5、获取部分内容的范围请求
指定范围发送的请求叫做范围请求,执行范围请求时,会用到首部字段 Range 来指定资源的 byte 范围。
6、内容协商返回最合适的内容
内容协商机制是指客户端和服务器端就响应的资源内容进行交涉,然后提供给客户端最为适合的资源。
内容协商技术有以下3中类型
服务器驱动协商、客户端驱动协商、透明协商