HTTP 请求/响应报文结构

解释 HTTP 请求和响应报文的结构及其组成部分。

网络协议 中等 HTTP HTTP协议 网络基础

HTTP 报文是在客户端与服务器间传输数据的基本单元,分为两类:请求报文(客户端发出)和 响应报文(服务器回复)。结构均由 首部(headers)和 主体(body)组成,以空行分隔。核心组件如下:

一、HTTP 请求报文结构

  1. 请求行(Request Line):
    • 包含空格分隔的三个字段:请求方法(如 GET、POST)、资源 URI 和协议版本。
    • 示例:
      GET /index.html HTTP/1.1
      
    • HTTP 方法解释:
      • GET: 获取资源
      • POST: 提交数据
      • PUT: 更新资源
      • DELETE: 删除资源
        HTTP/1.1 必须在首部包含 Host 字段
  2. 请求头部(Headers):
    • Key-value 格式,每个字段占一行,描述请求信息如 Content-TypeAuthorization
    • 示例:
      Host: www.example.com
      User-Agent: Chrome/123
      Accept: application/json
      
  3. 空行
    • 必需,标记首部结束。
  4. 请求体(Body – 可选):
    • 用于携带如表单或 JSON 数据,通常用于 POST/PUT 方法。

二、HTTP 响应报文结构

  1. 状态行(Status Line):
    • 包含空格分隔的三个字段:协议版本、状态码和状态短语。
    • 示例:
      HTTP/1.1 200 OK
      
  2. 响应头部(Headers):
    • 描述响应信息如 ServerContent-Length
    • 示例:
      Server: Apache/2.4
      Content-Type: text/html
      
  3. 空行
    • 同上,必需。
  4. 响应体(Body – 可选):
    • 包含返回数据,如 HTML 文档或 API 响应。

关键扩展技术点

  • 压缩传输:使用 Content-Encoding: gzip/deflate 减小体积提高效率。
  • 分块传输:通过 Transfer-Encoding: chunked 将大文件分段发送。
  • 范围请求:请求头加入 Range: bytes=start-end,支持断点续传(如状态码 206)。