💗HTTP/2.0及HTTP/3.0的那些事儿

简介: 💗HTTP/2.0及HTTP/3.0的那些事儿

前言


HTTP的协议的发展经过了一个比较漫长的阶段,从最初的HTTP/0.9发展到如今的HTTP/3.0,HTTP协议毫无疑问已经成为了一项很强大的协议,今天我们就来聊一聊HTTP/2.0及HTTP/3.0。


一、HTTP/2.0做了哪些改进?


二进制分帧


二进制分帧就是将一条连接上所有传输的信息,分割为更小的消息和帧,并对他们采用二进制格式编码,首部信息放在Headers帧中,主体信息被封装在Data帧中。


问题解答:


  1. 为什么HTTP/2.0可以对所有的内容进行二进制转换?


因为二进制分帧层在应用层和传输层之间的中间层,所有信息都会经过,进而可以转换。


  1. 为什么要用二进制?


效率更高,计算机更青睐二进制数


多路复用


多路复用技术就是可以并行发送请求,而且无需等待响应返回的一种技术,消除了不必要的延迟,减少了页面加载时间。


问题解答:


  1. HTTP/2.0多路复用与HTTP/1.1中管道的区别在哪?


管道也可以并行发送请求,但是返回响应结果则必须是发送时的顺序,而多路复用技术不需要等待,不容易造成堵塞。多路复用的基础就是二进制分帧,因为可以乱序发送和接收。


首部压缩


在第一次请求之后,大部分的字段可以复用的。而且随着页面越来越复杂,同一个页面发出的请求会越来越多。如果头部不压缩的话,会造成很大的流量开销


问题解答:


  1. 首部压缩的原理?支持http2.0的浏览器和服务器会维护一个相同的静态表和一个动态表,以及内置一个霍夫曼编码表。静态表存储的是常见的一些头部,和一些很常见的头部键值对,例如method:get以及cookie。动态表开始是空的,如果头部命中静态表中的名称,那么就回将这份键值对加入动态表中,例如cookie:xxxx。这样做的原因在于,请求或则响应头命中了静态或者动态表的时候,只需要一个字节就能表示,可想而知,这个字节就是一个地址,指向表中的数据。

e7350aee2aa34d5d9e19d79d04c5d703_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.png


服务器推送


服务器可以对一个客户端请求发送多个响应,例如,浏览器向服务端请求index.html,里面包含一张样式表和一张图片。传统的方法就是会向浏览器发送三次请求。而服务端推送,则可以在一次请求内将这三个文件全部发送给浏览器,减少了请求次数,提升了网页性能。


9a4cf8455d654373a2f351a7ca2129be_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.png


问题解答:


  1. 服务器推送有什么弊端?

如果服务端推送的内容,浏览器有缓存的话,就会浪费带宽。避免的方法就是在服务端配置,只对第一次请求实现服务器的推送。


二、HTTP/3.0诞生的意义


1a412bb033174c1c840f4cab3e5427c6_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.png


首先我们要清楚HTTP/1.0,HTTP/2.0都是基于TCP的,而HTTP/3.0是通过UDP建立的,基于QUIC(quick UDP Internet Connection)协议!


连接迁移


先阐述一下tcp里面的四元组,一条tcp的唯一性标识,是由源IP,源端口,目的IP,目的端口,四元组标识。源IP,源端口一般比较稳定,但是目的IP,目的端口会由于网络元素等原因发生改变,一旦改变,那么此条tcp连接就会断开。由于QUIC基于UDP协议,所以一条UDP协议不再由四元组标识,而是以客户端随机产生的一个64位数字作为ID标识。只要ID不变,那么这条UDP就会存在,维持连接,上层业务逻辑就感受不到变化。


无对头阻塞


首先来看看队头阻塞的两层原因:

image.png


HTTP/2.0的多路复用解决了HTTP层的队头阻塞问题,但是TCP的队头阻塞依然存在,当数据包超时确认或者丢失,会等待重传,因此会阻塞当前窗口向右滑动,造成阻塞。而QUIC是基于udp的,创新点在于QUIC依靠一个严格的单调递增的packet序列,一个数据包里面还会有streamID和streamoffset偏移量,即使中途发生丢包或者超时确认,后面的数据包不会等待,等到接收完之后根据ID和offset即可完成重新拼装,从而避免了这种问题。


自定义的拥塞控制


tcp协议是在传输层,默认存在于系统中,而QUIC在应用层,当想要依据实际情况来重定义拥塞算法的时候,QUIC显然更加灵活。


前向安全和前向纠错


都说udp不太靠谱,但是Google给QUIC加上了这个机制:每发送一组数据之后,就对这组数据进行异或运算(效率高),并将结果也发送出去,那么接收方就有两份数据版本,可以对初始数据进行纠错和校验。以此保证了可靠性。


最后


⚽这篇文章主要介绍了HTTP/2.0和HTTP/3.0出现的意义~

⚾如果你对这篇文章感兴趣欢迎点赞关注+收藏,更多精彩知识正在等你!😘

相关文章
|
8月前
|
网络协议 安全 网络安全
什么是HTTP
什么是HTTP
115 0
|
8月前
|
网络协议 安全 网络安全
2.什么是HTTP
2.什么是HTTP
109 0
|
4月前
|
网络协议
浅谈HTTP的理解
浅谈HTTP的理解
185 65
|
8月前
|
Web App开发 缓存 网络协议
1.HTTP 前世今生
1.HTTP 前世今生
61 0
|
Web App开发 存储 网络协议
Http中你必须知道那点事
HyperText Transfer Protocol,超文本传输协议,规定了浏览器和服务器之间数据传输的规则。 数据传输的规则指的是请求数据和响应数据需要按照指定的格式进行传输。 如果想知道具体的格式,可以打开浏览器,点击F12打开开发者工具,点击Network来查看某一次请求的请求数据和响应数据具体的格式内容,如下图所示:
102 0
Http中你必须知道那点事
|
网络安全
HTTP2
HTTP2
134 1
|
缓存 网络协议 算法
二、HTTP篇
二、HTTP篇
166 0
二、HTTP篇
|
存储 缓存 网络协议
HTTP几个简单问题哈
《基础》系列
160 0
HTTP几个简单问题哈
|
安全 算法 网络协议
大话http(三)
大话http(三)
|
存储 缓存 网络协议