@windchimes
2019-06-25T09:07:38.000000Z
字数 968
阅读 261
前端新知识
参考链接:https://my.oschina.net/editorial-story/blog/3031721?from=20190414
HTTP 3 基于UDP协议
http 1.0/1.1是基于TCP协议的,处于计算机网络中的应用层,所以http协议的瓶颈及其优化技巧都是基于TCP协议本身的特性来的
1.0和1.1的主要区别在于长连接支持、多路复用、宽带节约与数据压缩等
http1.0和1.1的缺陷在于:
1. 连接无法复用 每次请求都需要经过三次握手和慢启动。三次握手在高延迟的场景下影响较明显,慢启动则对大量的小文件请求影响较大
2. head-of-line blocking(HOLB,队头阻塞) http1.1中虽然使用了pipeling策略,但是要求返回时有序的,那么前一个请求如果耗时较长,那么后面的请求即使服务器已经处理完成,仍需要按序返回
3. 协议开销大 header里携带的内容过大,增加了传输成本
4. 安全因素 传输的是明文
因为http1.0/1.1的问题,所以引入了雪碧图、将小图内联、使用多个域名等等的方式来提高性能。
2015年,继承于SPDY的http2协议发布,其核心基于SPDY3,专注于性能,最大的一个目标是在用户和网站之间只用一个连接
http2特性:
二进制传输,不再使用之前的文本格式,解析更加高效
帧是http2通信的最小单位,每个帧都包含帧首部,至少也会标识出当前帧所属的流,承载着特定类型的数据,比如http首部、负荷等等
http2中,相同域名下的所有通信都在单个连接上完成,该连接可以承载任意数量的双向数据流,每个数据流都以消息的形式发送,每个消息又有多个帧组成,多个帧的发送是乱序的,根据帧首部的流标识可以重新组装
多路复用
header压缩
http2有个缺点,在出现丢包的情况下,整个TCP都要开始等待重传,也就导致了后面的所有数据都被阻塞了,但是因为http1 可以开启多个TCP链接,所以反而没有这个缺点
总结:
http1 有连接无法复用,队头阻塞,协议开销大和安全因素等多个缺陷
http2 通过多路复用,二进制流与Header压缩等技术,极大的提高了性能,但是还是存在一些问题,比如丢包阻塞问题
http3 直接抛弃了TCP协议,使用了UDP,综合利用了TCP和UDP的优点,实现了既快又可靠的协议