这是我参与「第四届青训营 」笔记创作活动的第7天
一、初始HTTP
什么是HTTP?
即Hyper Text Transfer Protocal 超文本传输协议。
超文本在于HTTP可以承载多种题材,例如CSS、JS、Web APIs等。
特点:
- 应用层协议,基于TCP协议
- 每一个HTTP 请求都分为请求、响应两部分
- 简单可扩展
- 无状态协议
二、协议分析
1.发展历程
HTTP/1.1
标准版本,但很多大厂已经切换到了HTTP/2版本
HTTP/2
HTTP/2更快、更稳定、更简单
帧(frame):HTTP/2通信的最小单位,每个帧都包含帧头,至少也会标识出当前帧所属的数据流。
帧的传输过程采用二进制编码形式,跟以前的纯文本相比效率更高。
消息:与逻辑请求或响应消息对应的完整的一系列帧。
数据流:已建立的链接内的双向字节流,可以承载一条或多条消息。
帧彼此交错发送,接收方重新组织,进一步提升传输效率。
HTTP、2连接是永久的,而且仅需要每个来源一个连接。
流控制:阻止发送方向接收方发送大量数据的机制。
HTTPS概述
即Hypertext Transfer Protocal Secure
经过TSL/SSL加密
对称加密:加密和解密使用同一个密钥
非对称加密:加密和解密要使用两个不同的密钥,即公钥(public key)和私钥(private key)
2.报文分析
Method
Safe (安全的):不会修改服务器的数据的方法 如:GET、HEAD、OPTIONS
Idempotent (幂等):同样的请求被执行一次与连续执行多次的效果是一样的,服务器的状态也是一样的,所有safe的方法都是的Idempotent 如: GET、HEAD、OPTIONS、PUT、DELETE
状态码
- 200 OK 客户端请求成功
- 301 资源(网页等)被永久转移到其他URL
- 302 临时跳转
- 401 Unauthorized 请求未经授权
- 404 请求资源不存在,可能是输入错误的URL
- 500 服务器内部发生了不可预期的错误
- 504 Gateway Timeout 网关或者代理的服务器无法在规定的时间内获得想要的响应
RESTful API
RESTful API:一种API设计风格
REST - Representational Sate Transfer
- 每一个URI代表一种资源
- 客户端和服务器之间,传递这种资源的某种表现层
- 客户端通过HTTP method,对服务器端资源进行操作,实现“表现层状态化”
常用请求头
常用响应头
缓存
cookie
Set-Cookie-response