实用指南:HTTP报文格式

HTTP报文格式

一、HTTP 请求(客户端发给服务器)

请求由三部分构成:请求行 + 请求头 + 请求体(可选)。

  • 请求行:核心信息,格式为 请求方法 URL 协议版本
    例:GET /index.html HTTP/1.1(表示用 GET 方式获取/index.html资源,协议版本 1.1);
  • 请求头:键值对格式,传递额外信息(如客户端类型、支持的数据格式)
    浏览器”)、Cookie: sessionid=xxx(传递登录状态);就是例:User-Agent: Mozilla/5.0(告诉服务器 “我
  • 请求体:仅 POST、PUT 等方法使用,存放提交的数据(如表单信息、JSON 参数)
    例:username=test&password=123(表单提交)、{“name”:“test”,“age”:20}(JSON 数据)。

常见 HTTP 请求方法:

  • GET:获取资源(如浏览网页、查询数据),请求体为空,参数拼在 URL 后;
  • POST:提交资源(如登录、上传文件),参数存放在请求体,更安全;
  • PUT:更新资源(全量更新);
  • DELETE:删除资源;
  • HEAD:仅获取响应头(不返回响应体,用于检查资源是否存在)。

二、HTTP 响应(服务器发给客户端)

响应由三部分构成:状态行 + 响应头 + 响应体。

  • 状态行:格式为 协议版本 状态码 状态描述
    例:HTTP/1.1 200 OK(协议 1.1,状态码 200 表示请求成功);
  • 响应头:键值对格式,传递服务器信息、数据格式等
    UTF-8 编码的 HTML”)、Set-Cookie: sessionid=xxx(服务器给客户端设置 Cookie);就是例:Content-Type: text/html; charset=utf-8(告诉客户端 “响应体
  • 响应体:服务器返回的核心数据(如 HTML 网页、JSON 结果、图片二进制信息)
    例:首页内容(HTML 网页)、{“code”:200,“data”:“success”}(JSON 接口响应)。

常见 HTTP 状态码(按大类划分):

  • 2xx(成功):
    • 200 OK(请求成功)、
    • 204 No Content(成功但无响应体);
  • 3xx(重定向):
    • 301 永久重定向、
    • 302 临时重定向、
    • 304 Not Modified(资源未修改,使用缓存);
  • 4xx(客户端错误):
    • 400 Bad Request(请求参数错误)、
    • 401 未授权(需登录)、
    • 403 禁止访问、
    • 404 Not Found(资源不存在);
  • 5xx(服务器错误):
    • 500 Internal Server Error(服务器内部错误)、
    • 503 Service Unavailable(服务器过载)。

思考

1、发送大HTTP报文,如何确认对端缓存区的大小?

  • 「小 HTTP 报文」:一个 TCP 段即可装下完整的 HTTP 报文(头部 + 载荷 = 完整 HTTP 数据);
  • 「大 HTTP 报文」(如上传大文件、返回大 HTML/JSON):TCP 会按「MSS(最大报文段长度)」拆分 HTTP 字节流,分成多个 TCP 段传输(MSS 是 TCP 协商的 “单个段的最大载荷长度”,默认约 1460 字节,避免超过 IP 层的 MTU 限制导致分片)

窗口大小(Window Size):告知对方 “我当前能接收的最大字节数”,用于流量控制(避免 HTTP 大报文撑爆接收方缓冲区)

posted @ 2026-02-02 09:15  gccbuaa  阅读(0)  评论(0)    收藏  举报