1.基础概念
HTTP/1.0 是 Web 通信的奠基协议,1996年正式发布,定义了客户端与服务器之间的基本请求-响应模型。
HTTP/1.0是无状态、无连接的应用层协议。

1.1 短连接
短连接:每次请求都要建立连接,每次请求都需要完整地经历 TCP 三次握手 → 发送请求 → 接收响应 → 关闭连接这个循环。一个网页如果包含 10 张图片,就需要建立 11 次独立的 TCP 连接,开销极大。
如果要长连接,需要使用 keep-alive 参数建立长连接、HTTP1.1默认长连接keep-alive,无法复用连接,每次发送请求都要进行TCP连接,TCP的连接释放都比较费事,会导致网络利用率低
1.2 无状态
服务器不保存任何客户端的上下文信息,每次请求对服务器来说都是全新的。这保证了协议的简洁性,但也使得登录状态等需要额外机制(如 Cookie)来实现。
HTTP/1.0 定义了最初的状态码体系,分为五类:
| 类型 | 范围 | 含义 | 典型示例 |
|---|---|---|---|
| 信息 | 1xx | 请求已收到,继续处理 | 100 Continue |
| 成功 | 2xx | 请求成功 | 200 OK, 201 Created |
| 重定向 | 3xx | 需进一步操作 | 301 Moved Permanently |
| 客户端错误 | 4xx | 请求有误 | 404 Not Found |
| 服务器错误 | 5xx | 服务器处理失败 | 500 Internal Server Error |
1.3 缓存
在HTTP1.0中主要使用header里的协商缓存 Last-modified\if-modified-since,强缓存 Expires来做为缓存判断的标准,If-Modified-Since。 Expires是RFC 2616(HTTP/1.0)协议中和网页缓存相关字段。用来控制缓存的失效日期。
Expires 字段声明了一个网页或 URL 地址不再被浏览器缓存的时间,一旦超过了这个时间,浏览器都应该联系原始服务器。RFC告诉我们:“由于推断的失效时间也许会降低语义透明度,应该被谨慎使用,同时我们鼓励原始服务器尽可能提供确切的失效时间。”
1.4 基础的方法
在官方 RFC 1945 标准中,HTTP/1.0 仅定义了以下三个方法:
| 方法 | 描述 | 典型用途 |
|---|---|---|
| GET | 请求读取由 URL 标识的信息。 | 浏览网页、下载图片。 |
| POST | 向服务器提交数据(如表单),数据包含在请求体中。 | 提交注册表单、上传文件。 |
| HEAD | 与 GET 类似,但服务器只返回响应头,不返回实体内容。 | 检查文件是否存在、查看文件最后修改时间(节省流量)。 |
2.存在的问题
2.1 队头阻塞
队头阻塞(head of line blocking),由于HTTP1.0规定下一个请求必须在前一个请求响应到达之前才能发送,假设前一个请求响应一直不到达,那么下一个请求就不发送,后面的请求就阻塞了。
2.2 其他问题
HOST域。认为每个服务器绑定唯一一个IP地址 ,因此在请求消息的URL中没有主机名,HTTP1.0没有host域。而现在在一台服务器上可以存在多个虚拟主机,并且它们共享一个IP地址。
无断点续传。HTTP1.0不支持断点续传功能,每次都会传送全部的页面和数据。如果只需要部分数据就会浪费多余带宽