迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 网络 >

HTTP2 教程——HTTP2的前世今生

作者:迹忆客 最近更新:2023/01/08 浏览次数:

HTTP最初是由timberners-Lee提出的,他是万维网的先驱,设计应用程序协议时考虑到了简单性,以便在Web服务器和客户机之间执行高级数据通信功能。

HTTP的第一个有文档记录的版本是于1991年发布的HTTP0.9,后来HTTP1.0在1996年的正式引入。HTTP1.1随后于1997年发布,此后就几乎没有再得到迭代改进。

http-timeline

2015年2月,互联网工程任务组(IETF)HTTP工作组修订了HTTP,并以HTTP/2的形式开发了应用协议的第二个主要版本。2015年5月,HTTP/2实现规范正式标准化,以响应谷歌的HTTP兼容SPDY协议。

什么是协议?

HTTP/2与HTTP1的讨论必须从这篇资源中经常使用的术语Protocol开始。协议是一组规则,用于管理客户端(例如internet用户用于请求信息的web浏览器)和服务器(包含请求信息的机器)之间的数据通信机制。

协议通常由三个主要部分组成:Header、Payload 和 Footer。放在有效负载前面的报头包含诸如源地址和目标地址等信息以及关于有效负载的其他细节(例如大小和类型)。有效载荷是使用协议传输的实际信息。Footer跟在有效负载后面,并作为控制字段将客户端-服务器请求与Header一起路由到预期的收件人,以确保有效负载数据的传输没有错误。

mail-http2

该系统类似于邮政服务。信件(有效载荷)被插入一个写有目的地地址的信封(Header),并在发送前用胶水和邮票(Footer)密封。不过,以0和1的形式传输数字信息并不是那么简单,需要一种新的维度创新,以应对互联网使用爆炸性增长带来的技术进步。

HTTP协议最初由基本命令组成:GET,从服务器检索信息;POST,将请求的信息传递给客户端。这个简单而明显乏味的一组数据获取和发布响应的命令基本上构成了构建其他网络协议的基础。该协议是改善互联网用户体验和有效性的又一举措,需要HTTP/2实现来增强在线状态。 详细了解HTTP协议可以查看我们的 HTTP教程

HTTP2 设计和技术目标

自20世纪90年代初成立以来,HTTP只经历了几次重大的改革。最新版本的HTTP1.1已经在网络世界服务了15年。在当前信息动态更新、资源密集型多媒体内容格式和过度倾向于Web性能的时代,Web页面已将旧的协议技术置于遗留类别中。这些趋势要求对HTTP/2进行重大更改,以改善互联网体验。HTTP1.1 的不足 一文介绍了HTTP1.1的一些缺陷

早期版本的 HTTP 协议的设计初衷主要是实现要简单: HTTP/0.9 只用一行协议就启动了万维网;HTTP/1.0 则是对流行的 HTTP/0.9 扩展的一个正式说明;HTTP 1.1 则是 IETF 的一份官方标准;请参阅 HTTP 简史。 因此,HTTP/0.9-1.x 实现了其目的: HTTP 是应用最广泛、采用最多的一个互联网应用协议。

然而,实现简单是以牺牲应用性能为代价的: HTTP/1.x 客户端需要使用多个连接才能实现并发和缩短延迟;HTTP/1.x 不会压缩请求和响应标头,从而导致不必要的网络流量;HTTP/1.x 不支持有效的资源优先级,致使底层 TCP 连接的利用率低下;等等。

这些限制并不是致命的,但是随着网络应用的范围、复杂性以及在我们日常生活中的重要性不断增大,它们对网络开发者和用户都造成了巨大负担,而这正是 HTTP/2 要致力于解决的:

HTTP/2 通过支持标头字段压缩和在同一连接上 进行多个并发交换,让应用更有效地利用网络资源,减少 感知的延迟时间。具体来说,它可以对同一连接上的请求和响应消息进行交错 发送并为 HTTP 标头字段使用 有效编码。 > HTTP/2 还允许为请求设置优先级,让更重要的请求更快速地完成,从而进一步 提升性能。 出台的协议更有利于网络,因为与 HTTP/1.x 相比,可以使用更少的 TCP 连接。 > 这意味着与其他流的竞争减小,并且连接的持续时间变长,这些特性反过来提高 了可用网络容量的利用率。 最后,HTTP/2 还可以通过使用二进制消息分帧对消息进行更高效 的处理。 (超文本传输协议版本 2,草案 17)

需要注意的是,新的 HTTP 版本是对其前身的扩展,预计不会很快取代 HTTP1.1。HTTP/2 实现不会自动支持 HTTP1.1 可用的所有加密类型,但肯定会在不久的将来为更好的替代方案或其他加密兼容性更新打开大门。然而,HTTP/2 与 HTTP1 和 SPDY 与 HTTP/2 等功能比较仅表明最新的应用程序协议在性能、安全性和可靠性等方面都是赢家。HTTP2 功能升级 中介绍了一些它对HTTP1.1进行的一些升级

HTTP2 安全加密

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

如何在 Go 中重用 Http 连接

发布时间:2023/01/17 浏览次数:139 分类:Go

HTTP 1.1 协议支持 HTTP 持久连接,也称为 HTTP Keep-Alive 。 这允许客户端和服务器在发送多个 HTTP 请求/响应时重新使用相同的底层 TCP 连接。 因此,客户端不是为每个 HTTP 请求建立连接,而

Golang httptest 的示例

发布时间:2023/01/17 浏览次数:139 分类:Go

当我第一次了解到它的 HTTP 测试包时,Go (Golang) 给我留下了深刻的印象。 在其他编程语言中,我习惯于做很多测试 HTTP 服务器的工作。 在 Go (Golang) 中,情况并非如此。 有一个很棒的测

Golang Http Server 的示例

发布时间:2023/01/16 浏览次数:184 分类:Go

Golang 在其标准库中直接提供了一个可用于处理 http 协议的包。 net/http 包。 在这篇文章中,我们将探索 net/http 包的功能以及我们如何使用它来运行我们自己的 http 服务器。 我们要查看

Golang httptrace 的示例

发布时间:2023/01/16 浏览次数:238 分类:Go

httptrace 包是从 Go1.7 开始包含在 Go (Golang) 标准库中的新包。 如果我们想要监控 http 请求的性能,或者如果我们想要收集和监控有关我们的 http 客户端的统计信息,该包将非常有用。 主

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便