为什么要有HTTP2和HTTP3?

1、先聊聊什么是 HTTP:

我们通常所说的 HTTP(S)1.1 其实是由多个协议组成的:

  1. HTTP协议:用来解析 url 和 数据。
  2. TSL协议:用来对传输的数据进行加密(即为 HTTPS 的 "S")。
  3. IP协议:用来定位客户端与服务器,以便双方通信。
  4. TCP协议:用来确保数据完整、准确地传递。

上述四种协议,在互联网经过这么多年发展后,其中 HTTP1.1协议 和 TCP协议 都各自暴露出一些问题。

HTTP2 则是为了解决 HTTP1.1协议 的一些问题
<br />
HTTP3 则是为了解决 TCP协议 的一些问题

2、HTTP1.1 的主要问题 和 HTTP2 对其的解决之道:

HTTP1.1 的主要问题:

  1. HTTP协议的队头阻塞(Head-of-Line blocking):HTTP1.1虽然实现了多个HTTP请求可以共用TCP管道。
    但建立TCP连接后,每条HTTP的 request 和 response 都是串行交互数据。所以若前面的 response 有延迟,就会阻塞后面的request,从而造成后续http请求的等待,进而影响数据的传输速度。
  2. 队列堆积(Queueing):浏览器对每个域名的http并发请求是有限制的(chrome为6个),当请求数量超过限制时,则新请求会进入队列等待,当并发的请求过多时,也会造成阻塞。
  3. 报文头(Header)信息冗余:每次request都需要携带报文头,且其数据非常冗余。
  4. 自身没有 加密 和 认证机制。

HTTP2 针对 HTTP1.1 的优化点:

  1. 二进制分帧(Binary Framing):HTTP2在应用层(HTTP)和传输层(TCP)之间加了一层 二进制分帧层。将http1.1字符串的“大”数据,分割成多个“小”的二进制数据。其好处:“二进制”可以压缩数据,而“分帧”将大数据变成多个小数据,以便“多路复用”(HTTP2相比HTTP1.1性能的提高主要是因为这一层的引入)。
  2. 多路复用(Multiplexing):其机制是在建立一个TCP管道中,可以同时收/发多个HTTP请求和二进制帧,从而解决HTTP1.1的阻塞问题。
  3. 对HTTP头压缩:HTTP1.1的header有很多信息,每次请求都要重复发送,而HTTP2对头部信息进行了压缩。
  4. 服务器推送:这个功能其实已事实上被废弃,具体原因文末简述。

3、TCP的主要问题 和 HTTP3 对其的解决之道:

HTTP3相比HTTP2本身升级不多,其重点是将 TCP协议 换成了 QUIC协议,以QUIC解决TCP的问题。

HTTP2 VS HTTP3

图片来自 《http3-core-concepts》

TCP 的主要问题:

  1. TCP没有加密功能:TCP协议不包含TLS协议(即 HTTPS 的 "S"),使得现在 HTTPS 运行必须有 TCP 和 TLS 两个协议的连接,才能传输数据。
  2. TCP协议的队头阻塞(Head-of-Line blocking):上文说到HTTP有队头阻塞,其实TCP也有队头阻塞。即TCP传输数据时会将数据拆分一个个顺序的数据包,但传输过程中若某个数据包没有按顺序到达,则接收端会一直保持等待该数据包,这时候就会阻塞后续的数据传输。

QUIC 针对 TCP 的优化点:

首先,QUIC协议基于已存在的UDP协议实现(其原因可见:What Is QUIC

  1. 整合TLS:从上图可见,QUIC包含TLS,所以QUIC相比TCP天然更安全且建立时间更短(TCP协议建议链接需要额外建立TLS连接,而QUIC协议将两者合二为一)。
  2. 多路复用+二进制分帧:其目的为解决TCP协议的队头阻塞。
  3. 使用connection IDs:连接ID独立于客户端端口和IP地址,使得避免重复的连接握手。

最后总结:

  1. 2.0到3.0不断升级的目的:HTTP作为数据传输协议,技术发展的方向就是不断提速;所以 HTTP2.0和HTTP3.0 分别对 HTTP协议 和 TCP协议 进行了升级。其最大的目的都是:进一步提速。
  2. 分成两次升级原因:同时升级HTTP和TCP两大协议工作量巨大,所以互联网工程任务组(IETF)将其升级一分为二。
  3. QUIC协议基于UDP协议的原因:TCP作为传输层协议已广泛被互联网世界的中间硬件(如防火墙、网站、路由器等)所支持,而这些硬件升级非常慢,若断然废弃TCP协议而采用新协议,这些硬件无法良好支持。而UDP协议是古老的协议,上述这些硬件都默认支持UDP,所以QUIC协议基于运行在UDP协议之上而设计。
  4. HTTP2为什么废弃服务端推送功能:具体原因见# Intent to Remove: HTTP/2 and gQUIC server push
    。HTTP3中用于替代 Websocket 的方案为:《# [译]WebTransport 会在不久的将来取代 WebRTC 吗?》
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,723评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,485评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,998评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,323评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,355评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,079评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,389评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,019评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,519评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,971评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,100评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,738评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,293评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,289评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,517评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,547评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,834评论 2 345

推荐阅读更多精彩内容