这是我参与「第四届青训营 」笔记创作活动的的第7天
初识HTTP
(背景知识:什么是HTTP,其基本特点)
思考:从地址框中输入的字符串经历了怎样的过程变成了所显示的页面?
什么是HTTP
- Hyper Text Transfer Protocol 超文本传输协议
- 应用层协议,基于TCP协议
- 请求 响应
- 简单可扩展
- 无状态
协议分析
(报文结构,发展历程)
发展
1.Http/0.9单行协议
- 请求GET/mypage.html
- 响应只有HTML文档
2.Http/1.0构建可扩展性
- 增加了Header
- 有了状态码
- 支持多种文档类型
3.Http/1.1标准化协议
- 链接复用
- 缓存
- 内容协商
4.Http/2更优异的表现
- 二进制协议
- 压缩header
- 服务器推送
5.Http/3草案
报文
Method
- Safe(安全的):不会修改服务器的数据的方法
- idempotent(幂等):同样的请求被执行一次与连续执行多次的效果是一样的,服务器的状态也是一样的,所有safe的方法都是idempotent的
状态码
- 200:客户端请求成功
- 404:请求资源不存在
- 500:服务器内部发生错误
- ......
RESTful API(一种API设计风格)
- 每一个URI代表一种资源
- 客户端和服务器之间,传递这种资源的某种表现层
- 客户端通过HTTP method,对服务器端资源进行操作,实现“表现层状态转化”
缓存
- 时间戳 Expires
- Cache-Control
- Etag/If-None-Match:资源的特定版本的标识符,类似于指纹
- Last-Modified/If-Modified-Since:最后修改时间
发展Http/2
更快、更稳定、更简单
- 帧(frame):Http/2通信的最小单位,每帧都包含帧头,至少也会标识出当前帧所属数据流
- 消息:与逻辑请求或响应消息对应的完整的一系列帧
- 数据流:已建立的连接内的双向字节流,可以承载一条或多条消息
- Http/2连接都是永久的,而且仅需要每个来源一个连接
- 流控制:阻止发送方向接收方发送大量数据的机制
HTTPS
- HTTPS:Hypertext Transfer Protocol Secure
- 经过TSL/SSL加密
- 对称加密:加密和解密都是使用同一个密钥
- 非对称加密:加密和解密需要使用两个不同的密钥:公钥、私钥