Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

6 - 网络 / 安全 / 缓存 #6

Open
Linjiayu6 opened this issue Jun 3, 2020 · 2 comments
Open

6 - 网络 / 安全 / 缓存 #6

Linjiayu6 opened this issue Jun 3, 2020 · 2 comments

Comments

@Linjiayu6
Copy link
Owner Author

Linjiayu6 commented Jul 4, 2020

其他

1. http 1.0 / http 1.1 / http 2.0

http 1.0 => http 1.1 无连接到长连接(keep-alive) and 缓存应用(cache-control etag等优化)
http 1.1 => http 2.0 多路复用

http1.0 vs http1.1

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. 处理请求 必须排队

http1.1 vs http2

【http2.0 同域名下所有通信都在单个连接上完成,该连接可以承载任意数量的双向数据流】
[二进制分帧]:  之前版本都是明文传输, 但这个版本是消息分割为更小的帧,二进制传输。
[🔥多路复用]:  基于二进制分帧,在同一个TCP连接上,  发送多个请求,并不需要排队处理。
css =>  A 5s
js1 =>  A 5s
js2 =>  A 5s
A是接收信息, 同时处理 互相之前不干预, 最后用时5s

为什么HTTP1.1 不能多路复用?

本质: 因为HTTP1.1 不是二进制传输,是文本方式传输。没有流的概念。


HTTP2处理: 
多路复用归功于 帧frame 和流stream 应用,二进制传输。
一个消息分为多个帧, 每一帧乱序发送,最后再根据标识按照顺序连接在一起。

HTTP1处理:  发送和影响都是资源去竞争以及排队方式。阻塞设计方式。只能一个个去处理。
HTTP1.1 在并行传数据过程中,接收者不能区分多个响应对应的具体请求,也无法将多个响应拼接在一起,所以不能多路复用。


【HTTP1.1 文本】传输 hello world 只能从h到d一个个的传输,不能乱序,以为接收者不知道字符顺序,所以并行传输在http1.1 不能实现。
【HTTP2 帧流 二进制概念】可以并行传输,并可以根据乱序进行合并。在同一个域名下基于一路连接。并发数是300,比原理提高6倍。

2. HTTP Content-Type

- text/html
- image/webp  
  image/svg
- application/json

3. TCP/IP 5层

1. 应用层 HTTP
例如地址是https//www.baidu.com
2. 传输层 TCP / UDP
3. 网络层 ip 寻址
4. 数据链路层 数据帧传输
5. 物理层 物理设备的二进制内容传输

4. cookie 属性 / 特性 / samesite cookie

【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行为,控制的是该网站。

@Linjiayu6
Copy link
Owner Author

Linjiayu6 commented Jul 9, 2020

5 - A B 机器正常连接后, B 机器突然重启, 问 A 此时处于 TCP 什么状态?

  • B 重启后 进入listen状态
  • A 继续工作, 然而B已丢失A信息,所以B会主动发RST重置连接。

6 - 301 / 302

  • 301 永久重定向
    旧的永久不在
    例如: A域名到期, 永久下掉了, 变为B域名, 会有301情况。

  • 302 临时重定向
    旧的还在, 临时打开新的地址
    例如: A.com 临时跳转到 B.com, A.com 还继续用。

7 - 接口防刷

  • 总次数限制: 限流处理
  • 某个用户限制: IP 地址 用户身份验证,限制使用。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant