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


基于澎湃的技术发展和用户需求 , HTTP0.9肯定无法满足大众的需要 , 最基本的就是网页中不只有纯粹的HTML文本了 , 还有图片 , 音频 , 视频等等 。因此ASCII编码肯定满足不了各种媒体的编码方式 。
于是HTTP1.0就引入了请求头和响应头 , 通过这样的方式来让客户端和服务器进行协商 , 在发起请求的时候 , 浏览器会告诉服务器我期望你返回给我什么类型的文件 , 采取什么样的压缩方式等等 。
在客户端发送请求行与服务器协商的时候 , 可能有些需求服务器是处理不了的 , 于是就需要服务器返回给客户端一个状态 , 告知客户端处理的结果 , 这样就引入了状态码 。
同时为了减轻服务器的访问压力 , HTTP1.0还提供了Cache的缓存机制 。
你看 , 所有的技术发展 , 都是由客户需求推动的 。
HTTP1.0是我们能在RFC中最早可查阅的关于HTTP的一份规范性文档 , 哦抱歉 , 说是规范有点不太贴切 , HTTP1.0还并不算是一个规范 , 在原文中叫做memo , 也就是算是一个备忘录 。我们可以在RFC的目录中筛选一下 , 找到这个:

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

文章插图
我们可以看到 , 到目前为止 , 关于HTTP的第一份文档就是在1996年五月份的这份RFC1945 , 它在最开始有这么一段话:
This memo provides information for the Internet community.This memo does not specify an Internet standard of any kind.Distribution of this memo is unlimited.
大致意思就是说 , 这个备忘录提供了一些关于在网络上通信的讨论 。并且本备忘录不定义任何类型的互联网标准 , 并且本协议允许随意传播 。然后 , 我们还可以在下面的文章内容中找到一个关于RFC1945所囊括的范围是什么的一句话:
This document defines both the 0.9 and 1.0 versions of the HTTP protocol.
本文档定义了0.9和1.0两个HTTP版本 。换句话说 , 在RFC1945中 , 也就是到了HTTP1.0的时候 , 才真正的形成了一份类似文档的备忘录 , 但是 , 它还算不上是标准 。可以从文档内容看得出来1.0比0.9多了好多好多东西 。
HTTP/1.1:我是真标准而随着互联网的继续发展 , 网景的 Netscape Navigator 和微软的 Internet Explorer 开始了著名的“浏览器大战” , 都希望在互联网上占据主导地位 。这场大战的商业意义和纠纷我们暂且不提 , 但是它确实 , 实实在在的推动了Web的发展 , 在1999年 , HTTP1.1版本正式出现 , 此刻的HTTP协议才算是一个真正的标准 , 所有要用到HTTP的应用或者设备都必须遵守该协议 。
那我想问你个问题 , 基于RFC的文档 , 是直接从1.0就到了1.1么?中间没有别的了?首先1.0版本的RFC编号是1945 , 而1.1版本的编号想必大家耳熟能详就是2616 , 当然RFC可不仅仅只是为HTTP服务的 , 所以通过编号的跨度好像也不能解答我上面的问题 。
但是 , 这张图可以:
真正“搞”懂HTTP协议03之时间穿梭

文章插图
从上图我们着重看一下RFC1945、RFC2068、RFC2616 , 换句话说 , 当1.0版本的备忘录出现之后 , 到RFC2616的1.1版本 , 中间还有个RFC2068 , 当然 , 我们从上图中也可以看到RFC2068已经被RFC2616覆盖了 , 并且2616也被7230等后续文档所完善和覆盖 。

经验总结扩展阅读