HTTP请求和响应的组成
1. 请求
1.1 请求行
POST + URL + HTTP版本
1.2 请求头
Host: 目标服务器
Content-Type: 请求格式
1.3 请求体
{}
POST /api/login HTTP/1.1
Host: www.example.com
Content-Type: application/json
Content-Length: 34
{
"username": "admin",
"password": "123456"
}
2. 响应
2.1 响应行
HTTP版本 + 状态码 + 状态描述
2.2 响应体
Date: 服务器时间
Content-Type: 响应格式
2.3 响应体
...
HTTP/1.1 200 OK
Date: Wed, 12 Mar 2025 12:00:00 GMT
Content-Type: text/html; charset=UTF-8
Content-Length: 20
<h1>Hello, world!</h1>
HTTP不同版本
HTTP1.0
每个请求都需要重新连接
HTTP1.1
一次连接可以接受多个请求, 请求按顺序执行存在队头阻塞问题
HTTP2.0
多路复用解决队头阻塞问题: 数据分帧(请求头+请求体) + 流标识 + 一个TCP接受多个请求
请求头压缩 hpack
HTTP3.0
使用QUIC协议(TLS1.3 + UPD)