HTTP/0.9
,仅支持GET方法,并且响应中没有HTTP头信息,只有文档内容。
HTTP/1.0
增加了对POST方法、状态码、HTTP头信息等的支持,这一版本也是广泛应用的历史性版本。
HTTP/1.1
引入了持久连接(Persistent Connections)和管道化(Pipelining)等新特性,大大提高了性能。然而,随着互联网的发展,Web页面变得更加复杂,HTTP/1.1也暴露出了一些性能瓶颈,例如头部阻塞等问题。
HTTP/2
在传输效率(二进制传输)、多路复用(单个 TCP 连接上同时发送多个请求和响应)、头部压缩(HPACK 算法对 HTTP 头部进行压缩)、服务器推送(允许服务器在客户端请求之前主动推送相关资源)等方面进行了优化,大大提高了页面加载的速度和性能。
HTTP/3
是基于QUIC协议的下一代HTTP协议,在传输层使用了UDP代替TCP。UDP相较于TCP有更好的传输性能和低延迟,而QUIC协议改善了UDP的不足,提供了安全可靠的传输。HTTP/3的主要目标是进一步提高网页的加载速度和性能,减少网络延迟,提供更好的用户体验。
总的来说,HTTP经历了多个版本的迭代,从HTTP/0.9简单的文档传输到HTTP/1.1的持久连接和管道化,再到HTTP/2的多路复用和头部压缩,再到未来的HTTP/3,不断进化以适应互联网的发展和需求。 HTTP作为互联网的基础协议,持续演进以满足不断增长的网络传输需求。
http2的多路复用,和http1.1的管道化,他们都可以同时发送多个请求,区别是什么
HTTP/2 的多路复用和 HTTP/1.1 的管道化都是为了解决在单个连接上发送多个请求的问题,但它们的实现方式和特点有所不同。
-
HTTP/2 的多路复用:
- HTTP/2 使用了二进制分帧,允许在单个 TCP 连接上同时传输多个请求和响应。
- 多路复用使得在同一连接上可以并行发送和接收多个请求和响应,从而避免了 HTTP/1.x 中存在的队头阻塞问题。
- 每个请求和响应都被分割成一个或多个帧,在连接上交错传输,因此不再需要像 HTTP/1.x 中那样等待之前的请求响应完成才能发送下一个请求。
-
HTTP/1.1 的管道化:
- HTTP/1.1 支持管道化技术,允许在同一连接上同时发送多个请求,但响应必须按照请求的顺序返回,避免了双方同时进行的交叉通信。
- 尽管管道化可以减少部分请求的等待时间,但由于服务器和客户端可能对管道化的支持不完整,导致了实际效果有限。特别是对于大多数情况下只能在先前的请求完成之后才能发送后续请求的情况,管道化的效果并不明显。
总的来说,HTTP/2 的多路复用比 HTTP/1.1 的管道化更有效地解决了并发请求的问题。多路复用允许在同一连接上同时进行多个请求和响应的交互,更有效地利用了网络资源,并减少了延迟,从而显著提高了性能。
http各个版本区别
- http0.9 只能使用基本的get请求 请求完了就断开tcp链接
- http1.0 get post HEAD 也是短连接
- http1.1 put push delete 长链接 管道化 主流版本 etag
- http2.0 长链接 多路复用 websoket