从HTTP/1.0到HTTP/2,无论应用层协议如何改进,TCP一直是HTTP协议的基础,主要是因为它可以提供可靠的连接。不过,从HTTP3.0开始,这种情况发生了变化。因为,在最新的HTTP3.0中,TCP协议已经被彻底抛弃。TCP队列头阻塞我们知道,在TCP传输过程中,数据会被拆分成顺序排列的数据包。这些数据包通过网络传输到接收端,接收端再将这些数据包按顺序组合成原始数据。这样就完成了数据传输。但是,如果其中一个数据包没有按顺序到达,接收端就会一直保持连接等待数据包返回,此时,后续的请求就会被阻塞。这会导致TCP队首阻塞。HTTP/1.1的管道式持久连接也使得同一个TCP连接可以被多个HTTP使用,但是HTTP/1.1规定一个域名可以有6个TCP连接。在HTTP/2中,同一个域名只使用一个TCP连接。所以在HTTP/2中,TCP线头阻塞带来的影响会更大,因为HTTP/2的多路复用技术使得多个请求实际上是基于同一个TCP连接,那么如果某个请求导致TCP的线头阻塞的话队列被阻塞,多个请求将受到影响。TCP握手时长我们都知道TCP的可靠连接是建立在三次握手和四次握手的基础上的。但问题是三次握手需要时间。在TCP三次握手过程中,客户端和服务端需要进行三次交互,也就是说需要额外增加1.5个RTT。RTT:网络延迟(往返时间)。他指的是一个请求从客户端浏览器发送请求包到服务器,然后从服务器得到响应包的时间。RTT是反映网络性能的重要指标。当client和server距离比较远的时候,如果一个RTT达到300-400ms,那我的握手过程就会显得很“慢”。升级TCP是基于我们上面提到的两个问题。有人提出:既然TCP存在这些问题,而且我们也知道这些问题的存在,那么连解决方案都不难想到。为什么不能对协议本身进行一次升级来解决问题呢?这些问题怎么办?其实,这涉及到一个“协议刚性”的问题。这样一来,当我们在网上浏览数据时,数据的传输过程其实是极其复杂的。我们知道在家里使用网络有几个先决条件。首先,我们需要通过运营商打通网络,需要用到路由器,而路由器是网络传输过程中的一个中间设备。中间设备是指在数据终端和信号转换设备之间插入的辅助设备,用于在调制前或解调后完成一些附加功能。例如,集线器、交换机和无线接入点、路由器、安全调制解调器、通信服务器等都是中间设备。在我们看不到的地方,有很多很多这样的中间设备。一个网络需要经过无数中间设备的转发才能到达最终用户。如果TCP协议需要升级,就意味着这些中间设备需要支持新的特性。我们知道我们可以更换路由器,但是其他中间设备呢?特别是那些比较大的设备?更换成本巨大。而且,除了中间设备,操作系统也是一个重要的因素,因为TCP协议需要通过操作系统内核来实现,操作系统的更新也非常滞后。因此,这种问题被称为“中间设备刚性”,也是“协议刚性”的重要原因。这也是限制TCP协议更新的一个重要原因。因此,近年来,很多由IETF标准化的TCP新特性,由于缺乏广泛的支持,并没有得到广泛的部署或使用!QUIC因此,摆在HTTP/3.0面前的只有一条路,那就是放弃TCP。因此,HTTP/3.0基于UDP+Diffie-Hellman算法(Diffie–Hellman)实现了QUIC协议(QuickUDPInternetConnections)。QUIC协议具有以下特点:基于UDP的传输层协议:它使用UDP端口号来标识特定机器上的特定服务器。可靠性:虽然UDP是一种不可靠的传输协议,但是QUIC在UDP的基础上做了一些修改,从而提供了类似TCP的可靠性。它提供数据包重传、拥塞控制、传输步调和TCP中的其他功能。实现字节流无序并发:QUIC的单个数据流可以保证有序传递,但是多个数据流可能是无序的,也就是说单个数据流的传输是有序的,但是多个数据流的顺序接收收件人发送的订单可能与发件人发送的订单不同!快速握手:QUIC提供0-RTT和1-RTT连接建立使用TLS1.3传输层安全协议:与早期的TLS版本相比,TLS1.3有很多优点,但使用它的主要原因是它的握手次数往返次数较低,这可以减少协议的延迟。上面的障碍,我们介绍了QUIC相对于TCP的诸多优势。可以说这个协议确实优于TCP。因为它是基于UDP的,所以UDP协议本身并没有改变,只是做了一些增强。虽然可以避免中间装备死板的问题,但在推广上也不是完全没有问题。首先,很多企业、运营商和组织拦截或限制53端口(DNS)以外的UDP流量,因为这些流量最近经常被滥用于攻击。特别是,一些现有的UDP协议和实现容易受到放大攻击。攻击者可以控制无辜主机向受害者发送大量流量。因此,基于UDP的QUIC协议的传输可能会被阻塞。另外由于UDP一直被定位为不可靠连接,很多中间设备对它的支持和优化程度不高,所以还是有丢包的可能。..但不管怎么样,HTTP/3.0的时代一定会到来,QUIC协议全面取代TCP的时代也会到来,让我们拭目以待。作者l霍利斯来源l霍利斯(ID:hollishuang)
