大话网络协议 - HTTP不同版本的演进及其区别

发布于:2025-07-08 ⋅ 阅读:(18) ⋅ 点赞:(0)

前言

大话网络协议这个系列,之前我们介绍过OSI七层模型和TCP/IP四层模型,也详细介绍过HTTPS协议及其实现加密通信的基本原理 【大话网络协议:HTTPS协议和HTTP协议有何不同?为什么HTTPS更安全】。而现今互联网的运行,离不开HTTP协议这个基石,但HTTP协议我们目前能看到多个不同版本,如HTTP/1.1, HTTP/2,HTTP/3等,那这些不同版本有何区别,具体应用场景如何?本篇我们就重点来聊聊HTTP协议中这些不同版本的异同。

HTTP协议简介

概述

HTTP(超文本传输协议 Hypertext Transfer Protocol)位于 OSI七层网络模型中的应用层,它的核心使命是实现分布式系统间的资源传输。它和 TCP/UDP这样的传输层协议间更多是一种协作关系。

请添加图片描述

HTTP协议,从设计之初, 就包含如下一些核心特性:

  • 无状态设计:服务器不保存客户端上下文信息
  • 请求/响应模型:基于标准的请求方法和状态码
  • 可扩展头部:通过Header字段实现元数据传输
  • 跨平台兼容:文本协议设计确保多系统互操作性

HTTP协议负责在客户端与服务器之间传输超文本资源。作为无状态协议,HTTP不保留客户端交互记录,每个请求独立处理。通过这个协议规范,统一了Web资源访问方式,可以兼容各类操作系统和设备,并可通过头部字段实现功能扩展。 是当今互联网世界的基础协议。

协议构成

HTTP通信基于请求/响应模型,通过TCP/IP协议栈传输:

请求报文结构
请添加图片描述

如:

POST /api/v1/users HTTP/1.1
Host: api.example.com
Content-Type: application/json
Authorization: Bearer xyz123
Content-Length: 48

{"name":"John","email":"john@example.com"}

响应报文结构

请添加图片描述

如:

HTTP/1.1 201 Created
Location: /api/v1/users/789
Content-Type: application/json
Date: Mon, 15 Jul 2024 09:28:53 GMT
Content-Length: 35

{"id":789,"status":"created"}

HTTP方法

HTTP方法定义了对网络资源的操作语义,可以用下表总结不同http方法的应用场景

方法 幂等性 安全性 应用场景 RESTful实践案例
GET 获取资源 查询用户信息
POST 创建资源/执行操作 新建订单
PUT 全量更新资源 更新用户资料
DELETE 删除资源 取消订单
PATCH 部分更新资源 修改订单地址
HEAD 获取头部元数据 检查资源是否存在
OPTIONS 获取服务器支持的方法 CORS预检请求

HTTP状态码

状态码是响应消息中,以三位数字表示的请求处理结果。

类别 常用状态码 技术含义 应用场景
1xx 101 协议切换 WebSocket升级
2xx 200/201/204 成功处理 资源创建成功
3xx 301/302/304 重定向/缓存有效 永久迁移/临时跳转
4xx 400/401/404 客户端错误 参数错误/未授权/资源不存在
5xx 500/502/503 服务器错误 服务崩溃/网关错误/过载

HTTP的不同版本和演进

演进路线

在这里插入图片描述

HTTP/0.9 (1991)

最初版本的 HTTP 协议并没有版本号,只是后来为了和后续版本区分,定义为了0.9版本。它基于Tim Berners-Lee博士为 CERN 内部文档传输设计的初始协议,也被称为单行协议(one-line)

这个协议极为简单:

请求:

GET /mypage.html

响应只包含页面文档本身, 也不存在消息头:

<html>
  这是一个非常简单的 HTML 页面
</html>

局限性也显而易见:

这个协议无法支持复杂Web应用,仅可以传输纯HTML文档,也没有状态码反映通信状态。

HTTP/1.0 (1996)

随着网络的发展,浏览器和服务器的应用快速增长,http协议也得到更多的应用。基于原协议增加了很多的特性,并在1996 整合到了标准文档 RFC 1945 中进行了标准化,并定义为了HTTP/1.0,但这个协议并非官方标准,是个狭义的标准化版本。

HTTP/1.0 的核心改进

  1. 引入版本标识(HTTP/1.0)
  2. 新增状态码(200/404等)
  3. 支持头部字段(Content-Type/Cache-Control)
  4. 扩展方法(POST/HEAD)

通信过程如:


网站公告

今日签到

点亮在社区的每一天
去签到