01-http协议发展历史

发布时间 2023-05-10 00:25:12作者: 这人穷的很

超文本传输协议

http是一种用于分布式协作超媒体信息系统的应用程序级协议。它是一种通用的、无状态的协议,可用于超文本之外的许多任务,例如域名服务器和分布式对象管理系统。

HTTP 允许浏览器和服务器进行通信。它构成了 Web 服务器执行最基本操作的基础。HTTP 经历了多个阶段。超文本传输协议第 3 版(HTTP/3)的最新草案于 2021 年 5 月 27 日发布。

HTTP/0.9

蒂姆伯纳斯李是一位英国计算机科学家,也是万维网的发明者。他在 1989 年创建了单行 HTTP 协议。它只是返回一个网页。这个协议在 1991 年被命名为 HTTP/0.9。

它是一个简单的一页规范。它只有一种方法,GET后跟文档地址和可选的端口地址,并以回车 (CR) 和换行 (LF) 结束。

HTTP/0.9 有四个术语:连接、断开连接、请求和响应。

没有 HTTP 标头,没有状态/错误代码,没有 cookie,也没有其他现代功能。

HTTP/0.9 建立在 TCP(传输控制协议)之上。响应后立即终止连接。

HTTP/1.0

1996 年,HTTP/1.0 发布。该规范是显著扩大,并且支持三种请求方法:GET,Head,和POST。它还有其他术语:消息、资源、实体、客户端、用户代理、服务器、源服务器、代理、网关、隧道和缓存。

HTTP/1.0 相对于 HTTP/0.9 的改进如下:

每个请求都附加了 HTTP 版本。

在响应开始时发送状态代码。

请求和响应都包含 HTTP 报文头。

报文头中的元数据使协议具有灵活性和可扩展性。

内容类型能够传输 HTML 文件以外的文档。

但是,HTTP/1.0 不是官方标准。

HTTP/1.1

HTTP 的第一个标准化版本 HTTP/1.1 ( RFC 2068 ) 于 1997 年初发布,距HTTP/1.0 仅几个月之后。

HTTP / 1.1支持七种请求方法:OPTIONS,GET,HEAD,POST,PUT,DELETE,和TRACE。

img

HTTP/1.1 有额外的术语:表示、内容协商、变体、可缓存、第一手、显式过期时间、启发式过期时间、年龄、生命周期、语义透明和验证器。

HTTP/1.1 是 HTTP 1.0 的增强:

虚拟主机允许从单个 IP 地址提供多个域。

持久连接和流水线连接允许 Web 浏览器通过单个持久连接发送多个请求。

缓存支持节省了带宽并使响应速度更快。

img

分块编码允许在知道其总长度之前发送响应。这将启用动态生成的页面。

内容协商,包括语言、编码或类型,允许客户端和服务器就最适合交换的内容达成一致。

HTTP/1.1 在接下来的 15 年左右将非常稳定。

在此期间,出现了 HTTPS(安全超文本传输协议)。它是使用 SSL/TLS 进行安全加密通信的 HTTP 的安全版本。

自 2000 年以来,Web API 的真正潜力已得到认可。Roy Fielding 领导的一组专家发明了 REST,即表示状态转移。REST 是一种软件架构风格,它定义了一组在创建 Web 服务时要遵守的约束和标准。REST API 在 HTTP/1.1 及更高版本上工作。

HTTP/2

HTTP/2 旨在更有效地使用网络资源并减少延迟感知。它引入了一个新的二进制帧层,它不向后兼容 HTTP/1.x 服务器和客户端。

HTTP/2 的初稿使用 SPDY 作为其规范草案的工作基础。该规范于 2015 年发布。它具有附加术语:连接错误、端点、帧、对等方、接收方、发送方、流、流错误、中介和有效载荷主体。

img

HTTP/2 构建了对流量的并行化、优先化和流量控制:

通信是通过单个 TCP 连接与任意数量的双向流进行的。

它是一个多路复用协议。并行请求通过同一连接处理。

它提供了将一种资源优先于另一种资源的能力,从而将其置于响应行的头部。

它允许主动将表示从服务器推送到客户端。

它使用二进制协议而不是文本。这使其成为机器可读的并提高了性能。它还提高了整体的安全性。

请求和响应头被压缩。

帧在流上传送,数据帧有效载荷受流控制。

HTTP/3

随着越来越多的智能手机和便携式设备的出现以及越来越多的设备实现无线连接,整体网络响应时间也有所增加。HTTP/2 的队头阻塞问题会导致缓慢且无响应的用户体验。

由于 TCP 保证发送和接收数据包的顺序,丢失的数据包将停止所有流,即使它可能只影响其中一个。

HTTP/2 没有强制加密,容易受到流重用攻击以及压缩页头和 cookie 攻击。

HTTP/3 可以解决这些问题。

HTTP/3 是继 HTTP/1.1 和 HTTP/2之后的第三次重大修订。

目前,它仍然是一个草案。最新规范于 2021 年 5 月 27 日发布。它具有附加术语:中止、HTTP/3 连接和内容。

HTTP/3 是一种新的、快速、可靠且安全的协议,适用于所有形式的设备。 HTTP/3 没有使用 TCP,而是使用谷歌在 2012 年开发的新协议 QUIC。QUIC 运行在 UDP(用户数据保护协议)之上。 QUIC 提供本地多路复用,丢失的数据包仅影响数据丢失的流程。这解决了 HTTP/2 中的队头阻塞问题。

QUIC 为流数据和在流上发送的所有 HTTP/3 帧类型提供流量控制。

因此,所有帧头和有效载荷都受到流量控制。

请求和响应头由 QPACK 压缩,而不是 HTTP/2 中的 HPACK。

几个 HTTP/3 帧用于管理服务器推送。

HTTP/3 包括 TLS 1.3 加密。实际上,它充当 HTTPS。

HTTP/3 带来了革命性的变化,以提高 Web 性能和安全性。设置 HTTP/3 网站需要服务器和浏览器支持。

目前,谷歌云、Cloudflare和Fastly支持 HTTP/3。

Chrome、Firefox、Edge、Opera 和一些移动浏览器支持 HTTP/3。

我们可以去caniuse网站检查浏览器的支持性。

结论

我们已经走过了 HTTP/0.9、HTTP/1.0、HTTP/1.1、HTTP/2 和 HTTP/3。

未来的还会有哪些HTTP协议,我们无法预知,但是可以想到的是,一定会有新的协议出现,因为技术前进的脚步是从来不会停止的。