HTTP-协议溯源:从极简 HTTP/0.9 到奠基者 HTTP/1.0

0 阅读3分钟

前言

互联网的初期,网页只是简单的纯文本。随着多媒体需求的爆发,HTTP 协议经历了一次史诗级的进化。本文将带你回顾这段历史,理解请求头、响应头以及状态码这些我们每天都在使用的技术是如何诞生的。

一、 HTTP/0.9:为纯文本而生的“单行协议”

背景: 1991 年发布,当时仅用于传输体积微小的 HTML 文件。

1. 核心特点

  • 极致精简:只有一个请求行(如 GET /index.html),没有请求头和请求体
  • 无语义响应:服务器不返回任何头信息,直接传输数据。
  • 纯文本传输:数据均以 ASCII 字符流 传输,无法处理图片、视频等二进制数据。

2. 请求流程

  1. 建立连接:基于 TCP 协议,进行三次握手
  2. 发送请求:发送单行 GET 命令。
  3. 返回数据:服务器读取 HTML 并以字符流形式返回。
  4. 断开连接:数据传输完毕,立即断开 TCP 连接。

二、 HTTP/1.0:开启多媒体传输的新纪元

产生背景: 互联网高速发展,浏览器需要展示 JavaScript、CSS、图片、音视频等多种类型的文件。HTTP/1.0 的核心诉求就是支持多种类型文件的下载

1. 核心新特性

  • 引入请求头与响应头:通过 Headers 协商传输细节,支持多媒体传输。
  • 引入状态码:让浏览器知道请求是成功(200)还是失败(404/500)。
  • Cache 机制:支持缓存已下载数据,减轻服务器压力。
  • 用户代理 (User-Agent) :统计客户端基础信息(如系统版本、浏览器类型)。

2. 新增请求头和响应头:强大的 Headers

HTTP/1.0 允许客户端通过请求头告诉服务器它的“喜好”,服务器再通过响应头进行确认。

🔹 客户端的“期望”(Request Headers)

Accept: text/html             /* 期望返回的文件类型 */
Accept-Encoding: gzip, br     /* 期望的压缩方式 */
Accept-Charset: utf-8         /* 期望的字符编码 */
Accept-Language: zh-CN, zh    /* 期望的优先语言 */
User-Agent: Mozilla/5.0...    /* 客户端的基础信息 */

🔹 服务器的“反馈”(Response Headers)

服务器根据客户端的期望,处理后告知其实际结果:

Content-Type: text/html; charset=UTF-8  /* 实际返回的类型与编码 */
Content-Encoding: br                    /* 实际采用的压缩算法 */

三、 总结与思考

HTTP/1.0 的出现彻底改变了万维网的面貌,它引入的头部字段状态码直到今天依然是 HTTP 协议的核心。

⚠️ 存在的局限: 虽然 HTTP/1.0 功不可没,但它依然延续了 HTTP/0.9 的一个致命弱点:每个 TCP 连接只能发送一个请求。在那个网页图片越来越多的时代,频繁建立和断开 TCP 连接造成了巨大的性能开销。这也引出了我们下一篇的主角——HTTP/1.1 与持久连接