HTTP协议的进化史:从HTTP/0.9到HTTP/3,你了解吗?

概述

从HTTP/1到HTTP/3, 没错,今天我们的主题就是带领大家去了解HTTP整个发展历史

根据不完全统计数据,目前全球网站数量约为2.5亿个,其中活跃网站数量约为1.8亿个,每秒钟的网站访问量约为60,000次左右,每天的网站访问量约为51.8亿次。

alt

可以说滲透了我们生活的方方面面,而你知道所有这些的都是建立在什么之上吗?就是http,全称:超文本传输协议。属于应用层协议,是万维网数据通信的基础。

http的发展历史可以分为以下几个阶段

alt

1991年的http0.9,1996年的http1.0 1997年的http1.1 2015年的http2 2022年的http3,接下来我们一个个来讲

HTTP/0.9

我们从HTTP/0.9开始,它是HTTP的第一个版本,于1991年发布。它非常简单,只支持GET请求方法,响应为HTML格式的文本,没有请求头和响应头。这个版本的HTTP被设计为一种简单的文件传输协议,它只能传输静态文本文件,没有任何动态内容。

alt

HTTP/1.0

那时间来到了1996年,http1.0发布,相对于HTTP/0.9,它引入了很多新的特性。首先,它支持多种请求方法,包括GET、POST、PUT、DELETE等,这使得HTTP变得更加灵活。其次,它引入了请求头和响应头,这些头部信息可以包含很多有用的数据,如内容长度、缓存控制等。

alt

然而,HTTP/1.0仍然存在一些问题。首先,每个请求都需要建立一个新的TCP连接,TCP是个重协议,这会导致很多的网络开销。其次,HTTP/1.0没有处理并发请求的机制,这会导致浏览器需要等待前一个请求完成后才能发送下一个请求。这些问题限制了HTTP/1.0的性能和效率。

alt

HTTP/1.1

所以http1.1就在1997年发布了,相比于http1.1又带来了哪些升级呢?

第一个重要升级就是,通过在header中引入Connection: keep-alive,支持持久连接。它允许多个请求和响应在同一个TCP连接中进行,这避免了每个请求都需要建立一个新的TCP连接的问题。

alt

第二个重要升级是,支持管道化技术,它可以让浏览器同时发送多个请求,不用等待服务器返回。提高了并发性能。虽然它解决了http1.0的两个问题,但其自身也存在缺点

alt

那就是队头堵塞,HTTP/1.1 所有的数据通信都是按次序完成的,服务器只有处理完一个请求,才会处理下一个请求,如果前面的请求处理特别慢,后面就会有很多请求排队等着,严重影响整个页面加载

alt

HTTP/2

为了解决http1.1的问题,基于Google发布的SPDY协议,http2于2015年发布,它又带来了哪些升级呢?

首先支持首部压缩,HTTP/2做了两件事

第一,减少头部信息数据大小,通过HPACK算法将头信息压缩后再发送。

alt

第二,减少信息发送次数,客户端和服务端同时维护一张头信息表,所有字段都会存入这个表,以后请求只要发送不同字段即可,这样就提高速度了

alt

其次支持多路复用,通过单一连接可以发送多个的请求-响应消息,不用按照顺序一一对应,这就避免了队头堵塞问题,每个请求或回应的所有数据包,称为一个数据流(stream),每个数据流都有一个独一无二的编号来区分。数据流的最小单位是帧,帧会组成消息数据包,多个消息数据包组成流,一个tcp连接里,可并发许多流。

alt
alt

最后http2支持服务端推送,即允许服务端未经请求,主动向客户端发送资源。从此浏览器告别long polling, 这可以减少浏览器的请求次数和等待时间,从而提高页面加载速度。 alt

HTTP/3

接下来2022年发布了HTTP/3,进一步提高了性能和安全性。

与前面几个版本相比,HTTP/3采用QUIC协议,QUIC协议是一种基于UDP协议的新型协议,它可以减少连接建立的延迟和丢包率,从而提高网络性能。

alt

首先quic的建连更快,我们知道TCP需要三次握手,耗费3RTT才能实现数据传输,QUIC基于UDP只需0RTT就能实现数据传输,即可以让浏览器在第一次连接时就发送请求 alt

其次HTTP/3还支持连接迁移,它可以让客户端在不同网络无缝的切换,而tcp在切换网络的时候要不断的重连,无法做到那么丝滑。这个因为quic通过一个64 位的随机数作为 ConnectID 来标识连接。不同的网络,但是ConnectID是一样的,所以其依旧是同一条连接

alt

总的来说,HTTP的发展历史经历了不断的完善和优化,从最初的简单协议逐渐演变为复杂而高效的协议。每个版本的改进都是为了解决前一个版本存在的问题和不足,并进一步提高HTTP的性能和效率。

alt

资料

一篇文章彻底了解HTTP发展史-腾讯云开发者社区-腾讯云

Making the Web Faster with HTTP 2.0 - ACM Queue

本文由 mdnice 多平台发布

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值