http1.0,http1.1,http2.0,http3.0 区别有哪些

20 世纪 60 年代,美国国防部高等研究计划署(ARPA)建立了 ARPA 网,这被认为是互联网的起源。70 年代,研究人员基于对 ARPA 网的实践和思考,发明出了著名的 TCP/IP 协议。该协议具有良好的分层结构和稳定的性能,并在 80 年代中期进入了 UNIX 系统内核,促使更多的计算机接入了网络。

1989 年,蒂姆伯纳斯-李博士发表了一篇论文,提出了在互联网上构建超链接文档系统的构想。在篇文章中他确立了三项关键技术:URI、HTML、HTTP。

以下是HTTP发展年鉴表:

HTTP1.0最早在网页中使用是在1996年,主要就是为了将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器。也是说对于前端来说,我们所写的HTML页面将要放在我们的web服务器上,用户端通过浏览器访问url地址来获取网页的显示内容,但是到了WEB2.0以来,我们的页面变得复杂,不仅仅单纯的是一些简单的文字和图片,同时我们的HTML页面有了CSS,Javascript,来丰富我们的页面展示,当ajax的出现,我们又多了一种向服务器端获取数据的方法,这些其实都是基于HTTP协议的。 

一、HTTP1.0和HTTP1.1的一些区别

HTTP(Hypertext Transfer Protocol)是一种用于传输超文本的协议,负责在客户端和服务器之间传递和交换数据。下面是HTTP 1.0、HTTP 1.1和HTTP 2.0之间的主要区别:

①.在HTTP1.0中主要使用header里的If-Modified-Since,Expires来做为缓存判断的标准,HTTP1.1则引入了更多的缓存控制策略例如Entity tag,If-Unmodified-Since, If-Match, If-None-Match等更多可供选择的缓存头来控制缓存策略。

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

③.错误通知的管理,在HTTP1.1中新增了24个错误状态响应码,如409(Conflict)表示请求的资源与资源的当前状态发生冲突;410(Gone)表示服务器上的某个资源被永久性的删除。

④.Host头处理,在HTTP1.0中认为每台服务器都绑定一个唯一的IP地址,因此,请求消息中的URL并没有传递主机名(hostname)。但随着虚拟主机技术的发展,在一台物理服务器上可以存在多个虚拟主机(Multi-homed Web Servers),并且它们共享一个IP地址。HTTP1.1的请求消息和响应消息都应支持Host头域,且请求消息中如果没有Host头域会报告一个错误(400 Bad Request)。

⑤.长连接,HTTP1.1支持长连接(PersistentConnection)和请求的流水线(Pipelining)处理,在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟,在HTTP1.1中默认开启Connection: keep-alive,一定程度上弥补了HTTP1.0每次请求都要创建连接的缺点。

二、HTTP2.0 新特性

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

②.多路复用(MultiPlexing),即连接共享,即每一个request都是是用作连接共享机制的。一个request对应一个id,这样一个连接上可以有多个request,每个连接的request可以随机的混杂在一起,接收方根据request的 id将request再归属到各自不同的服务端请求里面。

③.header压缩,如上文中所言,对前面提到过HTTP1.x的header带有大量信息,而且每次都要重复发送,HTTP2.0使用encoder来减少需要传输的header大小,通讯双方各自cache一份header fields表,差量更新HTTP头部,只发送改变的,既避免了重复header的传输,又减小了需要传输的大小。

④.服务端推送(server push),同SPDY一样,HTTP2.0也具有server push功能。

三、HTTP3.0 新特性

HTTP 3.0,也称为HTTP over QUIC(Quick UDP Internet Connections),是基于UDP协议的下一代HTTP协议。相对于HTTP 2.0,HTTP 3.0引入了一些新的特性和改进:

①.基于UDP协议:HTTP 3.0使用QUIC协议(Quick UDP Internet Connections)代替了TCP协议作为传输层协议。UDP协议相比TCP协议具有更低的延迟和更好的拥塞控制,能够提供更好的性能和效率。

②.0-RTT连接建立:HTTP 3.0引入了0-RTT(Zero Round-Trip Time)连接建立。这意味着客户端可以在第一次连接时发送加密数据,而无需等待服务器的响应,从而减少了握手的延迟。

③.多路复用:HTTP 3.0保留了HTTP 2.0的多路复用特性,允许在一个连接上同时发送多个请求和响应。这可以减少连接的数量,提高网络的利用率和性能。

④.头部压缩:HTTP 3.0使用了与HTTP 2.0相同的头部压缩机制,可以减小请求和响应的头部大小,减少了网络传输的开销。

⑤.服务器推送:HTTP 3.0支持服务器推送,服务器可以在客户端请求之前主动将资源推送给客户端,从而加快页面加载速度,提供更好的用户体验。

⑥.容错性:HTTP 3.0具有更好的容错性,当网络发生变化时,可以更快地恢复连接,避免了TCP的连接重启所需的握手延迟。

这些新特性使得HTTP 3.0在性能、效率和安全性方面有所提升。然而,由于HTTP 3.0仍然处于实验阶段,并且在广泛部署和普及方面还存在一些挑战,因此在实际应用中还未得到广泛支持。

四、协议特性对比

特性 HTTP 1.0 HTTP 1.1 HTTP 2.0 HTTP 3.0
并发连接数量 单一请求一个连接 多个请求多个连接 多个请求单一连接 多个请求多个连接
请求流水线 不支持 支持 支持 支持
请求头压缩 不支持 不支持 支持 支持
数据压缩 不支持 不支持 支持 支持
二进制传输 不支持 不支持 支持 支持
多路复用 不支持 不支持 支持 支持
服务器推送 不支持 不支持 支持 支持
加密 可选 可选 可选 强制
连接建立优化 不支持 不支持 支持 支持
QUIC协议使用 不支持 不支持 不支持 支持

五、解决的核心问题

协议版本 解决的核心问题 解决方式
0.9 HTML 文件传输 确立了客户端请求、服务端响应的通信流程
1.0 不同类型文件传输 设立头部字段
1.1 创建/断开 TCP 连接开销大 建立长连接进行复用
2 并发数有限 二进制分帧
3 TCP 丢包阻塞 采用 UDP 协议

需要注意的是,HTTP 1.1目前仍然是最广泛使用的HTTP协议版本。这些不同版本的HTTP协议在性能、效率、安全性和功能方面有所不同,HTTP 2.0和HTTP 3.0在多路复用、头部压缩和服务器推送等方面进行了较大的改进和优化,提供了更好的性能和用户体验。HTTP 3.0作为最新的版本,目前仍在发展和探索中,尚未得到广泛支持。

猜你喜欢

转载自blog.csdn.net/qq_34402069/article/details/131144337
今日推荐