助力企业打造专属私域流量
锐拓荣耀提供企业数字化解决方案
外贸建站,网站建设,全媒体运营、搜索引擎优化与社交媒体推广等一切值得重视的企业网站话题都会在这里被展现。
在深入探讨互联网通信的发展历程之前,让我们先简单解释一下RTT(Round Trip Time)的概念。RTT,即往返时间,是指通信信号从发送方传输到接收方,并收到接收方的响应信号所花费的总时间。
TCP建立连接时间
在互联网通信的早期阶段,TCP(传输控制协议)被广泛应用于HTTP(超文本传输协议)的传输。TCP需要通过三次握手来建立连接,这三次握手分别需要经历一个去程和一个回程(或两个回程和一个去程),相当于1.5个RTT的时间。因此,TCP连接的时间被确定为1.5RTT。在TCP连接建立之后,HTTP请求才开始被发送,而接收服务器的HTTP响应又需要额外的1个RTT时间。所以,基于TCP传输的HTTP通信总时间达到了2.5RTT。
安全加密通信的兴起
随着互联网的蓬勃发展,明文传输的HTTP通信的安全性问题日益凸显。为了解决这个问题,Netscape公司创造性地发明了SSL(安全套接层)协议,它位于TCP与HTTP之间,为HTTP提供安全加密服务。然而,SSL最初的设计仅限于加密HTTP通信。为了扩大其应用范围,互联网标准化组织IETF对SSL进行了改进和标准化,并将其命名为TLS(传输层安全协议)。TLS不仅可以为HTTP提供安全加密,还可以支持其他应用层协议,如FTP、SMTP等。
HTTPS通信的RTT消耗
在引入了TLS安全加密之后,HTTPS通信的RTT消耗也随之增加。以TLS 1.2版本为例,HTTPS通信需要经历多个步骤来建立安全的连接,包括客户端发送Client Hello消息、服务器发送Server Hello消息以及双方进行密钥交换等。这些步骤总共需要1.5个RTT的时间来建立TLS连接。因此,整个HTTPS通信的总时间达到了4RTT(TCP连接时间1.5RTT + TLS连接时间1.5RTT + HTTP交易时间1RTT)。
HTTP 1.x的局限性
尽管HTTP 1.x版本在互联网通信中发挥了重要作用,但它也存在一些局限性。例如,浏览器从服务器获取的一个页面通常由多个资源链接组成,这些资源链接需要浏览器分别建立TCP和TLS连接来下载。这导致用户需要等待多个漫长的4RTT过程才能看到完整的页面。
HTTP/2的改进
为了解决HTTP 1.x版本存在的问题,HTTP/2应运而生。HTTP/2采用了多路复用的技术,允许用户的多个HTTP请求使用同一个TCP连接进行传输。这样可以大大减少重新建立连接所花费的时间。然而,多路复用也带来了一些副作用,如头部阻塞问题。尽管如此,HTTP/2仍然在很大程度上提高了互联网通信的效率和用户体验。
探索更广阔的世界
当然,互联网通信的发展并未止步于HTTP/2。随着技术的不断进步和用户需求的不断变化,新的通信协议和技术不断涌现。例如,QUIC协议和HTTP/3等就是其中的佼佼者。它们通过优化传输层协议和加密机制等手段,进一步降低了RTT消耗并提高了通信效率。在这个充满机遇和挑战的时代里,我们有理由相信未来的互联网通信将会更加高效、安全和便捷。
QUIC协议:加速互联网通信的新篇章
在探索互联网通信的旅途中,我们发现UDP(用户数据报协议)因其无需连接建立、不引入额外RTT(往返时间)的特点,成为了一个极具潜力的合作伙伴。然而,在HTTP/2的时代,UDP似乎被误打误撞地拉入了更复杂的通信框架中,形成了IP/UDP/QUIC的通信链路。
谷歌开发的QUIC协议,正是对UDP潜力的深度挖掘与利用。QUIC集成了TCP的可靠传输机制、TLS的安全加密功能以及HTTP/2的流量复用技术,将页面加载时间缩短至2.5RTT。更令人振奋的是,QUIC协议中的Session ID会被缓存在浏览器内存中。当用户再次访问同一页面时,无需重新建立TLS连接,而是直接使用缓存的Session ID对应的加密参数,实现0RTT的重连,此时页面加载时间仅需1RTT(HTTP交易时间)。
随后,IETF(互联网工程任务组)对QUIC产生了浓厚兴趣,但希望其能超越HTTP,成为支持多种协议的通用传输层协议。因此,QUIC与HTTP被分离,形成了IP/UDP/QUIC/HTTP的通信架构,整体页面加载时间控制在2RTT以内。
在QUIC协议的标准制定中,IETF选择了TLS 1.3版本进行集成。TLS 1.3以其简洁高效著称,建立连接仅需1RTT,相较于之前的版本减少了0.5RTT的时间消耗。因此,在TLS 1.3与HTTP的联合作用下,页面的整体加载时间降至2RTT,而重连页面的加载时间更是缩短至1RTT。
然而,HTTP/3的推广并非一帆风顺。由于大多数手机、电脑终端使用私有IP,并通过NAT(网络地址转换)设备完成与全球IP的通信,NAT设备对通信状态的记忆成为了一个关键问题。对于基于TCP的HTTP、HTTPS传输,NAT设备可以轻松地根据TCP报文头的状态位判断通信的开始与结束。但对于基于UDP的HTTP/3,NAT设备则难以准确判断通信的结束时机,可能导致会话中断或端口资源被不必要地占用。
为了解决这个问题,有两种可行的方案:一是在QUIC头部模仿TCP的SYN/FIN状态,但这需要全球范围内的NAT设备软件升级;二是让QUIC周期性地发送Keepalive消息,以刷新NAT设备的记忆,避免会话被意外中断。
最后,留给读者一个深思的问题:为何HTTP/3不直接建立在IP层之上,而是选择了UDP作为传输层协议?这背后或许隐藏着更深层次的通信机制与优化策略,值得我们进一步探讨与研究。
*图片资源来自网络,如有侵权,请及时联系!