HTTP协议发展历程

Posted WindrunnerMax

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HTTP协议发展历程相关的知识,希望对你有一定的参考价值。

HTTP协议发展历程

​HTTP​​​超文本传输协议是一个用于传输超文本文档的应用层协议,它是为​​Web​​​浏览器与​​Web​​​服务器之间的通信而设计的,​​HTTP​​​协议到目前为止全部的版本可以分为​​HTTP 0.9​​​、​​HTTP 1.0​​​、​​HTTP 1.1​​​、​​HTTP 2.0​​​、​​HTTP 3.0​​​,其中现在普遍应用的版本是​​HTTP 1.1​​​版本,正在推进​​HTTP 2.0​​​版本,以及未来的​​HTTP 3.0​​版本。

HTTP 0.9

​HTTP 0.9​​​也被称为单行协议,最初版本的​​HTTP​​​协议并没有版本号,后来它的版本号被定位在​​0.9​​​ 以区分后来的版本,​​HTTP 0.9​​​极其简单,请求由单行指令构成,以唯一可用方法​​GET​​​开头,其后跟目标资源的路径。​​HTTP 0.9​​​的响应内容并不包含​​HTTP​​​头,这意味着只有​html​​文件可以传送,无法传输其他类型的文件,也没有状态码或错误代码,出现异常时一个特殊的包含问题描述信息的​​HTML​​文件将被响应返回。

特点

  • 只有一个请求行,并没有​​HTTP​​请求头和请求体。
  • 服务器没有返回头信息,只返回数据信息。
  • 第三个是返回的文件内容是以ASCII 字符流来传输的,因为都是HTML 格式的文件,所以使用ASCII 字节码来传输是最合适的。

HTTP 1.0

​HTTP 1.0​​​构建了可扩展性,为了满足传输多种类型文件的需求,为了让客户端和服务器能更深入地交流,​​HTTP 1.0​​​引入了请求头和响应头,它们都是以为​​Key-Value​​​形式保存的,在​​HTTP​​发送请求时,会带上请求头信息,服务器返回数据时,会先返回响应头信息。

特点

  • 协议版本信息会随着每个请求发送,即​​HTTP 1.0​​​被追加到了​​GET​​行。
  • 引入请求头,在发起请求时候会通过​​HTTP​​请求头告诉服务器它期待服务器返回什么类型的文件、采取什么形式的压缩、提供什么语言的文件以及文件的具体编码。
  • 引入响应头,服务器以请求头中信息准备数据,并以响应头的信息告诉客户端数据采用何种格式返回,倘若遇到不支持的格式,只能返回服务器支持的格式,并在响应头中体现,也就是说最终浏览器是以响应头的信息解析数据。
  • 引入状态码,状态码会在响应开始时发送,使浏览器能了解请求执行成功或失败,并相应调整行为。
  • 引入了缓存机制,通过状态码与​​If-Modified-Since​​​、​​Expires​​等控制更新或使用本地缓存。
  • 引入了​​Content-Type​​​头,使​​HTTP​​​具备了传输除纯文本​​HTML​​文件以外其他类型文档的能力。

HTTP 1.1

​HTTP 1.1​​​是标准化的协议,​​HTTP 1.1​​消除了大量歧义内容并引入了多项改进。

特点

  • 缓存处理,​​HTTP 1.1​​​引入了更多的缓存控制策略,例如​​Entity tag​​​、​​If-Unmodified-Since​​​、​​If-Match​​​、​​If-None-Match​​等更多可供选择的缓存头来控制缓存策略。
  • 带宽优化以及网络连接的使用,在请求头中引入了​​range​​​,它允许只请求资源的某一个部分,即返回​​206​​​状态码,这样方便了开发者自由选择以便充分利用带宽和链接,并且可以使用​​Range​​​和​​Content-Range​​制作断点续传功能。
  • 错误通知的管理,在​​HTTP 1.1​​​中新增了​​24​​个错误状态码。
  • 增加​​Host​​​请求头,能够使不同域名配置在同一个​​IP​​地址的服务器上。
  • 支持长连接,​​HTTP 1.1​​​支持长连接,在一个​​TCP​​​连接上可以传输多个​​HTTP​​​请求和响应,减少了建立和关闭连接的消耗和延迟,在​​HTTP 1.1​​​中默认开启​​Connection:keep-alive​​​,一般浏览器对于同一个域名允许同时建立​​6​​个长链接。
  • 增加管线化技术,允许在第一个应答被完全发送之前就发送第二个请求,以改善队头阻塞问题,但响应的顺序还是会按照请求的顺序返回。
  • 支持响应分块,通过设置​​Transfer-Encoding: chunked​​进行分块响应,允许响应的数据可以分成多个部分,配合服务端尽早释放缓冲可以获得更快的响应速度。

HTTP 2.0

​HTTP 2.0​​​拥有更优异的表现,现网页愈渐变得的复杂,甚至演变成了独有的应用,媒体的播放量,增进交互的脚本大小也增加了许多,更多的数据通过​​HTTP​​​请求被传输,由此​​HTTP 2.0​​为网络效率做了大量的优化。

特点

  • 二进制分帧,​​HTTP 2.0​​是二进制协议而不是文本协议,将所有传输的信息分割为更小的消息和帧,并对它们采用二进制格式的编码。
  • 多路复用,并行的请求能在同一个链接中处理,在同一域名下所有访问都是从同一个​​TCP​​​连接中走,​​HTTP​​​消息被分解为独立的帧,服务端根据标识符和首部将消息重新组装起来,移除了​​HTTP 1.1​​中顺序和阻塞的约束。
  • 压缩​​header​​​,​​header​​在一系列请求中常常是相似的,其移除了重复和传输重复数据的成本。
  • 服务端推送,服务器可以主动地向客户端推送资源,而无需客户端明确的请求。

HTTP 3.0

​HTTP 3.0​​​目前处于制订和测试阶段,是未来的全新的​​HTTP​​​协议,​​HTTP 3.0​​​协议运行在​​QUIC​​​协议之上,是在​​UDP​​​的基础上实现了可靠传输,权衡传输速度与传输可靠性并加以优化,使用​​UDP​​​将避免​​TCP​​​的队头阻塞问题,并加快网络传输速度,但同样需要实现可靠传输的机制,​​HTTP 3.0​​​不是​​HTTP 2.0​​​的拓展,​​HTTP 3.0​​将会是一个全新的协议。

每日一题

https://github.com/WindrunnerMax/EveryDay

参考

https://www.lizenghai.com/archives/67621.html
https://www.chainnews.com/zh-hant/articles/401950499827.htm
https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Basics_of_HTTP/Evolution_of_HTTP

以上是关于HTTP协议发展历程的主要内容,如果未能解决你的问题,请参考以下文章

HTTP基础知识(用一万字帮助你入门)

图解 HTTP 的前世今生!

httpd版本协议详解

一文了解阿里云CDN HTTP2.0

http2.0的时代真的来了...

什么是http2.0?