本文介绍了Solana网络如何通过引入QUIC协议来缓解网络垃圾信息(spam)问题,并详细解释了TCP、UDP和QUIC协议的工作原理及其对Solana网络性能的提升。
12分钟阅读 2023年9月18日
Solana 是目前市场上最快且最具可扩展性的区块链。它因其交易速度而闻名,使其成为各种用例的理想链。尽管取得了这些成就,Solana 的网络仍受到关于停机的恐惧、不确定性和怀疑(简称 FUD)的影响。虽然这种 FUD 在过去曾是个合理的担忧,但目前是不 warranted。为什么?Solana Labs 的工程师在过去一年中一直在进行各种网络升级,最显著的是用 QUIC 替代了 Solana 自定义的基于原生 UDP 的协议来处理交易。
在本文中,我们将研究网络协议的机制,TCP 和 UDP,并探讨 QUIC 如何在两者之上进行改进。然后我们将转向 Solana,讨论它的特殊优势。本文旨在让你充分理解为什么这次网络升级对 Solana 是一个重要的技术里程碑。
2022年12月13日,Solana 基金会发布了一篇题为 “Solana 网络升级” 的新闻文章。在这篇文章中,他们概述了一系列对网络进行的升级及其相应的进展。这些升级如下:
QUIC
基于质押的 QoS
费用市场
交易大小增加
紧凑投票状态
Solana 过去经历停机的一个重要原因是由于垃圾邮件。一些例子包括:
自 QUIC 实施以来,Solana 没有报告与垃圾邮件相关的停机事件。这标志着 QUIC 在改善 Solana 网络流量和数据接收方面取得了里程碑式的成果。在了解 QUIC 之前,我们必须首先探讨网络协议的机制。这对网络基础的更好理解让我们能够认识到 QUIC 对 Solana 网络的真正影响。
网络协议是一组关于如何在同一网络上的设备之间发送数据的既定规则。网络协议允许连接的设备轻松相互通信,而不考虑它们的内部结构、结构或设计。
想象一下你和朋友坐在巴黎的一家餐馆对面。你们决定用法语交流,因此,谈话顺畅进行。你们共同决定使用法语,这相当于双方达成了一套语法规则、词汇和发音的协议。
网络协议在连接的网络设备中起着类似的作用,就像法语在你的巴黎餐馆对话中作为一种“协议”。选择使用 TCP、UDP 或 QUIC,就意味着达成一套既定的规则和约定以交换信息。遵循特定的网络协议确保连接的设备能够互相理解,而不会产生混淆。
传输控制协议(TCP)是用于在网络上两个端点之间发送数据流的标准化通信接口。文特·瑟夫(Vint Cerf)和Bob·卡恩(Bob Kahn)创建了传输控制程序,这是一种单一的协议,后来被分为一个模块化的架构,包括 TCP 和互联网协议(IP)。整个套件被称为 TCP/IP。在本文中,我指的是传输控制协议,而不是整个套件,当我使用 TCP 的缩写时。
TCP 是面向连接的;它要求在数据发送之前客户端和服务器之间建立连接。TCP 使用三步握手来建立连接:同步(SYN)、同步-确认(SYN-ACK)和确认(ACK)。你可以将 SYN 想象为伸出手进行握手并询问对方是否准备好交谈;将 SYN-ACK 想象为对方握住你的手,表示他们准备好交谈并询问你是否希望继续;将 ACK 想象为你回握他们的手,表示你希望继续交谈。在这里,建立了一个会话。双方都知道他们互相连接,并且双方都同意他们准备好共享信息。
TCP 将数据分解成数据包,这些数据包通过网络发送。每个数据包中添加了小量数据。这些附加数据包括用于检测丢失或错位的数据包的序列号,以及允许检测数据包内错误的校验和。
当谈话中断时,我们会要求对方重复他们的话语,以确保我们正确理解了他们。TCP 处理中断的方式类似,使用自动重传请求(ARQ)。当出现问题时,ARQ 通知发送方重新发送损坏或丢失的数据包。然后,TCP 通知用户降低数据传输速率,并限制在途未确认数据包的数量。一旦错误得以解决,TCP 具有避免拥堵的机制,并逐渐加快速度。
TCP 不是每个用例的合适协议,因为它对所有流量进行了排序。因此,如果数据的一部分丢失或损坏,之后的所有内容都必须等待。但如果我们不需要等待呢?
用户数据报协议(UDP)是用于在网络上传输数据的标准化通信接口。与 TCP 不同,UDP 是无连接的,并且不保证数据包的投递、顺序或重复。UDP 没有任何握手对话,这使得数据传输容易受到底层网络的任何不可靠因素的影响。这使得 UDP 比其他协议更快,因为它不花时间与目标建立连接。然而,这也导致人们称这个协议为“无可靠日期报协议”。
UDP 通过在网络上发送数据报来工作。数据报是一组更自包含的数据,其中包含从源到目标的路由信息。由于包含的信息,数据报不依赖于其他数据报进行路由。这些数据报由报头和数据组成。报头有四个字段,所有字段都是 16 位长:可选的源端口、目标端口、长度和可选的校验和。发送过程如下:
可以将 UDP 想象为在一个繁忙的房间里与某人交谈。你大声喊出这个人,而不担心他们是否听到了你或等待他们的回应。在这里,你希望快速传达你的信息,而不进行任何长时间的对话。这很冒险,因为他们可能没有听到你说的每句话,但它可能非常有效。
为什么在有更可靠的 TCP 时,你会想使用像 UDP 这样的无连接通信协议?UDP 对于对时间敏感的应用非常有用,或者在一些数据丢失是可以接受的情况下。与朋友一起玩电子游戏时失去几帧数据比不断暂停和缓冲要更好得多。UDP 还用于 VoIP 通话、域名系统(DNS)查询以及监控和日志记录。
QUIC 是一种现代传输层协议,由 Google 的 Jim Roskind 于 2013 年设计。它将 TCP 的可靠性与 UDP 的低延迟好处相结合,创建了一个优化的环境,便于快速和安全的异步通信。QUIC 的独特之处在于将安全会话和高级流控制策略(TCP 的特征)融入 UDP 提供的更灵活和快速的框架中。
在 QUIC 中,连接设置通过将密钥和协议细节的交换集成到其初始握手中,从而流线化,始终安全地加密该交换使用传输层安全性(TLS)。该协议通过 UDP 启用多路复用连接,允许多个独立的数据流同时达到其目的地而不会相互影响。QUIC 独立控制每个流的流量,确保即使一个流遇到错误,它也不会阻碍其他流。这有助于防止队首阻塞(即,一个数据包在队列中阻止了一排数据包),这是 TCP 连接常常遭遇的问题。
如果数据包丢失或损坏,QUIC 负责智能地重新传输数据,从而维护通信的完整性和连续性。此外,QUIC 对网络环境的变化具备强大的适应能力。每个数据包都携带一个连接标识符,唯一识别与服务器的连接,不论源如何。因此,通过发送另一个数据包可以重新建立连接,因为每个数据包都包含这个 ID,这意味着原始连接依然有效。这意味着,如果你搬到另一个房间,从比喻上讲,你的对话不会中断,而是无缝进行。
想象一下你又在那个忙碌的房间里,试图与朋友交谈。这次,你配备了加密的对讲机,让交换信息变得安全而清晰。随着你的对话涉及各种话题,你的朋友用竖起大拇指来确认每个消息。当你看到一脸困惑的表情时,你会想再重复任何误解的信息,确保没有内容在翻译中丢失。如果你或你的朋友移动到另一个房间,对话依然不受影响。这就是 QUIC 的本质 — 强大、灵活、高效的通信。
QUIC 为 Solana 提供了许多优势,即:
QUIC 已添加到接收用户交易的端口。这允许对一个参与者的流量施加限制,以便网络可以集中处理真正的交易。QUIC 在 Solana 上线,并在 1.13.4 版本中完全采用 Mainnet-beta。在其整合之后,网络在稳定性和吞吐量方面观察到了明显改善。
尽管有这些进展,最近的网络拥塞引发了关于 QUIC 的计算效率与 Solana 先前的 UDP 实施的辩论。批评者指出,原始的 UDP 方式让验证者可以专注于交易处理,而不是管理握手垃圾邮件和加密。此外,在 Solana 的实现中,密钥的交换和验证并不是初步握手的一部分。Solana 使用 QUIC 的选项发送“挑战数据包”来验证 IP 地址。这个挑战的目的在于避免在握手的第一步进行证书验证,而是在 IP 验证后的握手第二部进行验证。Solana 是否在与垃圾邮件或 DDoS 攻击相关的停机中仍存在争议,考虑到 Solana 最近在 2 月发生的网络中断可以被视为拒绝服务。
随着网络的发展,持续检讨和改进网络实施是重要的。QUIC 旨在解决许多 TCP 和 UDP 的问题,但从后视角来看,它的有效性还存在争议。一个重要的考虑是,考虑某样东西在硬件上的表现。TCP 在硬件上的表现比 QUIC 好,这对于其简洁性来说。可以轻松地争辩说,使用 AES 指令集 的 TCP 基于协议的吞吐量将比 QUIC 高,并且在 TPS 方面更有效。
值得注意的是,来自 Jump Crypto 的团队正在推动 QUIC 的边界。该团队在开发 Firedancer ——一个新的 Solana 验证者客户端时创建了自己的强大且可扩展的实现。Firedancer 的网络从头开始设计,以利用接收端缩放,这是一种硬件加速的负载平衡。这种并行架构允许每个 CPU 核心有效地处理一部分传入流量。该团队已经在推特上发布了:
Firedancer 的 QUIC 技术里程碑的演示和线索可以在这里找到。
恭喜!在这篇文章中,我们探讨了网络协议的基础,重点关注 TCP 和 UDP 的角色及其演变为 QUIC。我们还考察了 Solana 的 QUIC 实施,突出了它在增强网络中的关键作用。尽管 Solana 对垃圾邮件和 DDoS 攻击的抗性由于 QUIC 而得到了改善,但网络的成长揭示了关于其计算效率和实施细节方面的挑战与辩论。
QUIC 体现了 Solana 促进高吞吐量和低延迟网络的核心目标。其多路复用和数据包丢失恢复能力使 Solana 成为性能和可扩展性讨论的前沿。Firedancer 团队的实现展示了 QUIC 的适应性,突显了针对网络变化需求的定制优化潜力。
了解 QUIC 作为 Solana 开发者可以帮助你在应用架构、交易错误等主题上做出更明智的决策。Solana 正在不断发展,QUIC 亦然。保持跟进最新的网络变化是建立高效能应用的最佳方式。即使你不是开发者,对 QUIC 更加技术化的理解也可以帮助你理解为什么 Solana 是一个以速度和可扩展性而闻名的高效能区块链。
如果你已经读取到此,谢谢你!请务必在下面输入你的电子邮件地址,以便你不会错过任何有关 Solana 新动态的更新。准备进一步深入吗?访问 Helius 博客 探索最新文章,继续你的 Solana 旅程,今天就开始吧。
- 原文链接: helius.dev/blog/all-you-...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,在这里修改,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!