HTTP框架修炼之道 | 青训营笔记

94 阅读2分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的的第5篇笔记。 这篇文章是对于HTTP的深入学习。

HTTP (v1.1)与 HTTPS 有哪些区别

  1. HTTP 是超文本传输协议,信息是明文传输,存在安全风险的问题。HTTPS 则解决 HTTP 不安全的缺陷,在 TCP 和 HTTP 网络层之间加入了 SSL/TLS 安全协议,使得报文能够加密传输。
  2. HTTP 连接建立相对简单, TCP 三次握手之后便可进行 HTTP 的报文传输。而 HTTPS 在 TCP 三次握手之后,还需进行 SSL/TLS 的握手过程,才可进入加密报文传输。
  3. HTTP 的端口号是 80,HTTPS 的端口号是 443。
  4. HTTPS 协议需要到 CA证书

https为什么采用混合加密机制?

一方面,第一阶段的非对称加密,保证了对称密钥的安全性;另一方面,第二阶段的对称加密,可以提高加密/解密处理的速度,提高数据传输的效率。

HTTP2的优化

  • 头部压缩:如果你同时发出多个请求,他们的头是一样的或是相似的,那么,协议会帮你消除重复的部分。
  • 二进制传输:全面采用了二进制格式传输
  • 并发传输:HTTP2通过Stream这个设计(多个Stream复⽤⼀条TCP连接,且可以乱序发送,达到并发的效果),解决了【队头阻塞】的问题,提⾼了HTTP传输的吞吐量
  • 服务器推送,减少消息上传递的次数

为什么有HTTP3 ?

  • HTTP/2 虽然通过多个请求复用一个 TCP 连接解决了 HTTP 2的队头阻塞 ,但是一旦发生丢包,就会阻塞住所有的 HTTP 请求,这属于 TCP 层队头阻塞
  • HTTP/2 队头阻塞的问题是因为 TCP,所以 HTTP/3 把 HTTP 下层的 TCP 协议改成了 UDP,基于 UDP 的 QUIC 协议 可以实现类似 TCP 的可靠性传输

HTTP3的优化是什么

  1. UDP的优点:QUIC 连接上的多个 Stream 之间并没有依赖,都是独立的,某个流发生丢包了,只会影响该流(会要求重传),其他流不受影响
  2. 更快的连接建立,因为QUIC 内部包含了 TLS,仅需QUIC三次握手即可,而不像HTTP2需要(TCP+TLS)
  3. 连接迁移:QUIC 协议没有用四元组的方式来“绑定”连接,而是通过连接 ID来标记通信的两个端点,也就是说当IP地址发生改变,也可以无缝的复用连接