http1.0,HTTP1.1, http2.0,https比较

Posted 夏天的暖风

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了http1.0,HTTP1.1, http2.0,https比较相关的知识,希望对你有一定的参考价值。

http1.0

早先1.0的HTTP版本,是一种无状态、无连接的应用层协议。HTTP1.0规定浏览器和服务器保持短暂的连接,浏览器的每次请求都需要与服务器建立一个TCP连接,服务器处理完成后立即断开TCP连接(无连接),服务器不跟踪每个客户端也不记录过去的请求(无状态)。这种无状态性可以借助cookie/session机制来做身份认证和状态记录。而下面两个问题就比较麻烦了。

缺点

无连接的特性导致最大的性能缺陷就是 无法复用连接。每次发送请求的时候,都需要进行一次TCP的连接,而TCP的连接释放过程又是比较费事的。这种无连接的特性会使得网络的利用率非常低

优点

HTTP1.1支持管道化,但是服务器也必须进行逐个响应的送回,这个是很大的一个缺陷。实际上,现阶段的浏览器厂商采取了另外一种做法,它允许我们打开多个TCP的会话。也就是说,上图我们看到的并行,其实是不同的TCP连接上的HTTP请求和响应。这也就是我们所熟悉的浏览器对同域下并行加载6~8个资源的限制。而这,才是真正的并行!

http1.1

解决问题

长连接,HTTP1.1增加了一个Connection字段,通过设置 Keep-Alive可以保持HTTP连接不断开,避免了每次客户端与服务器请求都要重复建立释放建立TCP连接,提高了网络的利用率。如果客户端想关闭HTTP连接,可以在请求头中携带 Connection:false来告知服务器关闭请求。

管道化

管道化(pipelining务器必须按照客户端请求的先后顺序依次回送相应的结果,以保证客户端能够区分出每次请求的响应内容。

强缓存

HTTP1.1还加入了缓存处理(强缓存和协商缓存[传送门])新的字段如cache-control,支持断点传输,以及增加了Host字段(使得一个服务器能够用来创建多个Web站点)。

https


http2.0


头部压缩

在HTTP1.x中,头部元数据都是以纯文本的形式发送的,通常会给每个请求增加500~800字节的负荷。比如说cookie,默认情况下,浏览器会在每次请求的时候,把cookie附在header上面发送给服务器。(由于cookie比较大且每次都重复发送,一般不存储信息,只是用来做状态记录和身份认证)

HTTP2.0使用encoder来减少需要传输的header大小,通讯双方各自cache一份header fields表,既避免了重复header的传输,又减小了需要传输的大小。高效的压缩算法可以很大的压缩header,减少发送包的数量从而降低延迟。

服务器推送

服务器除了对最初请求的响应外,服务器还可以额外的向客户端推送资源,而无需客户端明确的请求。

总结

HTTP1.0

无状态、无连接 HTTP1.1

持久连接 请求管道化 增加缓存处理(新的字段如cache-control) 增加Host字段、支持断点传输等 HTTP2.0

二进制分帧 多路复用(或连接共享) 头部压缩 服务器推送


以上是关于http1.0,HTTP1.1, http2.0,https比较的主要内容,如果未能解决你的问题,请参考以下文章

Linux-http1.0-http1.1-http2.0区别

HTTP1.0 HTTP1.1 HTTP2.0 主要特性对比

HTTP1.0 HTTP1.1 HTTP2.0 主要特性对比

HTTP1.0 HTTP1.1 HTTP2.0 主要特性对比

HTTP1.1——HTTP2.0——HTTP3.0

http1.0,http1.1和http2.0的区别