一. 前导内容
1.1何为HTTP?
HTTP(HyperText Transfer Protocol)即超文本传输协议,是一种详细规定了浏览器和万维网服务器之间互相通信的规则,它是万维网交换信息的基础,它允许将HTML(超文本标记语言)文档从Web服务器传送到Web浏览器。
1.2HTTP的工作原理是什么?
HTTP协议工作于客户端-服务端架构上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。
Web服务器有:Apache服务器,IIS服务器等。
二.HTTP0.9与HTTP1.0的区别
HTTP0.9是一个很古老的版本,它只支持get请求方式,所以没办法向服务端传送太多的信息。而且它并没有请求头的相关概念,只具备返回HTML字符串的概念。
HTTP1.0在HTTP0.9的基础上新增了请求头与响应头,使得它在传输中可以指定HTTP协议版本号,以及其他的一些元信息(状态码,缓存,内容编码等),不仅如此,HTTP1.0还扩充了传输的内容格式(图片,视频,音频,二进制等)
三.HTTP1.0与HTTP1.1的区别
2.1缓存处理的不同
HTTP1.0中主要使用的是If-Modified-Since,Expiers来做缓存判断,而HTTP1.1则是引入了更多的解决策略:Entity tag、If-Unmodified-Since、If-match等,来做出缓存判断
2.2带宽优化
HTTP1.0中存在着带宽浪费的现象,而HTTP1.1正是对此情况进行了优化处理,HTTP1.1在请求头中引入了range头域,允许只请求某一部分的情况,避免了带宽浪费。
2.3新增Host头处理
HTTP中认为每台服务器都绑定了一个唯一的IP地址,所以消息中的URL不会传递主机名。而HTTP1.1的请求信息都支持Host头域,并且若无Host头域则会报错。
2.4长连接
HTTP1.1在HTTP1.0之上可支持长连接和请求的流水线处理,也就是说在一个TCP上可传送多个HTTP请求,减少了建设和关闭连接的消耗和延迟。
HTTP默认开启Connection:keep-alive,从一定程度上弥补了HTTP1.0每次请求都要创立链接的缺点。
2.5请求方式
HTTP1.1中新增了以下5种请求方式。
(1)PUT:请求服务器存储一个资源
(2)DELETE:请求服务器删除标识的资源
(3)OPTIONS:请求查询服务器的性能,查询相关的选项与需求
(4)CONNECT:保留请求以供将来使用
(5)TRACE:请求服务端回送收到的请求信息,用于测试或诊断
三.HTTP1.1与HTTP2.0的区别
3.1二进制分帧
HTTP1.1是基于文本的,而HTTP2.0将所有传输的信息分割为了更小的消息和帧,并对它们采用二进制的编码,以此提高传输效率。
3.2多路复用
HTTP2.0采用了多路复用,也就是在共享TCP链接的基础上同时发出请求和响应,这是HTTP1.1中所没有的一个特性。
3.3头部压缩
由于HTTP是无状态的,每一个请求都需要头部信息标识这次请求的相关信息,所以会造成传输许多重复的信息,当传输数量庞大时,资源的消耗也是巨大的。而HTTP2.0很好的解决了这一问题,它可以维护一个头部信息字典,差量进行更新头部信息,以此来减少占用的资源。