HTTP协议
HTTP协议
-
网络通信分层
-
-
一个http请求的分层解析流程
-
-
基础介绍
-
定义
-
HTTP是一种无状态的、基于请求-响应模式的协议,最初设计用于传输超文本(如HTML文档),现在已支持任意类型的数据传输。
-
-
特点
-
-
-
- 无连接:早期版本每次请求建立新连接,HTTP/1.1支持持久连接
- 无状态:服务器不记录客户端状态信息
- 媒体独立:可传输任意类型数据
- 支持C/S架构:客户端-服务器模型
-
-
-
报文格式
-
请求报文和相应报文基本相同,包括
- 起始行:描述请求和相应的基本信息
- 头部字段集合:使用key_value形式详细的说明报文
-
通用头部字段
-
Cache-Control:缓存控制
-
Connection:连接管理
-
Date:消息创建时间
-
-
请求头部字段
-
Accept:可接受的媒体类型
-
Authorization:认证信息
-
User-Agent:客户端信息
-
-
响应头部字段
-
Server:服务器信息
-
Set-Cookie:设置Cookie
-
Location:重定向目标
-
-
- 消息正文:实际传输的消息,纯文本、图片、视频等二进制
-
![image]()
-
请求报文格式
-
![image]()
-
请求方法
- GET:获取资源
- POST:提交数据
- PUT:更新完整资源
- DELETE:删除资源
- PATCH:部分更新资源
- HEAD:获取头部信息
- OPTIONS:查询支持的方法
- 请求目标
- 版本号
-
-
相应报文格式
-
版本号:HTTP协议版本
-
状态码:一个三位数,表示处理结果
-
状态码范围
-
1xx:信息性状态码
-
2xx:成功状态码
-
3xx:重定向状态码
-
4xx:客户端错误状态码
-
5xx:服务器错误状态码
-
-
常用状态码
-
200 OK:请求成功
-
301 Moved Permanently:永久重定向
-
400 Bad Request:错误请求
-
404 Not Found:资源未找到
-
500 Internal Server Error:服务器内部错误
-
-
-
原因:状态码的补充
-
-
-
-
-
HTTP版本演进
- HTTP/0.9
- 简单协议,只支持GET方法
- 无头部字段,无状态码
- HTTP/1.0
- 引入方法、状态码、头部字段
- 每次请求建立新连接
- HTTP/1.1(当前主流)
- 持久连接
- 管道化
- 分块传输编码
- 缓存优化
- HTTP/2
- 二进制分帧
- 多路复用
- 头部压缩
- 服务器推送
- HTTP/3
- 基于QUIC协议(UDP)
- 改进连接建立
- 更好的移动网络支持
- HTTP/0.9
-
-
-
Cookie和Session
- Cookie机制
- 服务器通过Set-Cookie头部设置
- 客户端自动在请求中携带Cookie
- 用于状态保持
- Session机制
- 服务器端存储用户状态
- 通过Session ID标识
- Cookie机制
-






浙公网安备 33010602011771号