Open Linjiayu6 opened 4 years ago
http 1.0 => http 1.1 无连接到长连接(keep-alive) and 缓存应用(cache-control etag等优化) http 1.1 => http 2.0 多路复用
http主要是时延问题
1. 三次握手🤝
2. 在同一个TCP连接上, 发送http请求
【http1.0 问题是】
1. 🤝一次, 后每次都需要握手
2. 在同一个TCP连接上, 只能发一个http请求, 剩下的就等待返回, 再请求
css => js1 => js2 串行发送串行返回
【http1.1 解决1.0问题】
1. [🔥长连接复用] 🤝 connection: keep-alive, 长连接方式, 一次信任即可
2. 在同一个TCP连接上, 可以同时发多个http请求(4~6)个, 但是处理还是一个个的
同时给A发送请求
css => A 5s
js1 => A 5s
js2 => A 5s
A接受的队列是[css, js1, js2] 只有当css处理完, 再处理js1, 以此类推...
用时 15s
3. 缓存增加 Cache-Control 缓存处理
【http1.1 问题】
1. 一个TCP发送请求 至多6个
2. 处理请求 必须排队
【http2.0 同域名下所有通信都在单个连接上完成,该连接可以承载任意数量的双向数据流】
[二进制分帧]: 之前版本都是明文传输, 但这个版本是消息分割为更小的帧,二进制传输。
[🔥多路复用]: 基于二进制分帧,在同一个TCP连接上, 发送多个请求,并不需要排队处理。
css => A 5s
js1 => A 5s
js2 => A 5s
A是接收信息, 同时处理 互相之前不干预, 最后用时5s
本质: 因为HTTP1.1 不是二进制传输,是文本方式传输。没有流的概念。
HTTP2处理:
多路复用归功于 帧frame 和流stream 应用,二进制传输。
一个消息分为多个帧, 每一帧乱序发送,最后再根据标识按照顺序连接在一起。
HTTP1处理: 发送和影响都是资源去竞争以及排队方式。阻塞设计方式。只能一个个去处理。
HTTP1.1 在并行传数据过程中,接收者不能区分多个响应对应的具体请求,也无法将多个响应拼接在一起,所以不能多路复用。
【HTTP1.1 文本】传输 hello world 只能从h到d一个个的传输,不能乱序,以为接收者不知道字符顺序,所以并行传输在http1.1 不能实现。
【HTTP2 帧流 二进制概念】可以并行传输,并可以根据乱序进行合并。在同一个域名下基于一路连接。并发数是300,比原理提高6倍。
- text/html
- image/webp
image/svg
- application/json
1. 应用层 HTTP
例如地址是https//www.baidu.com
2. 传输层 TCP / UDP
3. 网络层 ip 寻址
4. 数据链路层 数据帧传输
5. 物理层 物理设备的二进制内容传输
【1. 属性】
- 存的名字: name
- 存的值: value
- 存活时间: 最长时间 max-age / 相对时间 expires
- secure: http-only
- 在存的域或地址下: domain / 地址 path
- samesite: 防止CSRF和用户追踪
【2. samesite】
samesite cookie 为了解决CSRF安全问题。
阻止cookie信息和跨站点请求一起发送。
【2.1 严格模式】
A.com有这个信息
Set-Cookie: x=1; SameSite=Strict
Set-Cookie: y=2;
A.com向B.com 请求, 会携带y=2信息, 但是不会携带x=1
也就是说,有了这个标识,怎么都不会携带cookie信息。下次要重新登录。
【2.2 宽松模式】
Set-Cookie: x=1; SameSite=Strict
Set-Cookie: z=2; SameSite=Lax
Set-Cookie: y=2;
A.com 请求到 B.com 会携带 y和z, 不会携带x
但是如果是发送异步或post请求,只会携带y
【3. 浏览器禁用和samesite cookie区别】
- 浏览器禁用 是用户行为,所有都会被禁用
- samesite 是域名下某个cookie行为,控制的是该网站。
301 永久重定向 旧的永久不在 例如: A域名到期, 永久下掉了, 变为B域名, 会有301情况。
302 临时重定向 旧的还在, 临时打开新的地址 例如: A.com 临时跳转到 B.com, A.com 还继续用。
Network
[Network] 1- DNS解析
[Network] 2 - TCP连接 三次握手 四次挥手
[Network] 3 - SYN Flood / DoS, DDoS Attack
[Network] 4 - HTTPS / TSL
[Network] 5 - 状态码
[Network] 6 - 从输入URL到页面都发生了什么
[Network] 7 - 跨域解决
[Network] 8 - 如果你的域名被劫持 / DNS解析失败 你能怎么办?
缓存
[缓存] 1 - 浏览器缓存机制 强缓存 / 协商缓存
[缓存] 2 - 数据存储 cookie/ web storage
[缓存] 3 - 应用缓存 service worker
安全
[Security] 1 - XSS
[Security] 2 - CSRF
[Security] 3 - Oauth2