HTTP 协议全称是超文本传输协议(Hypertext Transfer Protocol),这里面须要理解三个地方:超文本、传输、协议,下面就从 HTTP 协议的历史讲起。html
20 世纪 60 年代,美国国防部高等研究计划署(ARPA)创建了 ARPA 网,它有四个分布在世界各地的节点,被认为是互联网的始祖。前端
到了 70 年代,基于对 ARPA 网络的实践和思考,研究人员发明出了著名的 TCP/IP 协议,并在 80 年代中期进入了 UNIX 内核,使更多计算机接入了互联网。算法
这位大师叫蒂姆·伯纳斯·李(Tim Berners-Lee),是万维网的创始人,简单点说,是当代互联网的创始人。后端
在 1989 年,他发表了一篇论文,提出了在互联网上构建超连接文档系统的构想,在这篇论文里他确立了三项关键技术:浏览器
这三项技术直接奠基了咱们当今 Web 世界的技术,蒂姆把它称为万维网(World Wide Web)。缓存
因此,1989 年,HTTP 诞生了。安全
在 20 世纪 90 年代初,互联网世界仍是一片荒漠,计算机处理能力低下,存储容量小,网速很慢。网络上的绝大多数资源都是纯文本资源,因此 HTTP 协议也是纯文本格式的。服务器
为了便于服务器和客户端处理,蒂姆最初设想的系统里的文档都是只读的,因此只容许用户经过 GET 请求从服务器上获取 HTML 文档,而且在响应以后当即关闭链接,功能很是有限。网络
这一版 HTTP 协议虽然很简单,可是做为一个原型,充分验证了 Web 服务的可行性。并发
1993 年,美国国家超级计算应用中心(NCSA)开发出了 Mosaic,是第一个能够图文混排的浏览器,随后又在 1995 年开发出了服务器软件 Apache,简化了 HTTP 服务的搭建工做。
同一时期,在 1992 年发明了 JPEG 图像格式,1995 年发明了 MP3 音乐格式。
这些新技术的出现,促使 HTTP 协议开始添加各类特性,从用户需求的角度促进了 HTTP 协议的发展。
在已有实践的基础上,通过一系列的草案,HTTP/1.0 在 1996 年正式发布。主要增长了如下几部份内容:
Content-Type
,传输数据再也不仅限于文本可是 HTTP/1.0 并非一个标准,只是记录已有实践和模式的一份参考文档,不具备实际的约束力,至关于一个备忘录。
1999 年,HTTP/1.1 发布了 RFC 文档,编号为 2616,从版本号咱们就能够看到,HTTP/1.1 是对 HTTP/1.0 的小幅度修正。可是一个重要区别是,它是一个正式的标准,而不是一份参考文档。可是 HTTP/1.1 说是小幅度修正也不太确切,这里面主要变动点有:
Cache Control
Keepalive
咱们当今世界的全部知名网站,都是在这个时间点左右创立的,能够说有了 HTTP/1.1,才开创了 Web 1.0、Web 2.0 时代。
不过,因为 HTTP/1.1 太过庞大和复杂,所以在 2014 年又进行了一次修订,拆分为六份较小的文档,7230 /7231/7232/7233/7234/7235
这六份文档增长了两个大的需求:
HTTP/1.1 存在两个问题:
2010 年,Google 推出了新的 SPDY 协议,并应用于自家的服务器,HTTP/2 就是以 SPDY 为基础的,它的特色主要是:
HTTP/2 的主要问题有队头阻塞问题,也就是说,若干个 HTTP 请求在复用一个 TCP 的链接,那么一旦发生丢包,形成的问题就是全部的请求都必须等待这个丢了的包重传回来,哪怕这个包不是我这个 HTTP 请求的。
基于此,Google 发明了 QUIC(Quick UDP Internet Connections)协议,它是基于 UDP 的。所以,它就解决了如下几个问题:
因此,QUIC 是一个在 UDP 之上的伪 TCP + TLS + HTTP/2 的多路复用协议。在将来,QUIC 协议成熟了的话,是有可能取代 TCP 协议的。
关注公众号领取二十套技术图谱