在上篇文章当中,我们详细介绍了 TCP/IP 框架当中的传输层协议TCP。在今天这篇文章当中,我将介绍基于TCP协议的网络应用层协议HTTP协议。虽然HTTP协议如今已经有30多年的历史了,但是在现在的AI时代,你调用后端API向云端服务发送提示词并等待结果,承载这一切的协议就是HTTP协议,它仍然是现在网络和数字世界的通用语言。

HTTP概述

HTTP(HyperText Transfer Protocol,超文本传输协议)是一种基于 TCP/IP 协议族的应用层通信协议,最初由 Tim Berners-Lee 于 1991 年设计,用于在万维网上传输 HTML 页面与资源。经过三十余年演进,它已成为互联网上应用最广泛的应用层协议之一,它是一个客户端请求和响应的标准协议,这个协议详细规定了浏览器和万维网服务器之间相互通信的规则。

通信规则规定了客户端发给服务器的内容格式,也规定了服务器发送给客户端的内容格式,客户端发给服务器的格式叫做"请求协议",服务端发给客户端的格式叫"响应协议"。

HTTP协议概述图


HTTP的格式和URL

HTTP URL格式图

Http,URL是一种很特殊的URI(统一资源标识符),包含了用于查找某个资源足够的信息,格式如下:

http://host:「:port」/「abc」
  • http表示要通过HTTP协议来定位网络资源。
  • host表示合法的 internet 主机域名或者 IP 地址。
  • port:指定一个端口号,为空则省略,使用 80 端口。
  • ABC 指定请求资源的 URI。如果 URL 中没有给出 ABC,那么当它作为请求 URI时,必须以/的形式给出。通常这个工作浏览器会自动处理。

HTTP协议的特点

  • 请求 - 响应模式

    HTTP 是典型的客户端 - 服务器(C/S)架构协议:永远由客户端主动发起请求,服务器接收并处理后返回响应。没有请求就不会有响应,服务器无法主动向客户端推送数据(HTTP/2 服务器推送、WebSocket 为扩展或替代方案)。

  • 无状态(Stateless)

    HTTP 协议本身不记录任何客户端的历史请求信息,每一次请求都是完全独立的。服务器默认不会 "记住" 上一次请求的用户身份与操作。

    这种设计简化了服务器实现,降低了资源消耗;但对于需要身份识别的场景(如登录、购物车),则通过 Cookie、Session、Token 等机制来补充状态管理 —— 这也是 AI API 使用 API Key、Authorization 头进行鉴权的底层原因。

  • 可扩展性强

    通过自定义消息头,HTTP 可以灵活扩展能力。从鉴权(Authorization)、内容协商(Accept)到缓存控制(Cache-Control),几乎所有新增的业务规则都可以通过头部字段实现,无需修改协议核心。AI 接口中的流式响应、速率限制等能力,也都依托 HTTP 头部完成交互。

  • 明文传输与安全扩展

    原生 HTTP 以明文形式传输数据,存在被窃听、篡改的风险。因此实际生产环境中几乎都使用HTTPS(HTTP over TLS/SSL),在传输层加入加密层,保障数据传输的机密性与完整性。

  • 媒体类型无关(灵活)

    HTTP 不限制传输的数据类型。只要通过Content-Type声明正确的媒体类型,就可以传输文本、JSON、图片、音频、视频、二进制流等任意格式的数据 —— 这也是它能承载 AI 生成的图片、语音、流式文本等多样内容的基础。

  • 无连接 无连接表示每次连接只处理一个请求。服务器处理完客户的请求并收到客户的应答后,即断开连接。采用这种方法可以节省传输时间。


HTTP的请求

一个 HTTP 请求报文由三部分构成:请求行、请求头、请求体。

(1)请求行

位于报文第一行,包含三个要素:请求方法、请求 URI、协议版本。

示例: plaintext

POST /v1/chat/completions HTTP/1.1

常见请求方法

  • GET:获取资源,请求参数通常拼接在 URL 中,无请求体,幂等。
  • POST:提交数据、创建资源,请求体携带数据,非幂等。绝大多数 AI 接口的调用都使用 POST 方法。
  • PUT:全量更新资源,幂等。
  • DELETE:删除指定资源。
  • HEAD:与 GET 类似,但只返回响应头,不返回响应体,用于检查资源是否存在。
  • OPTIONS:查询服务器支持的方法与跨域规则,常用于 CORS 预检请求。
  • PATCH:局部更新资源。

(2)请求头(Request Headers)

由多行键值对组成,用于向服务器传递客户端的附加信息,如客户端身份、可接受的数据格式、鉴权凭证等。

(3)空行

分隔请求头与请求体。

(4)请求体(Request Body)

可选部分,用于传递提交的数据。GET/HEAD 方法没有请求体,POST/PUT 等方法通常携带。AI 接口中,请求体一般是 JSON 格式,包含提示词、模型参数、生成配置等内容。

HTTP的响应

响应报文同样由三部分构成:状态行、响应头、响应体。

(1)状态行

包含协议版本、状态码、状态描述。

示例:

plaintext

HTTP/1.1 200 OK

状态码五大分类

  • 1xx 信息性:请求已接收,继续处理。如100 Continue

  • 2xx 成功:请求已正常处理。

    • 200 OK:请求成功
    • 201 Created:资源创建成功
    • 206 Partial Content:范围请求成功,常用于断点续传
  • 3xx 重定向:需要进一步操作才能完成请求。

    • 301 Moved Permanently:永久重定向
    • 302 Found:临时重定向
    • 304 Not Modified:资源未修改,可使用本地缓存
  • 4xx 客户端错误:请求存在问题,服务器无法处理。

    • 400 Bad Request:请求参数错误
    • 401 Unauthorized:未认证,鉴权失败(如 API Key 错误)
    • 403 Forbidden:已认证但无权限访问
    • 404 Not Found:资源不存在
    • 429 Too Many Requests:请求过于频繁,触发限流(AI 接口常见)
  • 5xx 服务器错误:服务器处理请求时发生异常。

    • 500 Internal Server Error:服务器内部错误
    • 502 Bad Gateway:网关错误
    • 503 Service Unavailable:服务不可用
    • 504 Gateway Timeout:网关超时

(2)响应头(Response Headers)

服务器向客户端返回的附加信息,如内容类型、内容长度、缓存策略、服务器信息等。

(3)空行

分隔响应头与响应体。

(4)响应体(Response Body)

服务器返回的实际数据。AI 对话接口中通常为 JSON 格式的生成结果,流式接口则为逐段返回的数据流。


HTTP 消息头

消息头(Header)是 HTTP 协议的 "控制面板",承载了鉴权、缓存、内容协商、跨域等几乎所有扩展能力。按用途可分为四大类:

1. 通用头(General Headers)

请求与响应中都可出现,描述整体传输行为。

  • Connection:控制连接是否保持,如keep-aliveclose
  • Cache-Control:缓存控制策略
  • Date:报文创建时间

2. 请求头(Request Headers)

仅出现在请求中,描述客户端的配置与需求。

  • Host:目标服务器的域名与端口,HTTP/1.1 必填
  • User-Agent:客户端身份标识(浏览器、SDK 等)
  • Accept:客户端可接受的响应内容类型,如application/json
  • Accept-Encoding:可接受的压缩编码,如gzip, deflate
  • Authorization:鉴权凭证,AI 接口中常用来传递 API Key 或 Token
  • Content-Type:请求体的数据格式,如application/json
  • Content-Length:请求体的字节长度
  • Referer:该请求头指明请求从哪里来,可以用来做统计工作,广告,和防盗链

3. 响应头(Response Headers)

仅出现在响应中,描述服务器的信息与规则。

  • Server:服务器软件标识
  • Content-Type:响应体的数据格式与编码
  • Content-Length:响应体的字节长度
  • Set-Cookie:向客户端设置 Cookie
  • Access-Control-Allow-Origin:跨域访问许可
  • X-RateLimit-Remaining:剩余请求次数(AI 限流接口常见)
  • Location:Location响应报头域,用于重定向接受者到一个新的位置,常用在更换域名的时候
  • Refresh:自动跳转单位时间是秒,可以在页面通过 meta 标签实现,也可以在后台实现

4. 实体头(Entity Headers)

描述请求体或响应体的元信息,如Content-TypeContent-LengthContent-EncodingLast-Modified等。