← 返回文章列表
知识分享

HTTP 通俗解读:各版本区别、怎么工作、以及 HTTPS 是什么

HTTP(Hypertext Transfer Protocol,超文本传输协议)是浏览器、手机 App 和服务器在打开网页、调用 API 时最常用的「对话规则」。在应用层它大体上是面向文本的(即便线路上的字节被压缩或加密):客户端发请求,服务器回响应,每一次交互都由方法(如 GET、POST)、URL头字段和可选的正文共同描述。

这篇文章说明 HTTP 怎么工作、主要版本有何不同,以及 HTTPS 多做了什么。

基本流程

  1. 客户端(浏览器、App)与服务器建立连接(常见是 TCP;纯 HTTP 常用端口 80,HTTPS 常用 443)。
  2. 客户端发出 HTTP 请求:方法、路径、头,有时还带正文(表单、JSON、上传文件等)。
  3. 服务器返回 HTTP 响应状态码(200、404、500……)、头,以及通常一段正文(HTML、JSON、图片二进制等)。

HTTP 本身不规定加密,也单独完成「强认证服务器身份」。因此才有 HTTPS语义上还是 HTTP,但传输层由 TLS 保护(详见 《用通俗语言理解 TLS》)。

方法与状态码(速查)

常见方法:

方法典型用途
GET读取资源;原则上不应改变服务端状态;常可缓存。
POST提交数据、创建资源或触发动作。
PUT整体替换某一资源。
PATCH部分更新。
DELETE删除资源。
HEAD与 GET 类似,但不要正文(只要头)。
OPTIONS说明允许的方法(CORS 预检会用到)。

状态码(简化理解):

  • 2xx — 成功(如 200 OK、201 Created、204 No Content)。
  • 3xx — 重定向(301 永久,302/307/308 等表示临时或语义略有差别的跳转)。
  • 4xx — 客户端问题(400 请求无效、401 未授权、403 禁止、404 未找到等)。
  • 5xx — 服务端错误(500 内部错误、502 网关错误、503 不可用等)。

具体含义仍取决于业务实现;这些码是客户端与服务器之间的共同约定

各版本 HTTP 有何不同

每一版都保留同一套思路(请求/响应、URL、方法、状态码),但改变了连接上如何组帧性能能力

HTTP/0.9(历史)

  • 只有 GET,没有版本行、没有头;响应就是原始 HTML。
  • 淘汰,仅作历史了解。

HTTP/1.0(RFC 1945,历史)

  • 引入版本号请求/响应头多种方法非 HTML 的媒体类型。
  • 常见做法是每个 TCP 连接只跑一个请求(响应后关连接),页面资源一多就很慢。

HTTP/1.1(至今仍极常见)

  • 默认持久连接:同一条 TCP 上连续发多个请求(keep-alive),减少握手开销。
  • 分块传输、更细的缓存规则(Cache-ControlETag、条件 GET 等)。
  • 必须有 Host 头(虚拟主机:同一 IP 上挂很多站点)。
  • 可选 pipelining(不等上一个响应就发下一个)——浏览器里很少真正用起来,因为队头阻塞等问题。

痛点: 很多小请求在同一条连接上仍要排队(HTTP 层的队头阻塞);而且头字段往往冗长、每条请求重复

HTTP/2(RFC 7540)

  • 线路上是二进制分帧(不像1.x 那样一眼可读),但从应用视角语义与 HTTP/1.1 一致
  • 多路复用:多条请求/响应在同一条 TCP 上并行,减轻 HTTP 层的队头阻塞。
  • 头部压缩(HPACK),减少重复头。
  • 服务器推送(主动推资源)——实际中用得不多,更多靠正常响应 + 缓存策略。

注意: HTTP/2 仍基于一条 TCPTCP 层面的队头阻塞还在:某个包丢了,这条连接上的所有流都可能短暂卡住,等重传恢复。

HTTP/3(RFC 9114 —— 基于 QUIC)

  • QUIC 跑在 UDP 上,而不是「TCP +另起一层的 TLS」;TLS 1.3 嵌在 QUIC 里。
  • 流相互独立:丢包主要影响丢包那条流,不必拖垮整条连接——在丢包多或移动网络上往往更稳。
  • 握手更快(往往更少往返就能建立加密并完成首个请求)。
  • 连接迁移(QUIC 特性):Wi‑Fi 与蜂窝之间切换理论上更顺滑,实际还取决于客户端、服务器和中间网络设备。

部署: 大站和 CDN 上 HTTP/3 越来越常见;HTTP/1.1HTTP/2 仍会长期并存。

版本对照简表

版本典型承载多路复用备注
HTTP/1.0TCP常是一连接一请求。
HTTP/1.1TCP无(pipelining 可选且受限)Keep-alive;简单;仍有队头阻塞。
HTTP/2TCP(公网 Web 上常配合 TLS)有(二进制帧)TCP 丢包仍可能短暂拖住所有流。
HTTP/3QUIC(UDP + TLS 1.3)为减少「跨流」阻塞而设计;协议栈较新。

浏览器与服务器会协商版本(例如 TLS 上的 ALPN 协商 HTTP/2 / HTTP/3;老路径还有 Upgrade 等)。用户一般不会手动选 HTTP/3;是否开启是基础设施层面的选择。

HTTPS 是什么?

HTTPS = HTTP + TLS(早年常说「SSL」,但 SSL 已废弃,现在都是 TLS)。URL 里是 https://;默认端口 443

TLS 大致提供:

  • 机密性 — 链路上的第三方在实际上难以读懂隧道里的正文和大部分敏感元数据。
  • 完整性 — 能发现篡改。
  • (通常)服务端身份 — 客户端校验服务器证书(也可以双向证书,较少见)。

因此:HTTP 是「请求/响应怎么写」;HTTPS同一套写法,但字节走在 TLS 隧道里。应用层说的仍是 HTTP;安全通道在下面。

重要边界: HTTPS 不等于「这个网站可信」,只说明你与这个主机名之间的连接是加密的,且证书链校验通过。钓鱼站一样可以上 HTTPS。

实用小结

  • 正式环境的 网站与 API,应默认按 HTTPS 规划;纯 HTTP 多作为遗留或仅内网场景。
  • HTTP/1.1 仍是兼容性最好的底线;HTTP/2 在 TCP 上做多路复用;HTTP/3 用 QUIC 针对延迟与丢包优化。
  • 调性能时,版本只是一环;缓存体积应用与数据库延迟CDN 等往往同样关键。

延伸阅读