这是我参与「第三届青训营 -后端场」笔记创作活动的的第5篇笔记。 这篇文章是对于HTTP的深入学习。
HTTP (v1.1)与 HTTPS 有哪些区别
- HTTP 是超文本传输协议,信息是明文传输,存在安全风险的问题。HTTPS 则解决 HTTP 不安全的缺陷,在 TCP 和 HTTP 网络层之间加入了 SSL/TLS 安全协议,使得报文能够加密传输。
- HTTP 连接建立相对简单, TCP 三次握手之后便可进行 HTTP 的报文传输。而 HTTPS 在 TCP 三次握手之后,还需进行 SSL/TLS 的握手过程,才可进入加密报文传输。
- HTTP 的端口号是 80,HTTPS 的端口号是 443。
- 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的优化是什么
- UDP的优点:QUIC 连接上的多个 Stream 之间并没有依赖,都是独立的,某个流发生丢包了,只会影响该流(会要求重传),其他流不受影响
- 更快的连接建立,因为QUIC 内部包含了 TLS,仅需QUIC三次握手即可,而不像HTTP2需要(TCP+TLS)
- 连接迁移:QUIC 协议没有用四元组的方式来“绑定”连接,而是通过连接 ID来标记通信的两个端点,也就是说当IP地址发生改变,也可以无缝的复用连接