简说亦来云——从外行的视角解读点对点的Carrier网络(一)

第1部分——互联网与计算机网络概述

在前面的文章中,我们了解了亦来云采用的是AuxPoW+DPoS混合共识机制,并阐明了它是如何确保亦来云区块链安全性的。我们现在将进入亦来云生态系统的下一个支柱: 亦来云 Carrier(运营商)。 亦来云 Carrier是一个完全的去中心化的点对点网络。Carrier网络是无服务器网络,提供端到端的加密,并使用区块链发布的DIDs来进行身份验证连接。 亦来云生态系统参与者之间的所有数据传输都通过Carrier网络传达的.亦来云Carrier对亦来云生态系统至关重要,可被视为智能万维网的Web组件。当我们想象完全采用这个智能网络时,Carrier网络将充当“主力”,确保成千上万的去中心化应用程序和侧链项目自含网络之间的连接。要完全掌握和欣赏亦来云 Carrier,需要对计算机网络和互联网有一个大致的了解。本文的目的是为您提供信息和工具,来将亦来云 Carrier充分概念化并展示其技术优势。

免责声明:本文中提供的信息并非都与亦来云 Carrier直接相关。但是,阅读本文会对互联网有广泛的了解,有助于理解Carrier的诸多好处,并且可以进行更有成效和更有见解地讨论。

计算机网络

计算机网络 是一组两个或多个计算机经由介质连接在一起,如以太网电缆或WiFi。这种链接允许数据交换和设备之间的资源共享。资源共享可以是从共享文档到共享外围设备(如打印机)的任何内容。随着时间的推移,我们已经开发了各种类型计算机网络以满足特定需求,或者说随着新技术的涌现而不断发展。由此,用于对计算机网络进行分类的框架也构建起来。

分类示例

为了概述分类过程,让我们简单地看一下几个计算机网络以及它们如何获得命名的。

局域网

局域网(local area network, LAN)是一组计算机及关联设备与服务器或路由器连接来共享的公共通信线路或无线连接。通常,LAN包括小范围内的计算机和外围设备,例如家庭、办公室或商业机构内的计算机网络。连接到LAN的计算机或其他设备可以共享资源,例如共享打印机或网络存储。

以下是常见网络分类列表:

1. 城域网(Metropolitan Area Network, MAN)

城域网由多个互连的LAN组成,跨越整个地理区域,如城镇或城市。所有权和维护通常由一个公司或地方政府处理。

2. 广域网(Wide Area Network, WAN)

WAN跨越物理距离连接LAN。 WAN允许计算机通过一个大型网络进行通信,即使它们相距很远。由于广域网范围覆盖广泛,它通常由多个管理员或公众拥有并进行维护。

互联网

这部分内容为理解互联网是什么提供了完美的解答。当我们想到互联网时,我们有时会想到天空中一些神秘的能量来源,它们神奇地传达了我们想要在我们的设备上显示的内容。然而,互联网只不过是局域网,广域网,城域网和其他类型网络的组合,它们协同工作以无缝传输和共享数据。简而言之,互联网是一个计算机网络的网络。事实上,“互联网”这个术语是网络互联(Internetworking)的简写。

还记得局域网吗?没有互联网,局域网中的设备只能与该局域网内的设备通信。实际上是路由器、交换机以及其他各种能够编译解码TCP / IP协议语言的网络设备,让来自一个LAN内的用户与全世界各种其他网络通信成为可能。

好了,我们已经建立了互联网是什么的基本概念,我们可以继续了解一些使其发挥作用的基本要素。

TCP / IP协议

允许跨网络进行通信主要有两种协议。这些协议应该易于记忆,因为套件以它们命名!

传输控制协议(TCP)和因特网协议(IP)结合起来形成“TCP / IP协议”。 TCP / IP的另一个名称是“互联网协议套件 Internet Protocol Suite”,这是官方互联网标准文档中使用的短语。

TCP / IP协议的目标很简单:提供用于将数据从一个网络中的主机交换到另一个网络中的主机的方法和标准。 主机 是连接到因特网的任何计算机或设备。互联网上的数据是通过将数据划分为一个个小段,即网络数据包,来发送的TCP / IP堆栈由四层组成,最终用于将数据分段为微小数据包,然后将它们从一个主机传输到另一个主机。

TCP / IP堆栈的层次如下:

1) 应用层 Application layer

2) 传输层 Transport layer

3) 互联网层(简称网络层)Internetwork layer

4) 网络接口和硬件层(有时称为物理层)Network Interfacr & Hardware Layer

在我们继续解释这些分层之前,将这种堆栈与我们熟悉的协议类比是很有用的。邮政服务“协议”在很多方面与互联网协议套件非常相似。让我们详细介绍一件物品是如何通过邮政服务创建、打包,然后从一个人发送到另一个人那里的。我们假设收件人住在公寓大楼。

邮政服务协议:

  1. 内容(应用层):发送一个包裹前您先要有一个需要发送的物品
  2. 包装(传输层):一旦你有物品要发送,你打包物品并在在它上面标记目的地址和公寓号码。您也可以在包裹上贴上一个退货地址。然后将包裹放入邮政服务邮箱。
  3. 接送/路由(网络+硬件层):邮政服务工作人员随后将拿起包裹并将其送到当地的配送中心。在整个去往目的地的旅程中,包裹可能经过许多中间设施,将其转发到下一个设施,直到它到达目的地当地的邮局。然后,包裹将被送到目的地,邮政服务工作人员将把它放入标有正确公寓号码的邮箱中。
  4. 接收/解包(传输层):收件人将从邮箱收到包裹并将其拆封。
  5. 接收和使用该物品(应用层):收件人将收到并享有这个物品。

现在让我们详细介绍从主机A中运行的进程到主机B中运行的进程的数据之旅:

  1. 内容(应用层):数据首先由运行在主机A的应用层中的某个进程创建。
  2. 包装(传输层) :然后将数据“传递”到传输层,在传输层中将数据分解为分段传输数据包。各种传输层协议都有自己的规则。目标端口号包含在这些数据包中,用于区分接收主机上数据的进程。端口号可以类比为上述案例中的公寓号。
  3. 提货/路由(网络+物理层):然后将传输数据包传递到网络层,在网络层中将传输数据包包装在网络层数据包中。这些数据包包含目标主机的IP地址,类似于邮件上的目标地址。使用此地址,数据包将通过构成网络和物理层的路由器、交换机和网络链路进行路由和转发。这类似于包裹通过各个配送中心转发,其中物理运输工具是汽车、卡车和飞机。然后,数据包将到达目标IP地址,此时数据包将被传递到终端主机的传输层。  
  4. 解包(传输层):然后将“解包”数据包。使用传输层数据包中包含的目标端口,可以将数据输入正确的目标端口。目标端口类似于公寓大楼中标有收件人编号的邮箱。
  5. 读取内容(应用层):然后将数据传送到与目标端口关联的终端主机上的正确进程。

从主机A到主机B的旅程数据大致如下图所示:

每一层的信息都是从它周围的层中抽象出来的。每个终端主机必须拥有所有可用的协议,来创建和解码使用TCP / IP套件发送的任何数据包。转发和路由数据包的中间目的地的设备不需要包含传输或应用层协议。一个要离开主机的数据包看起来应该像这样:

传输层

假设您正在尝试将文件发送给一位朋友。这究竟是如何工作的呢?从您和您朋友的角度来看,该文件通过互联网发送,并完整地到达目的地。细节都是抽象的,对用户来说似乎很简单。实际上,有许多复杂的协议都在背后一起工作来将该文件发送给您的朋友。在TCP / IP套件中,传输层负责从应用层接收数据,将其分成小包,打包,然后将其传递到网络层。因此,该文件将来自应用层中运行的某些进程,例如FTP(文件传输协议),此时传输协议会将其分解为许多小数据包。每个传输层数据包都有一个标题,其中包含重要信息,负责在数据到达目标主机后将数据传送到正确的进程。具体如何打包这些数据包取决于所使用的特定传输协议。两个主要传输层协议是传输控制协议(TCP)和用户数据报协议(UDP)。

传输控制协议(TCP)

TCP就是所谓的面向连接的协议。使用TCP协议,在两个主机之间传输任何数据之前,必须首先建立稳定的连接。TCP提供可靠的数据传输,拥塞和流量控制以及有序传输。出于这些原因,TCP是最广泛使用的传输协议。

TCP“三方握手”

如上所述,TCP是面向连接的协议。这意味着在发送数据之前,必须在尝试通信的两台主机之间建立连接。在向您的朋友发送文件的情况下,在开始传输文件之前,必须首先建立稳定的连接。 TCP通过执行所谓的“三方握手”来创建稳定的连接。希望彼此连接的主机必须经历彼此发送同步(SYN)和确认(ACK)消息的过程。

  1. 首先,主机A将发送同步消息。这条消息可以比喻说:“嘿,你在那里吗?”
  2. 一旦主机B收到SYN消息,它就会发送一条ACK和SYN消息,这可以比作说:“嘿,我收到了你的SYN数据包了,而我准备好下一个(数据包)了!“
  3. 最后,主机A将自己的确认消息发送回主机B,如果成功,则表示已建立连接。

建立连接后,数据传输阶段开始。发送完所有数据后,终止连接。使用TCP,两个主机在传输期间保持连接。这被称为打开和维护“会话”。

数据包排序和重传

当来自传输层的数据包通过传递到网络层而进行“运送”时,无法保证这些数据包将到达其目的地。如果他们这样做,他们仍然可能无序到达。TCP使用数据包序列号来识别正在发送的数据包的正确排序,以便在它们无序到达时可以正确地重新排序。发送方将重传任何未接收的数据包。

TCP优缺点

TCP是一种非常有用的协议。它保证所有数据包都以正确的顺序传送到应用程序,并且损失最小。但是,它有一些缺点。虽然通过TCP传输数据非常可靠,但它会给主机设备带来更大的负载并占用更多带宽,因为该协议会强制主机持续监控连接和数据传输。连接过程本身会引入延迟和带宽成本。 TCP的缺点 可归纳如下:

1) 网络密集协议 ——由于TCP必须不断监视会话的状态,因此在网络上可能会非常紧张。在依赖于通过某些不可靠的连接(例如流服务)快速发送数据包的应用程序中尤其如此。幸运的是,自互联网诞生以来,数据传输的速度呈指数级增长,因此这个问题不像过去那么严重。然而,随着互联网速度的提高,应用程序的范围越来越广。因此,无论带宽如何增加,TCP都可能继续受到各种应用的限制。这是协议设计中的固有权衡。

2) 规则太多 ——“窗口化”是TCP测量一次可以向目标主机发送多少数据的过程。如果源主机和目标主机之间的连接稳定,TCP将继续向目标主机发送连续的数据流,而不会出现问题或中断。但是,由于TCP需要在两个设备之间保持打开会话来继续发送TCP数据包, 因此如果会话被中断(即互联网速率短时间内快速降低)必须重新启动三段握手恢复发送数据包的过程。这引入了广泛的问题,因为它涉及视频流服务和其他服务,其中数据流中的任何中断都可以降低服务质量(QoS)。

虽然TCP的所有规则都允许主机之间的可靠连接,但显然TCP并不适用于每个应用程序。需要一种能够尽可能快地分发数据分组的协议,而不必担心稳定性和分组丢失。因为它与数据包分发有关,需要检查的规则越少,从主机发送到主机的数据包就越快。由此,我们应该已经开始很好地理解为什么UDP是特定用例中TCP良好替代品。

用户数据报协议 UDP

与面向连接的TCP不同,UDP是一种无连接协议。它通常被称为“裸骨”传输协议,因为它提供最少量的功能。 UDP协议基本上是一个不那么繁琐的TCP版本,但与此同时,它也不太可靠。 UDP不对数据包进行排序,因此不关心数据段到达目标主机的顺序。 UDP也不会尝试重新传输在网络层中丢弃的任何数据包。因此,UDP被认为是不可靠,无连接和无状态的协议。没有握手过程,主机不需要跟踪任何会话信息。但是,由于UDP会跳过所有额外的规则和进程,因此它的开销会大大降低。它能以比TCP分组快得多的速率构造和发送UDP分组。由于这与UDP有关,因此必须知道这种传输方法并不能保证您发送的数据能够到达目的地。与邮政服务类比的比较,UDP就像在邮箱中放置邮件一样,并盲目地希望邮政服务将其送到正确的位置。他们大部分时间都这样做,但有时它会在途中迷路。如果确实迷路了,那你就运气不好而且它已经永远消失了。

UDP流控制和数据包分段

正如我们所知,由于UDP没有任何流量控制、握手过程、数据包排序或错误检查,它能够以比TCP更高的速度分散数据包。 但是,有人可能会想,没有这些看似重要的功能,为何我们仍然会使用UDP。 那么,在 UDP协议上的应用层做出了创新。开发人员可以在应用程序级别的底部而不是在传输层级别实现自己的引入排序和流量控制的方法。这可以为UDP提供一些TCP的可靠性,同时仍然保持用户数据报协议的低开销和速度。好处是开发人员可以使用简单的UDP协议并根据其特定应用程序的需要进行定制。这就是亦来云 Carrier的情况,我们稍后会介绍。

UDP缺点

  1. 无连接—— UDP是无连接和不可靠的传输协议。没有默认功能可以确保重新传输丢弃的数据包,或者以与发送时相同的顺序接收数据。必须在应用程序级别添加这些功能,这可能很难实现和管理。


  2. 错误控制 ——UDP不使用任何错误控制。如果UDP检测到收到的数据包中有任何错误,它会以静默方式丢弃它。


通常,在TCP和UDP方面,在可靠性和速度之间存在折中。 TCP以速度为代价提供可靠性,而UDP以可靠性为代价提供速度。是否使用TCP或UDP取决于应用程序的需要。截至目前,互联网上超过90%的应用程序都使用TCP,因为它的可靠性更容易使用。但是,这并不意味着UDP并不重要,事实上,UDP正在夺取TCP的领地。 Google基于UDP的协议QUIC现在占其出站流量的35%,并且可能会在未来几年内继续增长。 UDP的流行度的增加可能是由于其灵活性,因为它可以在应用层增加以满足特定需求,同时保持更高的传输速度。 亦来云 Carrier主要在UDP上运行,用于其安全的端到端加密通信(~80%UDP,~20%TCP)。正如我们将看到的,Carrier协议使用自己的方法通过UDP进行可靠的数据传输。

互联网络和硬件层

在我们与邮政服务的类比中,传输层是打包的地方,而互联网层是运输的地方。 互联网层允许不同网络中的主机相互通信。网络层类似于邮政服务用于将包从一个点路由到另一个点的各种分发中心。物理层可以比作道路、卡车和飞机,它们代表从一个配送中心到下一个配送中心的物理方式。类似道路、卡车和飞机,互联网的基础硬件基础设施由许多互连的链路、路由器和交换机组成。在这个类比中,电缆和链路是道路,卡车和路由器和交换机是配送中心。

互联网协议(IP)

当传输数据包传递到网络层时,IP将确定这些数据包如何路由到目标主机。如果没有互联网协议,主机将无法与外部网络通信,这是互联网的本质。 IP协议允许LAN,MAN和WAN中的主机在逻辑上和地理上与完全不同的网络中的其他主机进行通信。IP协议的基础是IP地址。

什么是IP地址?

互联网上的每台计算机都分配有一个的唯一编号 称为IP地址。如果没有为您的计算机分配唯一的IP地址,您将无法与互联网上的其他设备通信。IP地址可以被视为标识互联网上设备的唯一徽章编号。在我们的邮政服务类比中,IP地址就像家庭、办公室或商业机构的地址。传输协议将数据分成小数据包后,将它们放入IP数据报中,其中包含目标主机的IP地址等。该IP数据报被传递到主机自己网络中最近的路由器,称为网关路由器。然后,此路由器可以将数据包转发到与其连接的其他路由器。我们不会在这里深入探讨协议的细节,但是 ,数据包或多或少地根据目标IP地址连续转发到各种路由器的交换机上。每个数据包可以采用完全不同的路径, 并具有唯一的到达时间。因此,数据包可能无序到达。最终,数据包将到达目标网络的网关路由器,此时它们将被传送到终端主机。

IP协议是尽力而为的传输协议,这意味着它不能保证数据包不会在途中丢失。在无连接的意义上,它也类似于UDP。 互联网协议不关心这些数据包到达终端主机的顺序。它所关心的只是通过最佳路径将数据包从一个主机传送到另一个主机。一些网络技术人员将TCP和UDP数据包称为“搭载”IP协议。由互联网的传输协议决定是否存在无序传送、丢包和流量控制。

第2部分将于下周发布……

作者

Charles Coombs-Esmail[u/C00mbsie on reddit]

Amos Thomas [Famous Amos on youtube]

Michael Ekpo[adeshino on discord]

Eric Coombs Esmail