HTTP 报文格式
HTTP 1.x
Last updated
HTTP 1.x
Last updated
我们知道,TCP 报文会在要实际传输的数据前附加一个 20 字节的头部数据,用来存储 TCP 协议必需的额外信息。类似地,HTTP 协议也会在要实际传输的数据前附加一些头数据,不过它的头数据都是 ASCII 码的文本,不用借助解析器就能看懂,因为 HTTP 是一个纯文本的协议。
HTTP 协议的核心,就是它传输的报文内容。HTTP 协议的规范文档详细地定义了报文的格式,规定了组成部分、解析规则、处理策略。因此,它可以在 TCP/IP 层之上实现更灵活更丰富的功能,比如连接控制,缓存管理、数据编码、内容协商等。
HTTP 协议规定,报文必须有 header,但可以没有 body,且在 header 之后必须要有一个“空行”。
start line *
描述请求或响应的基本信息
header *
使用 key-value 形式详细地说明报文
空行 *
CRLF
,十六进制的 0D0A
entity body
实际传输的数据 可以是纯文本,也可以是图片、视频等二进制数据
在请求报文里,start line 叫 request line(请求行)
在响应报文里,start line 叫 status line(状态行)