真正“搞”懂HTTP协议03之时间穿梭

上一篇我们简单的介绍了一下DoD模型和OSI模型,还着重的讲解了TCP的三次握手和四次挥手,让我们在空间层面 , 稍稍宏观的了解了HTTP所依赖的底层模型,那么这一篇 , 我们来追溯一下HTTP的历史,看一看HTTP在历史上经历了哪些发展和过程,才让这个协议一直经久不衰 。
最开始 , 在20世纪60年代,也就是1950年到1960年之间,那时候我爹还没出生呢……但是美国国防部高等研究计划署(ARPA)建立了ARPA网,他有四个分布在各地的节点 , 被认为是互联网的始祖 。信息时代的号角也在此刻吹响,人们即将迎来快速发展的网络时代 。
在70年代,我爹五六岁的时候,基于对 ARPA 网的实践和思考,研究人员发明出了著名的 TCP/IP 协议 。由于具有良好的分层结构和稳定的性能,TCP/IP 协议迅速战胜其他竞争对手流行起来,并在 80 年代中期进入了 UNIX 系统内核,促使更多的计算机接入了互联网 。
你看,这些东西存活了这么久,可以说是经历了无数的实践和总结,是我们最需要去学习和学懂的底层的不变的知识 。这也是为什么网络基础是大学计算机专业一门十分重要的学科的原因 。
换句话说,这些东西是我们作为程序员所需要学习的那些不变的知识 。
从一篇论文开始在1989年的一个夏天,这时候我还没出生,时任欧洲核子研究中心的蒂姆·伯纳斯 - 李(Tim Berners-Lee)在一个明媚的下午,终于完成了他耗费心血的一篇论文 , 提出了在互联网上构建超链接文档系统的构想 。在这篇论文中,他确立了三项核心技术:URI、HTML和HTTP 。
【真正“搞”懂HTTP协议03之时间穿梭】而这个时候 , 想必HTTP的发明者也不一定可预见HTTP会在未来发展到如此地步 。
HTTP/0.9:宏伟的蓝图在20世纪90年代,这个时候我刚出生没多久,互联网世界非常的简陋,计算机的处理能力也不行,存储能力就更别提了,最主要的是体积还大的不行 。能在网上看看新闻都是天大的奇迹了 。这个时候的网速当然也十分有限,所以在网络上使用的协议也都是以纯文本传输,也就能看看纯文字的内容,嗯~~废了这么大劲,我还不如去看报纸,确实,这时候报纸要远比网页好看 , 毕竟报纸还能有黑白图片 。
基于这样的背景,此时的HTTP设计的也十分简陋,采用了纯文本的格式,并且只有GET方法从服务器获取HTML文档,并且在响应请求后立即关闭连接,仅仅只是这样 。
但,正是因为最开始的HTTP如此简单,才在未来赋予了它无限的可能 。因为,把简单的变复杂,远比把复杂的变简单要容易很多 。
那么我们简单总结下这个时候的HTTP的特点:

  1. 只有请求行 , 没有请求头和请求体(这样说不太准确,我们后面再聊) 。
  2. 服务器也不会返回任何头信息,只返回客户端想要的数据就可以了 。
  3. 返回的文本内容是用ASCII字符流来传输的 。
HTTP/1.0:不标准的标准虽然HTTP0.9这么简单,但是它已经可以满足当时的需求了 。不过 , 随着世界的发展,在1994年底出现了拨号上网服务,同年网景推出了一款浏览器,从此万维网就不再是单纯的限制于学术交流,而是进入了高速发展的阶段 。并且在这个时期,还出现了JPEG的图片格式,以及MP3格式等 。也就是说,大众对于媒体展示的需求越发的缤纷了起来 。
基于澎湃的技术发展和用户需求,HTTP0.9肯定无法满足大众的需要,最基本的就是网页中不只有纯粹的HTML文本了,还有图片,音频,视频等等 。因此ASCII编码肯定满足不了各种媒体的编码方式 。
于是HTTP1.0就引入了请求头和响应头,通过这样的方式来让客户端和服务器进行协商 , 在发起请求的时候 , 浏览器会告诉服务器我期望你返回给我什么类型的文件 , 采取什么样的压缩方式等等 。
在客户端发送请求行与服务器协商的时候,可能有些需求服务器是处理不了的,于是就需要服务器返回给客户端一个状态,告知客户端处理的结果,这样就引入了状态码 。
同时为了减轻服务器的访问压力 , HTTP1.0还提供了Cache的缓存机制 。
你看,所有的技术发展 , 都是由客户需求推动的 。
HTTP1.0是我们能在RFC中最早可查阅的关于HTTP的一份规范性文档,哦抱歉,说是规范有点不太贴切 , HTTP1.0还并不算是一个规范 , 在原文中叫做memo , 也就是算是一个备忘录 。我们可以在RFC的目录中筛选一下 , 找到这个:

推荐阅读