网络协议--HTTP报文内的http信息

HTTP报文结构:

网络协议--HTTP报文内的http信息
网络协议--HTTP报文内的http信息

报文中几个字段的含义:
  1. 请求行:包含用于请求的方法,请求的URI和HTTP版本
  2. 状态行:包含表明响应结果的状态行,原因短语和HTTP版本
  3. 首部字段:包含表明请求和响应的各种条件和属性的各类首部
报文主体和实体主体的差异:

根据《HTTP图解》书上的解释来说:
报文:分为报文首部和报文主体,是HTTP基本通信单位,通过HTTP通信传输
实体:作为请求或响应的有效载荷数据被传输,其内容由实体首部和实体主体组成。

在网上找到一个例子我觉的很贴切,特别能加深我对这个内容的理解:
报文呢就是一个快递上的送货单,表明了你这个快递的所有信息,而实体呢就是你的快递,而且不是说实体一般为了传输都会进行编码吗,但是你的报文主体是不会变的。这就像你的快递不管怎么包装,它的快递单的信息都不会变(是什么就是什么,不会因为它是一辆自行车,为了方便运输把他拆了,他就不是自行车了,到了客户端用户手中会自行组装起来)

说到编码,就有常见的几种:

  1. Gzip(GNU zip)
  2. Compresse(UNIX 系统标准)
  3. Deflate(zlib)
  4. identify(不进行编码)

HTTP报文的几个功能:

  1. 分割发送的分块传输编码
    网络协议--HTTP报文内的http信息
    分块传输编码会将实体主体分成多个部分,每一个快都会用十六进制来标记快的大小,而实体主体的最后一块会使用“0(CR+LF)"来标记。

  2. 发送多种数据的多对象集合
    网络协议--HTTP报文内的http信息
    多部份对象集合包括的对象如下:
    a. multipart/form-data:在Web表单文件上传时使用
    网络协议--HTTP报文内的http信息
    b. multipart/byteranges:状态码206响应报文包含了多少个范文的内容时使用
    网络协议--HTTP报文内的http信息
    在HTTP报文中国使用多部份对象集合时,需要在首部字段里面加上content-type。使用boundaru字符串来划分出多部分对象集合指明的各类实体。

  3. 获取部分内容方位请求
    想必大家都有从外网下载资料的经历把,肯定特别的慢,而且有时候还会突然的失败,你可以点击继续下载之后的内容,或者就重新下载。那么在以前的时候,失败就只能重新下载的,但是现在加入了范围请求功能,失败了,就会在已经有的基础上继续下载。实现这个功能的首部是Range Request
    网络协议--HTTP报文内的http信息

  4. 内容协商返回最适合
    当我们使用浏览器的时候,同一个内容有时候是英文的,有时候是中文的。比如是你使用必应浏览器(谷歌假装不能用)当你输入的是全英文的时候,他就返回给你全英文的结果,但是有中文的时候就会返回中文结果。这些啊都是根据这个内容协商来返回处理的。内容协商技术有三种类型:
    a. 服务器驱动协商
    就是由服务器端进行内容协商,在服务器端自动处理
    b. 客户端驱动协商
    由客户端进行内容协商,用户从浏览器现实的可选项列表中手动选择。还可以利用javascript脚本在web页面上自动进行上述选择。比如按OS的类型或者浏览器类型自行切换成PC版页面或手机版页面
    c. 透明协商
    就是服务器和客户端驱动的结合体

图片截取自《图解HTTP》,希望了解更多的也可以去看看这本书