这是我参与「第四届青训营 」笔记创作活动的的第8天
初识-什么是HTTP协议?
上面这幅图是一般浏览网页所经历的步骤。
- TCP/IP 四层网络模型
- HTTP协议是Hyper Text Transfer Protocol 超文本传输协议的英文简称,它是应用层协议,基于TCP协议,用于请求响应。
- 特点:简单可扩展,无状态
协议分析
发展历程
报文(以HTTP/1.1为例)
- Method 方法 |方法 |说明 | | --- | --- | | GET |请求一个指定资源的表示形式,使用Get的请求应该只被用于获取数据 | | Post | 用于将实体提交到指定的资源,通常导致在服务器上的状态变化或副作用| | Put | 用请求有效载荷替换目标资源的所有当前表示| | DELETE | 删除指定的资源| | HEAD| 请求一个与GET请求的响应相同的响应,但没有响应体| | CONNECT | 建立一个到有目标资源标识的服务器的隧道| | OPTIONS | 用于描述目标资源的通信选项| | TRACE | 沿着到目标资源的路径执行一个消息环回测试 | |PATCH|用于对资源应用部分修改|
- Method 的特点属性
- Safe(安全的):不会修改服务器的数据的方法
- Idempotent(幂等):同样的请求被执行一次与连续执行多次的效果是一样的,服务器的状态也是一样的;所有Safe的方法都是Idempotent的
- Get HEAD OPTIONS PUT DELETE
- 状态码
- 常见的状态码 | 状态码 | 作用 | |----|----| |200 OK|客户端请求成功| |301|资源(网页等)被永久转移到其他URL| |302|临时跳转| |401 Unauthorized|请求未经授权| |404|请求资源不存在,可能是输入了错误的URL| |500|服务器内部发生了不可预期的错误| |504 Gateway Timeout|网关或者代理的服务器无法在规定的时间内获得想要的响应|
- RESTful API(一种API设计风格;REST-Representational State Transfer)
- 每个URI代表一种资源
- 客户端和服务器之间,传递这种资源的某种表现层
- 客户端通过HTTP method,对服务器端资源进行操作,实现“表现层状态转化”
- 每个URI代表一种资源
- 常用的请求头
- 常用的响应头
- 缓存
- 强缓存
- Expires,时间戳
- Cache-Control
- 可缓存性
- no-cache:协商缓存验证
- no-store:不使用任何缓存
- 到期
- max-age:单位是秒,存储的最大周期,相对于请求的时间
- 重新验证 * 重新加载
- must-revalidate:一旦资源过期,在成功向原始服务器验证之前,不能使用
- 可缓存性
- 协商缓存
- Etag/If-None-Match:资源的特定版本的标识符,类似于指纹
- Last-Modified/If-Modified-Sine:最后修改时间
- 强缓存
- 缓存使用验证过程
- cookie
- set-cookie-response
- set-cookie-response
HTTP /2 概述:更快、更稳定、更简单
- 帧(frame)
- 帧是 HTTP/2 通信的最小单位,每个帧都包括帧头,至少也会标识出当前帧所属的数据流。
- 帧采取二进制编码,配合压缩算法,使得传输更快更高效
- 消息
- 与逻辑请求或响应消息对应的完整的一系列帧。
- 数据流
- 已建立的连接内的双向字节流,可以承载一条或多条消息。
- 交错发送,接收方重组织
- HTTP/2的特点
- HTTP/2连接都是永久的,而且仅需要每个来源一个连接
- 流控制:阻止发送方向接受方发送大量数据的机制
- 服务器推送
HTTPS概述
在HTTP基础上经过TSL/SSL加密
- 对称加密:加密和解密都是使用同一个密钥
- 非对称加密,加密和解密需要使用两个不同的密钥:公钥和私钥