其他分享
首页 > 其他分享> > Http2.0和Http3.0

Http2.0和Http3.0

作者:互联网

1. http2.0,或许是一个过渡协议

a. 它兼容1.1版本,2015年左右发布,目前部分知名网站已经开始使用,它依然基于TCP协议,主要focus on performance。

b.  很多请求都是头部很多内容,实际传输的内容很少,所以http2.0做了头部压缩。不过 HTTP/2 并没有使用传统的压缩算法,而是开发了专门的“HPACK”算法,“HPACK”算法是专门为压缩 HTTP 头部定制的算法,与 gzip、zlib 等压缩算法不同,它是一个“有状态”的算法,需要客户端和服务器各自维护一份“索引表”,也可以说是“字典”(这有点类似 brotli),压缩和解压缩就是查表和更新表的操作

c. 二进制方式传输,(注意这里并没有加密),它把 TCP 协议的部分特性挪到了应用层,把原来的“Header+Body”的消息“打散”为数个小片的二进制“帧”(Frame),用“HEADERS”帧存放头数据、“DATA”帧存放实体数据。

d. 虚拟流的概念

e. 2015年发布http2的时候,TLS1.3还没有发布,所以只要求使用使用TLS1.2以上的协议,默认比1.1要求的更高,默认需要使用https加密传输。

注意:

http1.1里面的一些优化手段,对于2.0来说,可能起到反作用。比如合并js,css,雪碧图等。因为过大的文件,容易导致缓存失效,其他一个单元修改了,整个缓存就得重新获取。

更多的TCP连接,也对server端不友好,更小的资料,往往会很快会被使用,给好的UI体现。

2. Http3.0,真正的下一代可靠的高速应用层通信技术

a. http2中始终在使用TCP协议,所以无论如何都还是会有tcp传输层的对头阻塞问题,而http3彻底解决对头阻塞的问题,正式版本还没有发布。

b.  所以google又(google在web协议发展中,总是领先推出一些协议,成为既定事实,在由标准化组织给他正名,写入RFC)重新推了QUIC协议,彻底放弃使用TCP协议,而使用基于UDP的QUIC协议。

c. UDP协议不需要3次握手和4次挥手,所以天然比TCP协议快。

d. 同时2018年TLS1.3版本发布,可以获取更好的加密性能。QUIC 内含了 TLS1.3,只能加密通信,支持 0-RTT 快速建连;

e. QUIC协议自定义了连接机制,在IP地址发送变化,只要双方的通信Id没变,就会保持连接,特别适合移动互联网的应用场景, 不会像tcp那样不能变ip和port,如果变了就要重新建立耗时的TCP连接。

f. QUIC自定义重传机制,由于TCP重传机制算法不够优秀,往往不准确超时时间,所以QUIC使用自增ID计算,更好的计算出了重传时间。

g. 离开了TCP的底层重传,流之间没有依赖,包之间没有依赖,真正实现了多路复用,告诉传输数据。

h. 自定义流量控制,采用滑动窗口协议与http2相同。

 

标签:协议,p1,重传,TCP,发送,Http3.0,QUIC,Http2.0
来源: https://www.cnblogs.com/roy1/p/13721842.html