Bootstrap

HTTP版本的区别

一、HTTP 1.0和HTTP 1.1的区别

1.http1.0 需要 keep-alive 参数来告知服务器要建立一个长连接,而 http1.1 默认支持长连接

2.HTTP 1.1 支持只发送 header 信息(不带任何 body 信息),如果服务器认为客户端有权限请求服务器,则返回 100,否则返回401。客户端如果接受到 100,才开始把请求 body 发 送到服务器。这样当服务器返回 401 的时候,客户端就可以不用发送请求 body了,节约了 带宽。

3.host http1.0 没有 host 域,http1.1 才支持这个参数。https://blog.csdn.net/u012111465/article/details/79779550

4.带宽优化及网络连接的使用HTTP1.0 中,存在一些浪费带宽的现象,例如客户端只是需要某个对象的一部分,而服务器却将整个对象送过来了,并且不支持断点续传功能,HTTP1.1 则在请求头引入了 range 头域,它允许只请求资源的某个部分,即返回码是 206Partial Content),这样就方便了开发者自由的选择以便于充分利用带宽和连接。

二、HTTP 1.0和HTTP 2.0的区别

新的二进制格式Binary Format),HTTP1.x 的解析是基于文本。基于文本协议的格式解析存在 天然缺陷,文本的表现形式有多样性,要做到健壮性考虑的场景必然很多,二进制则不同,只认 0 和 1 的组合。基于这种考虑 HTTP2.0 的协议解析决定采用二进制格式,实现方便且健壮。

多路复用MultiPlexing),即连接共享,建立起一个连接请求后,可以在这个链接上一直发送,不 要等待上一次发送完并且受到回复后才能发送下一个(http1.0 是这样),是可以同时发送多个请求, 互相并不干扰。

header 压缩,如上文中所言,对前面提到过 HTTP1.x header 带有大量信息,而且每次都要重复发送,HTTP2.0 利用 HPACK 对消息头进行压缩传输,客服端和服务器维护一个动态链表(当一个头部没有出现的时候,就插入,已经出现了就用表中的索引值进行替代),将既避免了重复 head er 的传输,又减小了需要传输的大小。(Hpack https://www.jianshu.com/p/f44b930cfcac

服务端推送server push),就是客户端请求 html 的时候,服务器顺带把此 html 需要的 css,js 也一起发送给客户端,而不像 http1.0 中需要请求一次 html,然后再请求一次 css,然后再请求一次 js

 

;