• 太阳集团tcy8722

    当前位置: 首页 >应用方案 >技术应用 >

    HTTP3.0比HTTP2.0强在哪里

    首先,我们先来介绍一下HTTP2.0传输协议,HTTP2.0传输协议通过二进制传输、多路复用、Header压缩、Server Push等特性大大地提升了HTTP1.x的性能,但是由于HTTP2.0传输协议是基于TCP协议实现的,TCP本身特性导致其必然存在一定的瓶颈及缺陷。

    HTTP2.0缺陷:

    Head-Of-Line Blocking(队头阻塞):HTTP2.0传输协议多个请求都是在一个TCP连接中进行的,如果TCP传输时出现丢包,那么整个TCP就要等待重传,这样就会导致该TCP连接中的所有请求被阻塞。举个例子,见下图:

    TCP无线传输协议层

    从上图可以看到发送端一共发送了四包packet,其中packet 3在网络层丢失了,即使packet4被接收方的内核接收到,但因为在内核中其数据并不是连续的,导致接收端的应用层无法读取,只有等到packet3重传后,应用层才可以从内核中读取数据。

    TCPTLS握手时延:

    TCP协议需要通过三次握手来建立TCP连接确保通信的可靠性(1.5RTT),TLS_V1.2协议会在TCP协议之上通过四次握手建立TSL连接保证通信的安全性(2个RTT),HTTP协议会在TCPTLS上发送请求并接收响应(1个RTT)。

    这意味着,假如我们想要访问美国的服务器,RTT约为250ms时,那么此时HTTPS请求的耗时大概要为1s左右,这就比较高了。

    连接迁移需要重新连接:

    一个TCP连接是由源IP地址、源端口、目标IP地址以及目标端口来确定。这表示如果端口或者IP地址发生变动,就需要重新让TCPTLS进行连接。这不适于设备切换网络的场景。

    上面这三个问题其实都是TCP协议固有的问题,无论HTTP/2应用层怎样进行设计,都改变不了这些缺陷,要想解决其根本,就需要将传输层协议TCP更换为UDP,而HTTP 3.0就是这样做的!


    HTTP3.0通信协议传输层

    我们知道UDP是一种简单、不可靠的传输协议。当然HTTP 3.0也不仅仅只是将传输协议由TCP替换为UDP,它还基于UDP在应用层实现一个叫做QUIC的协议,这个协议具有与TCP类似的连接管理、拥塞控制等特性,可以将UDP变得“可靠。

    下面介绍QUIC协议的优点:

    无队头阻塞:

    QUIC使用的传输协议是UDP,其不关心数据包的顺序或者数据包丢失,但是QUIC会保证数据包的可靠性,每个数据包都会有一个唯一标识,当某个stream的一个数据包丢失。这个stream的其他数据包即使到达了HTTP,也不会被读取,直到QUIC重传丢失的数据。

    HTTP/2不同的是其他stream不会因此受到影响。

    连接建立更快:

    QUIC内部包含了TLS_V1.3,它在数据帧中会携带TLS里的信息。并且QUIC不需要像HTTP/2通过TCP+TLS握手,它的握手过程仅需要1RTT,握手的目的在于确认双方的连接ID。因此QUIC仅需一个RTT就可以同时完成连接建立与加密密钥。甚至它在第二次连接时,应用数据包可以与QUIC握手信息一并发送,达到0-RTT的效果。

    支持连接迁移:

    QUIC协议没有用IP地址和端口来确定连接,而是通过连接ID来标记通信两端,即使设备的网络发生变化后,导致IP地址变化,只要仍保有上下文信息(例如连接ID、TLS信息),就可以无缝复用原连接。

    HTTP 3.0 利用QUIC作为底层支撑协议,其融合UDP协议的速度、性能与TCP的安全可靠,解决了HTTP 2.0中引入的一些缺点,优化了互联网的传输体验。相信在未来HTTP 3.0的时代将会到来!



    太阳集团tcy8722