Skip to main content

http

http

请求方法

  • GET
  • POST
  • OPTIONS。可以获取服务器支持的请求方法列表,或者跨域预检
  • HEAD
  • ...

状态码

标头

分为请求头和响应头,常见标头参考 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/3https://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

用了 HTTPS 就安全了吗?HTTPS 会被抓包吗?

参考