最后更新:2022-08-02 15:47:51 手机定位技术交流文章
作者L·霍利斯
资料来源: Hollis (ID: Hollischuang)

从HTTP/1到HTTP/2,不管应用程序层协议如何改进,TCP一直是HTTP协议的基础,主要是因为它提供了可靠的连接。
然而,从HTTP3开始,情况发生了变化。
因为,在最新版本的HTTP 3.In 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:网络延迟(Round Trip Time)。他是指一个请求从客户端浏览器发送一个请求数据包到服务器,再从服务器得到响应数据包的这段时间。RTT 是反映网络性能的一个重要指标。
在客户端和服务端距离比较远的情况下,如果一个RTT达到300-400ms,那么我握手过程就会显得很”慢”了。
升级TCP
基于上面我们提到的两个问题,有人提出来说:既然TCP存在这些问题,并且我们也知道这些问题的存在,甚至解决方案也不难想到,为什么不能对协议本身做一次升级,解决这些问题呢?
事实上,这涉及到“锁定协议”的问题。
因此,当我们在互联网上浏览数据时,数据传输的过程实际上非常复杂。
正如我们所知,家庭使用网络的先决条件有几个:首先,我们需要通过运营商打开网络,我们需要使用路由器,路由器是网络传输过程中的中间设备。
中间设备是指插入在数据终端和信号转换设备之间,完成调制前或解调后某些附加功能的辅助设备。例如集线器、交换机和无线接入点、路由器、安全解调器、通信服务器等都是中间设备。
在我们无法看到的地方,有如此多的中间设备,网络需要通过无数的中间设备才能到达最终用户。
如果TCP协议需要升级,那么意味着需要这些中间设备都能支持新的特性,我们知道路由器我们可以重新换一个,但是其他的那些中间设备呢?尤其是那些比较大型的设备呢?更换起来的成本是巨大的。
除了中间设备之外,操作系统也是一个重要因素,因为TCP协议需要通过操作系统内核实现,并且操作系统的更新很晚。
因此,这一问题被称为“中间设备僵化”,也是“合同僵化”的一个重要原因,也是限制TCP协议更新的重要原因。
因此,近年来,由于缺乏广泛的支持,许多由IETF标准化的TCP功能没有被广泛部署或使用!
QUIC
所以,把它放在HTTP/3上。 只有一条前进的道路,那就是放弃TCP。
于是,HTTP/3.0在基于UDP+迪菲赫尔曼算法(Diffie–Hellman)之上实现了QUIC协议(Quick UDP Internet Connections)。
QUIC协议具有以下特点:
基于UDP的传输层协议:它使用UDP端口编号来识别指定机器上的特定服务器。
可靠性:虽然UDP是不可靠传输协议,但是QUIC在UDP的基础上做了些改造,使得他提供了和TCP类似的可靠性。它提供了数据包重传、拥塞控制、调整传输节奏以及其他一些TCP中存在的特性。
实现无序、同时的节点流:QIC的单一数据流可以保证有序的交付,但可能在多个数据流之间发生混乱,这意味着单一数据流的传输是订购的,但接收者在多个数据流中接收的订单可能与发送者发送的订单不同!
快速握手:QUIC提供0-RTT和1-RTT连接
使用TLS 1.3 传输层安全协议:与以前的TLS版本相比,TLS 1 具有许多优点,但使用它的主要原因是它花费较少的时间来往,从而减少协议的延迟。
阻碍
此外,我们介绍了QIC与TCP相比的许多优点,可以说,该协议与TCP相比确实更好。
因为他是基于UDP的,并没有改变UDP协议本身,只是做了一些增强,虽然可以避开中间设备僵化的问题,但是,在推广上面也不是完全没有问题的。
首先,很多企业、运营商和组织对53端口(DNS)以外的UDP流量会进行拦截或者限流,因为这些流量近来常被滥用于攻击。
特别是, 一些 现有 的 UDP 协议 和 扩充 攻击 威胁 的 实施 使 攻击者 能够 控制 无辜 的 宿主, 向 受害者 发送 大量 的 交通 。
因此,基于UDP的QUIC协议可以从传输中屏蔽。
此外,由于UDP一直不能可靠地定位连接,所以有许多中间设备对其的支持和优化水平并不高,因此有可能丢失数据包..
但无论如何,HTTP/3.0的时代将到来,而TCP的时代将被完全的QC协议所取代,所以让我们等一下。
本文由 在线网速测试 整理编辑,转载请注明出处。