http
http
请求方法
- GET
- POST
- OPTIONS。可以获取服务器支持的请求方法列表,或者跨域预检
- HEAD
- ...
状态码
- 2xx
- 3xx
- 301
- 302。不缓存,容易被网络劫持,参考 https://cloud.tencent.com/developer/article/1906630
- 304。协商缓存相关,参考 https://github.com/GitHubJackson/afresh.js/issues/24
- 4xx
- 5xx
- ...更多状态码参考 https://zh.wikipedia.org/wiki/HTTP%E7%8A%B6%E6%80%81%E7%A0%81#3xx%E9%87%8D%E5%AE%9A%E5%90%91
标头
分为请求头和响应头,常见标头参考 https://zhuanlan.zhihu.com/p/579504784
http1.1
在 HTTP/1.1 存在 Pipelining 技术可以完成这个多个请求同时发送,但是由于浏览器默认关闭,所以可以认为这是不可行的。在 HTTP2 中由于 Multiplexing 特点的存在,多个 HTTP 请求可以在同一个 TCP 连接中并行进行。参考
http2
- 流和帧(二进制分帧)。HTTP2 性能增强的核心。参考 https://juejin.cn/post/6844903796225785870
- 多路复用。HTTP/1.1 依次加载各个资源,如果无法加载某一资源,它将阻碍其后的所有其他资源。相比之下,HTTP/2 可以使用单个 TCP 连接来一次发送多个数据流。http2 引入二进制数据帧和流的概念,其中帧对数据进行顺序标识,这样浏览器收到数据之后,就可以按照序列对数据进行合并,而不会出现合并后数据错乱的情况。同样是因为有了序列,服务器就可以并行的传输数据,这就是流所做的事情
- 标头压缩
- 服务器推送
http2 有哪些缺点?
参考 https://github.com/LuckyWinty/fe-weekly-questions/issues/3 和 https://juejin.cn/post/7069997103824502791#heading-5
- TCP 的队头阻塞并没有彻底解决 TCP 为了保证可靠传输,有一个“超时重传”机制,丢失的包必须等待重传确认
- 多路复用导致服务器压力上升,多路复用没有限制同时请求数
- TCP 以及 TCP+TLS 建立连接的延时
http3
[待补充]
https
HTTPS 是 HTTP 建立在 SSL/TLS 安全协议上的网络传输协议
- 客户端发出 https 连接请求,同时发送自己支持的加密算法列表和生成的一个随机数
- 服务器从列表中选一套加密算法、公钥以及身份信息等存入数字证书,给出一个随机数和证书
- 客户端验证证书,拿到服务器公钥,并且再生成一个新的随机数,用服务器公钥加密并发送
- 服务器用自己的私钥进行解密,得到随机数
- 客户端和服务器现在都有三个随机数了,现在根据一开始选择的加密算法来加密,生成对称密钥
- 双方利用对称密钥来加密通信(对称加密)
参考 https://lucifer.ren/fe-interview/#/topics/network/https
参考