HTTP报文

一、HTTP报文的结构

用于HTTP协议交互的信息,称为HTTP报文。客户端的HTTP报文称为请求报文,服务端的称为响应报文。HTTP报文结构如下图:

下面是请求报文的一个实例:

  • 请求行:包含用于请求的方法,请求URI和HTTP版本
  • 状态行:表明响应结果的状态码
  • 首部字段:包含请求和响应的各种条件和属性
  • 其他:包含cookie等

 

二、请求行与状态行(它们都标记有HTTP协议版本)

1、请求行:包含用于请求的方法,请求URI和HTTP版本

2、状态行:状态码的职责是当客户端向服务器发送请求时,描述返回请求的结果。

  • 状态码的类别:

    • 1xx:信息性状态码,接收的请求正在处理
    • 2xx:成功状态码,请求正常处理完毕
    • 3xx:重定向状态码,需要进行附加操作以完成请求
    • 4xx:客户端错误状态码:服务器无法处理请求
    • 5xx:服务器错误状态码:服务器处理请求出错
    • 只要遵守状态码类别,即使改变RFC2616中定义的状态码,或服务器自行创建状态码都没有问题。

 

三、报文首部

1、HTTP首部字段传递重要信息传递额外重要信息,例:主体大小,所用的语言,认证信息等。重复了会如何:根据浏览器处理不一致。可能只认第一个,可能只认最后一个。     

// 首部字段名:字段值

Content-Type: text/html

Keep-Alive: timeout=15, max=100

 

2、4种HTTP首部字段类型:

  • 通用首部字段:请求和响应双方都会使用。
  • 请求首部字段:包含请求时特殊要求。
  • 响应首部字段:响应的补充内容,也会要求客户端附加额外的内容。
  • 实体首部字段:针对请求报文和响应报文的实体部分使用的首部,补充了更新时间等与实体有关的信息。
  • 为Cookie服务的首部字段

四、 编码提升传输速率

1、报文主体和实体主体的差异

  • 报文:是HTTP通信中的基本单位,由8位组字节流组成,通过HTTP通信传输。
  • 实体:作为请求或响应的有效载荷数据被传输,内容由实体首部和主体组成。
  • HTTP报文的主体用于传输请求或响应的实体主体。报文主体等于实体主体,只有编码时候才会有差异。

2、压缩传输的内容编码:发邮件添加附件时,为了让邮件的体积变小,通常将附件进行压缩,再发送。HTTP中也有类似功能。常见的内容编码有以下几种:

  1. gzip
  2. compress
  3. deflate
  4. identity(不进行编码)

3、分割发送:请求的编码实体资源尚未完全传输完成之前,浏览器无法显示请求页面的内容。在传输大容量数据时,通过把数据分割成多块,能够让浏览器逐步显示页面。(先分后编码再传)

4、发送多种数据的多部分对象集合:(类似发送邮件时可以发送不同类型的文件采用了MIME多用途英特网邮件扩展),HTTP协议中也采用了多部分对象集合,发送的一份报文主体内可含有多类型实体。通常是在图片或文本文件等上传时使用。多部分对象集合包含的对象如下:

  • multipart/form-data:在web表单文件上传时使用;
  • multipart/byteranges:响应报文包含了多个范围的内容时使用。
  • 使用boundary字符串来划分多部分对象集合指明的各类实体。在boundary字符串指定的各个实体的起始行之前插入‘--’标记, 最后插入 --XXX--作为结尾。

5、获取部分内容的范围请求,曾经加载一个尺寸稍大的图片或者文件就很吃力了,如果网络中断,必须重头开始,现在就有一种恢复机制(从中断处恢复)——指定范围发送的请求叫做范围请求。

  • 对一份10000字节大小的资源,如果使用范围请求,可以只请求5000-10000字节内多资源;
  • Range: bytes=5001-10000:5000-10000字节
  • Range: bytes=5001-:5000到最后
  • Range: bytes=-3000:最开始到3000
  • Range: bytes=-3000, 5000-7000:多重范围(响应会在首部字段Content-type标明multipart/byteranges后返回响应报文)
  • 如果无法响应范围请求,则会返回状态码200 OK和完整实体内容。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值