HTTP 协议版本
HTTP 0.9
第一个版本的HTTP协议,已经过时,只支持GET请求方法,并且不支持请求头,只支持纯文本。每个请求都会建立TCP连接,请求完成后TCP连接关闭。
HTTP 1.0
HTTP第二个版本,至今仍被广泛使用,相对于 HTTP 0.9 :
支持响应,请求头部
支持多种请求方法:GET,POST,HEAD
响应对象不限于纯文本
HTTP 1.1
HTTP第三个版本,是目前使用最广泛的协议,相对于 HTTP 1.0 :
长连接:默认开启 Connection: keep-alive,在同一个TCP连接上可以传送多个HTTP请求,弥补了 HTTP 1.0中每个请求都要建立连接的缺点
host:HTTP 1.0 不支持host请求头,同一个ip和端口号上只能有一个站点。HTTP 2.0 增加host请求头,使用host明确表示要访问服务器上的哪个站点,让一台服务器可以在同一个ip和端口号上建立多个虚拟web站点。
range:可以向服务器只请求一部分内容(可以断点续传)
请求方法:新增OPTIONS,PUT,DELETE,TRACE,CONNECT请求方法
缓存:新增etag,Cache-Control头部控制缓存
错误处理:新增24个错误状态响应码,如409(Conflict),410(Gone)
HTTP 2.0
相对于HTTP 1.1:
二进制分帧:HTTP 1.x 解析都是基于文本格式,HTTP 2.0 协议解析使用二进制格式,改善了传输性能
多路复用:HTTP 1.1中为了让响应更快,通常会建立多个TCP连接,而浏览器对同一时间,同一域名下的请求有一定的数量限制(chrome的限制为6),一个连接只能等请求完成后才能处理下一个请求(所以一些站点为了解决请求限制会有多个静态资源cdn域名)。HTTP 2.0 中,多个请求能在同一个TCP连接中并行执行,不会导致阻塞其他请求的执行。
header压缩:因为请求header带有大量信息,并且大多数情况下信息有大量重复,导致很多无用的流量的产生。HTTP 2.0 使用了HPACK算法,通讯双方都维持有一份字典,完全匹配的键值对可用一个字符表示,详细可看:https://imququ.com/post/header-compression-in-http2.html
服务端推送:服务端可以对一个请求发送多个响应,这样只需要一轮HTTP通信就能获得全部资源,提升了性能。
最后更新于
这有帮助吗?