青训营打卡
这是我参与「第四届青训营 」笔记创作活动的第4天
1. 初始http
输入信息 -> 浏览器 -> 浏览器内核(发起请求给Internet网络,读取响应,渲染)-> 页面加载完成
当然这里有很复杂的dom树构建等,但是这里主要将浏览器内核与Internet的交互中的细节
这里经过了三个大体过程
- browser进程
- 浏览器内核
- Internet网络server服务器
从输入到输出经历层面可以简化为:是从1到2到3到2到1的过程
什么是HTTP
这里是http的一些特点:
- Hyper Text Transfer Protocol超文本传输协议
- 应用层协议,基于TCP协议
- 请求 响应
- 简单可扩展
- 无状态(每一个请求之间是孤立的,与前后请求不相关)
2. 协议分析
发展历程
- HTTP/0.9:单行协议,请求只有GET/mypage.html,响应只有HTML文档
- HTTP/1.0:增加了Header,有了状态码,支持了更多语义,支持多种文档类型
- HTTP/1.1:标准化协议,最经典的协议。连接复用,缓存,内容协商
- HTTP/2:二进制协议,压缩header,服务器推送
协议分析
HTTP/1.1
Method
safe(安全的):不会修改服务器数据的方法
ldempotent(幂等):同样的请求被执行一次和执行多次的效果是一样的,服务器的状态也是一样的,所有safe的方法都是ldepotent的
状态码
状态码的设置3位
1xx表示指示信息,表示请求已被接受,继续梳理
2xx成功,表示请求已被成功接收,理解(例如200 OK - 客户端请求成功)
3xx重定向,要完成请求必须进行更进一步的操作(301 - 资源、网页等被永久转移到其他URL,302 - 临时跳转)
4xx客户端错误,请求有语法错误或请求无法实现(404 - 请求资源不存在,可能是输入了错误的URL)
5xx服务器端错误,服务器未能实现合法的请求(504 Gateway Timeout - 网关或者代理的服务器无法在规定的时间内获得想要的响应)
RESTful API
一种API设计风格
(1)每一个URI代表一种资源
(2)客户端和服务器之间,传递这种资源的某种表现层
(3)客户端通过HTTP method,对服务器端资源进行操作,实现“表现层状态转化”
常用请求头
常用响应头
缓存
强缓存:内容有,直接用即可
协商缓存:内容有无需要和服务器协商沟通,然后再使用
cookie
HTTP/2
HTTP/2重要概念:
- 帧(frame):HTTP/2 通信的最小单位,每个帧都包含帧头,至少也会
标识出当前帧所属的数据流。
- 消息:与逻辑请求或响应信息对应的完整的一系列帧
- 数据流:已建立的链接内的双向字节流,可以承载一条或多条消息
- HTTP/2 链接都是永久的,而且仅需要每个来源一个链接
- 流控制:组织发送方向接收方发送大量数据的机制
HTTPS
https是在http基础上进行了一个TSL/SSL加密
- 对称加密:加密和解密都是使用同一个密钥
- 非对称加密:加密和解密需要使用两个不同的密钥:公钥(public key)和私钥(private key)