前言
在如今 HTTP/3 已经问世的时代,回看 1991 年诞生的 HTTP/0.9,你会惊讶于它的简单。当时它仅为了一个目标而生:传输体积微小的 HTML 文件。虽然它早已退出了历史舞台,但它奠定的“请求-响应”模型至今仍是互联网的基石。
一、 HTTP/0.9 的核心特点
在那个网络需求极其简单的年代,HTTP/0.9 呈现出以下三个显著的“极简”特征:
- 单行请求,无头无体: 客户端发送的请求中只有请求行(Request Line),没有请求头(Headers)和请求体(Body)。因为当时的目的非常明确——就是获取某个 HTML 文件。
- 裸奔响应,直接传输内容: 服务器接收请求后,不返回任何响应头(Response Headers),直接开始传输数据。服务器不需要告诉客户端内容的类型、长度或编码,因为默认全都是 HTML。
- 纯文本传输(ASCII 字符流) : 所有返回的内容均以 ASCII 字符流 传输。由于不支持图片、视频等二进制文件,这种设计在当时是完全够用的。
二、 HTTP/0.9 的请求完整流程
HTTP/0.9 的生命周期遵循严格的“一次连接,一份数据”原则:
-
建立 TCP 连接: 基于 TCP 协议,客户端根据 IP 地址和端口(当时默认为 80)与服务器建立连接。这个过程即经典的 TCP 三次握手。
-
发送 GET 请求: 连接建立后,客户端发送一行简单的指令。
示例:
GET /index.html -
服务器响应: 服务器读取对应的 HTML 文件,不做任何多余动作,直接将数据以 ASCII 字符流 的形式推送到 TCP 通道中。
-
断开连接: 一旦 HTML 文档传输完成,服务器会立即发起 TCP 断开连接(四次挥手)。
三、 技术局限性与历史演进
为什么 HTTP/0.9 无法适应现代互联网?
- 无法传输多媒体:仅支持 ASCII 文本。
- 无状态管理:没有 Cookie 或 Session 的载体(Header)。
- 响应语义缺失:没有状态码(如 404, 500),如果请求出错,服务器只能返回一个包含错误描述的 HTML 页面,客户端无法通过程序逻辑快速判断。
下篇预告: 随着多媒体需求爆发,HTTP/1.0 是如何通过引入“请求头”和“响应头”来解决这些问题的?