除了 HTTP1.1 你还应该知道 HTTP/2 和 HTTP/3

HTTP 协议全称是超文本传输协议(Hypertext Transfer Protocol),这里面需要理解三个地方:超文本、传输、协议,下面就从 HTTP 协议的历史讲起。

20 世纪 60 年代,美国国防部高等研究计划署(ARPA)建立了 ARPA 网,它有四个分布在世界各地的节点,被认为是互联网的始祖。

到了 70 年代,基于对 ARPA 网络的实践和思考,研究人员发明出了著名的 TCP/IP 协议,并在 80 年代中期进入了 UNIX 内核,使更多计算机接入了互联网。

1.HTTP 诞生

在这里插入图片描述
这位大师叫蒂姆·伯纳斯·李(Tim Berners-Lee),是万维网的创始人,简单点说,是当代互联网的创始人。

在 1989 年,他发表了一篇论文,提出了在互联网上构建超链接文档系统的构想,在这篇论文里他确立了三项关键技术:

URI:统一资源标识符,作为互联网上资源的唯一标识
HTML:超文本标记语言,描述超文本文档
HTTP:超文本传输协议,用来传输超文本
这三项技术直接奠定了我们当今 Web 世界的技术,蒂姆把它称为万维网(World Wide Web)。

所以,1989 年,HTTP 诞生了。

2.HTTP/0.9

在 20 世纪 90 年代初,互联网世界还是一片荒漠,计算机处理能力低下,存储容量小,网速很慢。网络上的绝大多数资源都是纯文本资源,所以 HTTP 协议也是纯文本格式的。

为了便于服务器和客户端处理,蒂姆最初设想的系统里的文档都是只读的,所以只允许用户通过 GET 请求从服务器上获取 HTML 文档,并且在响应之后立即关闭连接,功能非常有限。

这一版 HTTP 协议虽然很简单,但是作为一个原型,充分验证了 Web 服务的可行性。

3.HTTP/1.0

1993 年,美国国家超级计算应用中心(NCSA)开发出了 Mosaic,是第一个可以图文混排的浏览器,随后又在 1995 年开发出了服务器软件 Apache,简化了 HTTP 服务的搭建工作。

同一时期,在 1992 年发明了 JPEG 图像格式,1995 年发明了 MP3 音乐格式。

这些新技术的出现,促使 HTTP 协议开始添加各种特性,从用户需求的角度促进了 HTTP 协议的发展。

在已有实践的基础上,经过一系列的草案,HTTP/1.0 在 1996 年正式发布。

1.主要增加了以下几部分内容:

  • 增加了 HEAD/POST 等新方法
  • 增加了响应状态码 增加了版本号
  • 增加了 Header 头部的概念
  • 增加了Content-Type,传输数据不再仅限于文本

但是 HTTP/1.0 并不是一个标准,只是记录已有实践和模式的一份参考文档,不具有实际的约束力,相当于一个备忘录。

4.HTTP/1.1

1999 年,HTTP/1.1 发布了 RFC 文档,编号为 2616,从版本号我们就可以看到,HTTP/1.1 是对 HTTP/1.0 的小幅度修正。但是一个重要区别是,它是一个正式的标准,而不是一份参考文档。但是 HTTP/1.1 说是小幅度修正也不太确切,这里面主要变更点有:

1.增加了以下几部分内容:

  • 增加了 PUT/DELETE/OPITIONS 等新方法
  • 增加了缓存控制和管理 Cache Control
  • 明确了连接管理,允许持久连接 Keepalive 允许响应数据分块,利于传输大文件(Chunked)
  • 强制要求 Host 头

我们当今世界的所有知名网站,都是在这个时间点左右创立的,可以说有了 HTTP/1.1,才开创了 Web 1.0、Web 2.0 时代。

不过,由于 HTTP/1.1 太过庞大和复杂,因此在 2014 年又进行了一次修订,拆分为六份较小的文档,7230 /7231/7232/7233/7234/7235

这六份文档增加了两个大的需求:

2.需求:

  • 加大了 HTTP 的安全性,比如使用 TLS 协议
  • 让 HTTP 可以支持更多的应用,目前已经支持四种网络协议
  • 传统的短连接
  • 可重用 TCP 的长连接模型
  • 服务端 PUSH 模型
  • WebSocket 模型
  • HTTP/2

3.HTTP/1.1 存在两个问题:

1.连接慢,请求是串行的,需要保证顺序,例如一个网页中可能会有多个资源
2.性能差,HTTP/1.1 是以文本的方式,借助 CPU 的 zip 压缩方式减少网络带宽,但是耗费了 前端和后端的 CPU

2010 年,Google 推出了新的 SPDY 协议,并应用于自家的服务器,HTTP/2 就是以 SPDY 为基础的,它的特点主要是:

1.使用二进制传输,不再是纯文本
2.可以在一个 TCP 连接中并发多个 HTTP 请求,移除了 HTTP/1.1 中的串行请求
3.使用 HPACK 算法来压缩头部
4.允许服务器主动向客户端推送数据
5.增强了安全性,基于 TLS 协议

5.HTTP/3

HTTP/2 的主要问题有队头阻塞问题,也就是说,若干个 HTTP 请求在复用一个 TCP 的连接,那么一旦发生丢包,造成的问题就是所有的请求都必须等待这个丢了的包重传回来,哪怕这个包不是我这个 HTTP 请求的。

基于此,Google 发明了 QUIC(Quick UDP Internet Connections)协议,它是基于 UDP 的。因此,它就解决了以下几个问题:

UDP 是无序的,因此不存在队头阻塞问题
QUIC 有一套自己的丢包重传和拥塞控制的协议
HTTPS 握手通常需要六次网络交互,QUIC 直接将 TLS 和 TCP 合并成了三次握手
在这里插入图片描述

所以,QUIC 是一个在 UDP 之上的伪 TCP + TLS + HTTP/2 的多路复用协议。在未来,QUIC 协议成熟了的话,是有可能取代 TCP 协议的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值