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. 网络编程HTTP协议进化史

    2023-12-17 00:54:06       46 阅读
  2. HTTPQUIC:网络协议演进与优化

    2023-12-17 00:54:06       22 阅读
  3. DNSHTTPS

    2023-12-17 00:54:06       38 阅读
  4. Http协议Http缓存

    2023-12-17 00:54:06       7 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-17 00:54:06       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-17 00:54:06       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-17 00:54:06       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-17 00:54:06       20 阅读

热门阅读

  1. 【Python基础】循环语句

    2023-12-17 00:54:06       31 阅读
  2. 会话技术+请求转发+重定向

    2023-12-17 00:54:06       36 阅读
  3. Delete、Truncate、Drop的区别有哪些,该如何选择

    2023-12-17 00:54:06       38 阅读
  4. uniapp组件map地图组件使用

    2023-12-17 00:54:06       37 阅读
  5. SpringBoot 3.0 升级之 Swagger 升级

    2023-12-17 00:54:06       35 阅读
  6. (第38天)RAC 修改 IP 信息

    2023-12-17 00:54:06       38 阅读
  7. 前端(二)

    2023-12-17 00:54:06       32 阅读
  8. 使用Python实现蒙特卡罗算法

    2023-12-17 00:54:06       37 阅读
  9. C#基础——面向对象(封装 继承 多态)

    2023-12-17 00:54:06       45 阅读
  10. ca-certificates.crt解析加载到nssdb中

    2023-12-17 00:54:06       40 阅读
  11. Go中的工作池:并发任务的优雅管理

    2023-12-17 00:54:06       36 阅读
  12. 快速学习C++中的模板

    2023-12-17 00:54:06       35 阅读
  13. [笔记] wsl2 下使用 qemu/grub 模拟系统启动(多分区)

    2023-12-17 00:54:06       38 阅读