接上篇所述,将这些概念解耦为离散的概念使我们能够朝着最佳组合性能、安全控制和易于管理的方向发展。接下来,我们将深入研究底层网络技术,让我们絮叨絮叨!
在我们努力实现我们的分布式网络拓扑版本时,我们采用了一系列技术,这些技术可在大多数情况下提供最佳性能并反映人们当今工作方式的现实。
第一个问题是路由。如何建立从客户端到资源的网络连接?最简单的解决方案是让Internet上的每个设备都有一个唯一的地址,这样网络连接就可以在任何两个设备之间直接路由。尽管互联网就是这样开始的,每个主机都可以唯一访问,但早在1992年就很清楚,IPv4空间中的每个唯一地址很快就会用尽。随着不可避免的Internet地址耗尽,人们提出了许多解决方案,包括1994年提出的网络地址转换(NAT)并很快被采纳。NAT旨在成为一种短期解决方案,而IPv6是解决耗尽的长期解决方案。最后一块IPv4地址是在2011年分配的,到2021年,我们仍在等待IPv6的完全采用。NAT和IPv4将伴随我们一段时间。
对于大多数用例,NAT不会出现任何特定问题。不知不觉中,今天使用Internet的每个人的流量都在不断地穿越多层NAT以访问公共Internet服务。在这种情况下,私有主机(用户的设备)正在访问公共主机(例如,网络服务器)。流量可以通过公共主机进行交换,该公共主机具有可从私有主机通过ISP路由的可公开访问的端点。
有趣的是,当一个私有主机想要连接到另一个私有主机时——称为点对点连接——例如,两个参与者希望发起视频通话,每个人都在家中的NAT服务后面。家用路由器。自互联网早期以来,已经开发了几种技术来解决NAT穿越问题——所谓的因为每个对等点必须在其对等点之前遍历NAT层。WebRTC是最著名的方法之一,稍后我们将回到NAT穿越技术这一主题。
在我们的分布式网络架构中,控制层授权从任何客户端到网络层中任何资源的连接。如果这是最终目标,并且我们无法控制客户端和资源是否位于NAT层之后,那么在这种情况下,客户端如何连接到资源?事实证明,有几种方法,我们将按照复杂性的渐进顺序进行介绍。
代理是基于软件的,并且在操作系统的用户空间中运行。代理很容易部署,并在可能的路由和传输操作类型中引入了显着水平的复杂性,同时通常对启动网络连接的应用程序保持透明。由于这些原因,代理是当今在涉及网络流量管理的许多应用程序中部署的主要解决方案。
在实践中部署代理有两种方法。虽然它们的底层功能可能相同,但它们在部署中做出的权衡不同。
由于我们在上面的概述中以私有代理结束,因此可以肯定的是,我们认为私有代理代表了实现分布式网络拓扑的最佳权衡集。造成这种情况的两个主要原因是私人代理是:
最后一个难题是弄清楚如何让希望连接到它们保护的目标资源的客户端可以访问这些代理:进入NAT遍历。由于NAT已经在Internet连接的网络中实施了几十年,可用于解决两台主机(每台主机都位于NAT层之后)的问题的解决方案范围在今天已经相当成熟。我们不会在这里深入讨论,而是介绍通过NAT遍历建立对等连接所涉及的高级步骤。
NAT穿越过程
NAT穿越过程分为四个主要阶段:
由于各种原因,从阻塞端口到不兼容的NAT层,并不总是可以建立直接的对等连接。在这种情况下,需要维护备份数据传输方法。在实践应用的案例中,这是一个在我们网络架构的传输层中运行的数据中继基础设施。中继具有公共地址,因此它们始终可以从客户端和部署的连接器访问,作为一种可靠的备份传输方法。
总题来说:
我们在上面提到,代理提供了在网络流量管理中引入高水平复杂性的机会。我们利用这一点将新的传输层网络协议QUIC引入到我们的点对点连接中。QUIC对我们的传输层进行了多项改进,包括更快的连接建立、对网络变化的更大容忍度(当今移动设备领域的主要模式标准)以及对多个并发数据流的更有效的流量管理。像QUIC这样的用户空间网络堆栈实现可以比它们的内核空间对应物更快地发现。
QUIC最初由Google开发,此后由IETF在RFC9000中标准化,并被提议作为HTTP/3的底层传输协议。QUIC的主要目标之一是为HTTP/2提供更好的传输机制,由于它使用TCP作为底层传输协议,因此存在所谓的线头阻塞问题。当通过单个TCP连接多路复用的所有HTTP/2流都受到重传的影响时,会出现线头阻塞问题,因为丢包仅影响流的子集。
QUIC建立在UDP之上,UDP是一种不可靠的网络协议,因此它提供了自己的可靠传递机制。QUIC通过在单个连接上多路复用多个并发数据流,提供可靠且有序的交付。
QUIC传输
尽管多年来TCP实现已经高度优化,但对于许多用户和用例来说,QUIC的低延迟可以说比原始吞吐量更为关键,QUIC在这方面可以匹配或超过TCP+TLS。由于采用了QUIC,Linux内核中的UDP性能也在不断优化,这将在未来进一步提高性能。
QUIC开发背后的动机——提高单个可靠连接上多个流的吞吐量——对于最大化从客户端到多个私有资源的吞吐量也很有价值。尽管QUIC被设想为优化单个应用程序(例如您的浏览器)的多个流的吞吐量,通过将来自任意数量的应用程序的单个数据流映射到单个QUIC流并将这些数据流传递到所部署的连接器和资源来扩展这一概念在我们的分布式架构中的任何地方。
除了对多个数据流进行性能管理之外,采用QUIC还为我们的网络架构带来了几项有价值的改进:
自2019年以来,我们逐步推出零信任安全内容,受到的欢迎度让我们感到非常兴奋,接下来我们接公开免费的基于新一代网络的零信任安全防护套件,您可以在其中为公司、家庭网络或个人带来不一样的体验。
留言与评论(共有 0 条评论) “” |