5.3.1 通信->HTTP3超文本传输协议标准(IETF RFC 9114):HTTP(HypetText Transfer Protocol)

一、核心特性

  1. 无状态性 :
    不保存客户端与服务器之间的交互状态,每次请求是独立的------服务器不会记住上一次请求的信息
    • 通过 Cookie、Session、Token 等机制补充状态管理(例如登录后服务器返回 Cookie,后续请求携带 Cookie 即可识别用户)
  2. 无连接性 (http/1.0特性):
    1.0 规定每次请求 - 响应完成后,TCP 连接就会断开,频繁请求会导致大量 TCP 握手 / 断开开销
    • 1.1 引入持久连接(Keep-Alive),默认开启,TCP连接可复用,处理多个请求后再断开;2 进一步通过多路复用提升连接效率
  3. 明文传输 :
    HTTP 传输的数据未加密,直接以明文形式在网络中传输,存在被窃听、篡改的风险
    • HTTPS(HTTP over SSL/TLS)通过加密和证书验证解决此问题,是目前主流的安全传输方式

二、HTTP 请求 - 响应模型

请求流程

客户端(如浏览器)向服务器发送请求,服务器处理后返回响应,全程基于 TCP 可靠连接

  1. 客户端与服务器建立 TCP 连接(三次握手)
  2. 客户端发送 HTTP 请求报文
  3. 服务器解析请求,处理业务逻辑(如查询数据库、读取文件)
  4. 服务器返回 HTTP 响应报文
  5. 客户端解析响应,渲染内容(如浏览器展示网页)
  6. 基于 Keep-Alive 决定是否保持 TCP 连接

请求报文结构

HTTP 请求报文由请求行、请求头、空行、请求体四部分组成

  • 请求行
    包含请求方法、请求 URL、HTTP 版本 ,格式:请求方法 URL HTTP版本
    示例:GET /index.html HTTP/1.1
  • 请求头
    键值对形式,传递附加信息 (如客户端类型、接受的数据格式),常见字段:
    • Host:目标服务器域名(如Host: www.example.com
    • User-Agent:客户端标识(如浏览器型号、系统版本)
    • Accept:客户端可接受的响应数据类型(如Accept: text/html, application/json
    • Cookie:携带客户端状态信息
    • Content-Type:请求体的数据格式(如Content-Type: application/json,仅 POST/PUT 等带请求体的方法需要)
  • 空行
    分隔请求头和请求体,必须存在(即使无请求体)
  • 请求体
    仅 POST、PUT 等方法包含,传递需要提交的数据(如表单信息、JSON 数据)

响应报文结构

HTTP 响应报文由状态行、响应头、空行、响应体四部分组成

  • 状态行
    包含 HTTP 版本、状态码、状态描述 ,格式为:HTTP版本 状态码 状态描述
    示例:HTTP/1.1 200 OK
  • 响应头
    键值对形式,传递服务器信息和响应附加数据 ,常见字段:
    • Server:服务器软件标识(如Server: Nginx/1.21
    • Content-Type:响应体的数据格式(如Content-Type: text/html; charset=utf-8
    • Content-Length:响应体的字节长度
    • Set-Cookie:服务器向客户端设置 Cookie
    • Cache-Control:缓存控制策略(如Cache-Control: max-age=3600
  • 空行
    分隔响应头和响应体
  • 响应体
    服务器返回的实际数据(如 HTML 页面、JSON 字符串、图片二进制数据)

三、常见请求方法

HTTP 定义了多种请求方法,用于表示对资源的操作意图,核心方法如下:

方法 作用 是否带请求体 幂等性 主要参数位置 次要 / 补充参数位置 特殊说明
GET 获取服务器上的资源(如网页、图片) 否(参数可拼在 URL 后) 是(多次请求结果一致) URL 查询字符串(?key=value 无(请求头极少用) 禁止放请求体;URL 长度有限制;明文传输,敏感数据不适用
POST 向服务器提交数据(如表单提交、创建资源) 否(多次提交可能产生不同结果,如重复创建订单) 请求体(Body) URL 查询字符串 请求体格式由Content-Type指定(JSON / 表单 / 文件等);无大小硬限制
PUT 更新服务器上的资源(全量更新) 是(多次更新结果一致) 请求体(Body) URL 路径(资源 ID)+ 查询字符串 URL 通常指定资源唯一标识(如/users/10),请求体传完整更新数据
DELETE 删除服务器上的资源 否 / 是 URL 路径(资源 ID)+ 查询字符串 请求体(特殊场景) 规范推荐 URL 传参;请求体传参需服务器支持(如批量删除{"ids":[10,20]}
HEAD 仅获取响应头(不返回响应体),用于检查资源状态 URL 查询字符串(?key=value 无(请求头极少用) 与 GET 参数规则完全一致,仅返回响应头,无响应体
PATCH 更新服务器上的资源(部分更新) 请求体(Body) URL 路径(资源 ID)+ 查询字符串 URL 指定资源标识,请求体传部分更新字段 (如仅改name,无需传完整数据)

幂等性:多次执行相同请求,结果与执行一次的结果一致(保证操作安全)

四、HTTP 状态码

状态码是服务器返回的三位数字,用于表示请求的处理结果,分为 5 类:

1xx(信息性状态码)

表示服务器已接收请求,正在处理,如:

  • 100 Continue客户端可继续发送请求体(用于大请求的预检)

2xx(成功状态码)

表示请求成功处理,如:

  • 200 OK请求成功,响应体返回数据
  • 201 Created资源创建成功(如 POST 创建用户)
  • 204 No Content请求成功,但无响应体(如 DELETE 删除资源)

3xx(重定向状态码)

表示需要客户端进一步操作(如跳转),如:

  • 301 Moved Permanently永久重定向(如域名更换)
  • 302 Found临时重定向
  • 304 Not Modified资源未修改,使用客户端缓存(节省带宽)

4xx(客户端错误状态码)

表示请求存在错误(客户端问题),如:

  • 400 Bad Request请求参数错误或格式非法
  • 401 Unauthorized请求需要身份验证(未登录)
  • 403 Forbidden服务器拒绝访问(权限不足)
  • 404 Not Found请求的资源不存在(如访问不存在的网页)
  • 405 Method Not Allowed请求方法不被允许(如用 GET 请求修改资源)

5xx(服务器错误状态码)

表示服务器处理请求时出错,如:

  • 500 Internal Server Error服务器内部未知错误(如代码 bug)
  • 502 Bad Gateway网关 / 代理服务器收到上游服务器的无效响应
  • 503 Service Unavailable服务器暂时不可用(如过载、维护)
  • 504 Gateway Timeout网关 / 代理服务器请求上游服务器超时

五、HTTP 版本演进

HTTP/0.9(1991 年)

  • 最早期版本,仅支持 GET 方法,无请求头 / 响应头,仅传输 HTML 文本,功能极简

HTTP/1.0(1996 年)

  • 支持 GET、POST、HEAD 方法
  • 引入请求头、响应头,支持多种数据类型(图片、视频等)
  • 每次请求对应一个 TCP 连接(无连接性),效率低

HTTP/1.1(1999 年,目前主流)

  • 默认开启持久连接(Keep-Alive),复用 TCP 连接
  • 支持管道化请求(客户端可连续发送多个请求,无需等待响应)
  • 引入 Host 头,实现一台服务器托管多个域名(虚拟主机)
  • 新增 PUT、DELETE、PATCH 等方法,完善资源操作
  • 支持分块传输(Transfer-Encoding: chunked),边生成数据边传输

HTTP/2(2015 年)

  • 多路复用:一个 TCP 连接可同时处理多个请求 / 响应(解决 HTTP/1.1 的队头阻塞问题)
  • 二进制帧:将报文拆分为二进制帧传输,解析效率更高
  • 服务器推送:服务器可主动向客户端推送资源(如网页依赖的 CSS/JS 文件)
  • 头部压缩:对请求头 / 响应头进行压缩,减少传输体积

5. HTTP/3(2022 年)

  • 基于 QUIC 协议(UDP 之上的可靠传输协议),替代 TCP,解决 TCP 队头阻塞问题
  • 更快的连接建立(无需三次握手),优化移动端网络切换(如 4G/5G 切换)
  • 目前逐步普及,主流 CDN 和浏览器已支持

六、HTTP 与 HTTPS 的区别

特性 HTTP HTTPS
安全性 明文传输,无加密 基于 SSL/TLS 加密传输,防窃听、篡改、伪造
端口 80 443
证书 无需 需要 CA 颁发的数字证书(验证服务器身份)
性能 无加密开销,速度稍快 加密 / 解密有开销,需握手,但 HTTP/2 可弥补
搜索引擎 无权重加成 搜索引擎优先收录,提升排名

七、常见应用场景

  • 网页浏览:浏览器通过 HTTP/HTTPS 请求网页、图片、JS/CSS 资源
  • API 接口:前后端分离项目中,前端通过 HTTP 请求后端 API(如 RESTful API)
  • 文件下载:通过 GET 请求下载文件(支持断点续传)
  • 物联网通信:设备通过 HTTP 向服务器上报数据或接收指令

HTTP 协议核心权威渠道

  1. HTTP 工作组规范汇总页(官方核心入口):

    https://httpwg.org/specs/,这里整合了 HTTP/1.1、HTTP/2、HTTP/3 等各版本的权威 RFC 文档链接,是获取官方规范的核心地址

  2. HTTP 工作组主页

    https://httpwg.org/,可了解工作组动态、规范制定进度等信息

  3. RFC 官方发布平台

    https://www.rfc-editor.org/,能检索到 HTTP 各版本对应的 RFC 文档(如 HTTP/1.1 对应 RFC 9112、HTTP/2 对应 RFC 9113、HTTP/3 对应 RFC 9114)

  4. 补充学习渠道

    MDN Web Docs 的 HTTP 专题(https://developer.mozilla.org/zh-CN/docs/Web/HTTP),虽非官方规范,但有详细的中文教程与参考,适合学习理解

相关推荐
先跑起来再说2 小时前
HTTP到底是什么?一次讲清楚
网络·网络协议·计算机网络·http
Java成神之路-2 小时前
域名与 IP 映射全解析:DNS 负载均衡与浏览器并发优化
网络协议·tcp/ip·负载均衡
我爱吃土豆12 小时前
HTTP首部讲解
后端·http·web
闻道且行之2 小时前
ESP32 搭建 HTTP 服务:接收图片并实时显示
网络·网络协议·http·esp32·tft_espi
Wzx1980122 小时前
HTTP深度解析
网络·网络协议·http
MinterFusion2 小时前
如何在Windows下查看本机的IP地址
网络·windows·tcp/ip·ip地址·明德融创
理人综艺好会2 小时前
http和https的了解
网络协议·http·https
Evand J2 小时前
计算机四级——《网络工程》科目,易错点总结【纯手工总结】
网络协议·网络安全·网络工程·计算机四级
特立独行的猫a2 小时前
ESP32小智AI的WebSocket 调试工具的实现,小智AI后台交互过程揭秘(二、技术原理与实现过程详解 )
人工智能·websocket·网络协议·esp32·调试工具·小智ai