去中心化点对点网络简史 | 现代去中心化网络 #Nostr 和 #RingsNetwork

什么是点对点网络?

与有中心服务器的中央网络系统不同,对等网络的每个用户端既是一个节点,也有服务器的功能,任何一个节点无法直接找到其他节点,必须依靠其户群进行信息交流。

点对点网络的分类

一般型 P2P

  • 没有中心服务器。
  • 没有中心路由器。

比特币(Bitcoin)网络、BitTorrent 网络、eDonkey 网络(电驴,电骡,ed2k)均属于一般型 P2P,每一个节点均可以作为客户端和服务端,它没有一个中心,没有任何一个节点能够控制整个网络,每一个节点的功能和权限都是对等存在的。

特殊型 P2P

  • 节点负责发布这些信息(因为中心服务器并不保存文件),让中心服务器知道它们想共享什么文件,让需要它的节点下载其可共享的资源。
  • 路由终端使用地址,通过被一组索引引用来获取绝对地址

早期的 Napster 网络属于特殊型 P2P 网络,一群高性能的中央服务器保存着网络中所有活动对等计算机共享资源的目录信息。当需要查询某个文件时,对等机会向一台中央服务器发出文件查询请求。中央服务器进行相应的检索和查询后,会返回符合查询要求的对等机地址信息列表。查询发起对等机接收到应答后,会根据网络流量和延迟等信息进行选择,和合适的对等机建立连接,并开始文件传输。

混合型 P2P

Skype 属于混合型 P2P 网络,用户信息和聊天信息存储在中心化服务器中,当用户直接进行文件传输时,Skype 客户端之间又可以发起直连,不通过服务器,允许客户端之间直接传递文件。

点对点网络发展史

1969 年 — ARPANET

ARPANET 技术架构图
APRANET 访问界面

ARPANET(Advanced Research Projects Agency Network,阿帕网),是美国国防高级研究计划局开发的世界上第一个运营的数据包交换网络,是全球互联网的鼻祖。

阿帕网的主机之间视彼此为对等的计算机节点,而非 C/S(Cilent-Server) 结构。

1979 年 — Usenet

Usenet 比万维网的诞生早了十年,被称为“穷人的阿帕网”。

当用户发布文章时,根据所分 Usenet 层级(新闻组)存储在服务器,它一开始仅在该用户使用的新闻服务器上可以浏览。 每个新闻服务器与其他服务器(“新闻源”)交换文章。这种方式就是 P2P 信息传输,文章从一个服务器复制到另一个服务器 ,最终可以传达到网络中的每个服务器,新闻组消息得以被分布式存储于全球大量的计算机中。每一台服务器都包涵所有的文章内容,服务器之间独立运行,同步文章。

从 90 年代开始,用户便不断上传体积庞大的非文本类内容(色情图片、软件等),自此开始 Usenet 的服务器在流量和存储空间上开始呈现爆炸趋势。AOL 于 2005 年停止使用 Usenet。2010年5月,早在30多年前就开始使用 Usenet 的杜克大学关闭了它的 Usenet 服务器,其理由是使用率低且成本不断上升。

1999 年 — Napster

电影《社交网络》中 Mark 的投资人 Sean Parker

用户可以免费下载Napster客户端,然后从别人那里下载MP3文件,同时自己也作为一台服务器,供别人下载。

Napster有一台中心服务器,向所有用户提供文件目录服务,客户想下载音乐时,需要先到这台中心服务器上查询哪些客户端拥有这首音乐,然后直连到那台机器下载。(上文所述特殊型 P2P 网络)

Napster 操作界面

Napster 是第一个被广泛应用的点对点音乐共享服务,它极大幅度地影响了人们,特别是对于大学生使用互联网的方式。而它的出现,也使得音乐爱好者间共享MP3歌曲变得容易,却也因此招致了影音界对其大规模侵权行为的指责。尽管在法庭的责令下该服务已经终止,但它却为其他点对点文件共享程序 — — 如 Kazaa,Limewire 和 BearShare — — 的拓展铺好了路,且对这种方式的文件共享的控制,亦变得愈加困难。如今 Napster 以经营付费服务为主,而免费的 Napster 的流行和回响使其在电脑界和娱乐业里成为一个传奇的象征。

2000 年 — Gnutella

2000 年 — Freenet

P2P 本身的特性使其具有天然的抗审查特性,其平台的内容得以在节点中永久保存且不容易一次性删除或屏蔽所有节点,可以说 Freenet 的发布正式开启了暗网时代。

毒品、致幻剂、管制药品等在丝绸之路上以比特币明码标价

2001年 — Bittorrent

BitTorrent协议下载的特点是,下载的人越多,提供的带宽也越多,下载速度就越快。同时,拥有完整文件的用户也会越来越多,文件的“寿命”也就越长。

种子文件本质上是文本文件,包含 Tracker 信息和文件信息两部分。Tracker 信息主要是BT下载中需要用到的 Tracker 服务器的地址和针对 Tracker 服务器的设置,文件信息是根据对目标文件的计算生成的,计算结果根据 BitTorrent 协议内的 Bencode 规则进行编码。

后来 BitTorrent 引入了分布式哈希技术( DHT ),相比泛洪查询技术,DHT效率显著提升。DHT 全称为分布式哈希表(Distributed Hash Table),是一种分布式存储方法。在不需要服务器的情况下,每个客户端负责一个小范围的路由,并负责存储一小部分数据,从而实现整个 DHT 网络的寻址和存储。使用支持该技术的 BT 下载软件,用户无需连上 Tracker 就可以下载,因为软件会在DHT网络中寻找下载同一文件的其他用户并与之通讯,开始下载任务。这种技术好处十分明显,就是大大减轻了 Tracker 的负担(甚至不需要)。用户之间可以更快速创建通讯(特别是与 Tracker 连接不上的时候)。

BitTorrent 的客户端之一

2009 年 — Bitcoin

比特币结合 P2P 对等网络技术和密码学原理,来维持发行系统的安全可靠性。与有中心服务器的中央网络系统不同,在 P2P 网络中无中心服务器,每个用户端既是一个节点,也有服务器的功能,任何一个节点都无法直接找到其他节点,必须依靠其户群进行信息交流。比特币使用以下 3 种机制,来解决初次运行时,查找其他节点的问题。

在默认情况下,运行比特币的用户端加入一个IRC聊天通道,并可以获知加入该通道的其他用户端的IP地址和端口。该通道的名称和IRC聊天服务器的名称被写在了比特币软件中。

一些“知名的”比特币节点也被编写在软件中,以防IRC聊天服务功能因故无法访问。

可以手动添加运行比特币的其他用户端的 IP 地址。

现在不需要运行上述 3 个机制,一旦连接到比特币的某个节点,在发送的信息中,就会包含对等网络 P2P 其他节点的地址,直接通过其匿名用户群来找到其他节点。节点遍布整个互联网的 P2P 技术和密码学原理相结合,确保了比特币发行系统无法被政府、组织、或黑客监控、隔离、或破坏,从而保障了系统的可靠性和匿名性。拒绝服务式(DDoS)以及其他攻击,其目标都是针对比特币交易中心,这和攻击或关闭传统货币交易所的网络,理论上不影响其货币发行和使用一样。

2012 年 — Diaspora

Diaspora

总结

但 P2P 网络仍非主流。近 20 年来网络基础设施的发展使得普通个人能够接入高速宽带网络,大型机房里每个虚拟主机甚至都可以通过万兆的带宽为用户提供服务,这催生了一系列新生代信息传播方式和娱乐途径。互联网人在产品模式上都探索空间大大增加,人们在尽情享受中心化服务带来的便捷与乐趣,去中心化和点对点的需求在 Web2.0 时代大力发展的背景下也显得不那么重要了。

但 P2P 技术本身并没有被抛弃,甚至还在幕后为互联网服务着。

Web2.0 大互联网时代的点对点

P2P CDN 边缘加速

CDN

例如某小型论坛网站只有一台服务器,其带宽为 10M,10M 的带宽完全可以为几百名在线的论坛用户同时提供数据传输服务。但论坛加入上传图片功能后,10M 的带宽就不堪重负了,每张图片几百 K 至几十 M 不等,90% 以上的带宽被用来传输图片,而这些图片本身是不会变化的,每个用户看到的都是相同的图片。用户加载速度也开始变慢了。此时 CDN 技术就来帮忙了,CDN 技术帮助网站主把图片存储在全世界各地的服务器上,加州的用户访问论坛时只从论坛服务器拿到帖子正文内容和其中的图片地址,而图片是从加州本地的某个服务器上传输到用户计算机的。类比法国的用户也可以从法国本地的服务器上拿到该图片。全世界的用户都在从距离自己最近的服务器加载图片,用户的加载速度变快了,论坛的服务器带宽负载也下降了。

CDN 网络结构

边缘节点

边缘节点不仅能提供静态文件(图片、音乐、视频等不变的资源)服务,也能提供动态内容的服务。例如我们想要每一张图片加上防盗水印,水印内容为登录用户的用户名和 IP,这样可以标记来源,防止用户盗取图片发到其他网站,因此每个用户访问时看到的都是带有不同水印的图片。该服务也可以运行在边缘节点上,在边缘节点上写好加水印的代码,在用户访问时直接加好水印提供给用户。边缘节点提供动态计算服务的功能就叫做边缘计算。

P2P CDN 融合加速

暗光纤(Dark Fiber)是指运营商在为城市铺设光纤的时候,倾向于多铺一些。比如它们预计这个楼未来也就用 1TB 的宽带,但会在地下铺 10TB 带宽容量的设备和光纤。因为光纤铺设的成本主要来自挖地挖墙埋线,就和你家装修走线一样,开一次墙只有多铺的道理。虽然 1TB 的带宽足够目前使用,但随着用户数量的增加、用户需求的增加、互联网服务的升级,运营商预计未来一段时间内可能会用到 10 TB 的带宽。就像十年前我们都在用 10M 的宽带,但是现在大多在用 100M 以上的宽带网络了。提前铺设好冗余带宽可以降低未来施工的费用。

而这部分暗光纤带宽在目前来说是闲置的。Google 在运营商手中购买了大量的暗光纤使用权和二次售卖权。他们把这些暗光纤的带宽用来加速 YouTube 视频播放。例如当你加载一个大小为 100M 的视频时,原本 CDN 单个节点已经无法承载这样的内容加速了(因为同时可能有很多用户都在请求 CDN 节点上的大文件),但你所在的城市可能有10台 接入了暗光纤的 Youtube 小型服务器都缓存了这个视频,YouTube 便开始使用这 10 台节点和你的个人电脑通过暗光纤建立 P2P 连接,每台服务器向你发送 10M 大小的视频。从整体上来看这 10 台服务器都仅使用了很小的带宽和流量,而你却能够瞬间获得 100M 的视频文件,播放体验得到了提升。因为流量走的是暗光纤网络,没有占用公共带宽,不会影响该区域内其他用户的上网体验,可谓一举两得。

现如今暗光纤及其二次销售几乎被抢购一空,部分厂商发布了分润模式的带宽共享服务,即在个人路由器、电脑或智能设备上安装带宽共享软件,在闲时启动,使用个人智能设备作为缓存节点,对其他有需要对用户进行 P2P 的资源共享服务,并获得利润分成。

中心化客户端中的 P2P 直连

想必大家都有这样的体验:当你和同事坐在同一个楼宇(同一内网中)时,你们在 Skype 或其他聊天软件中互传文件时的速度比你给不在同一地区的客户传输文件的速度要快得多。因为 Skype 发现你们在同一内网中,于是你们的文件传输就不需要走 Internet,而是直接建立点对点的连接,通过楼宇的路由器沟通,就可以直接传递了,而内网的带宽一半是非常大的,所以即便是几个 G 大小的文件也可以在几十秒钟之内传输完毕。

同样的场景也适用与广域网中,同一片社区,同一个城市,同一个 ISP 中的用户 P2P 直连传递文件通常要比经过互联网中心化服务器传输要快很多。

虽然这些软件普遍都是中心化的,脱离了中心服务器便无法运作,但是还是在这些功能上整合了 P2P,极大提升了用户体验。

最近大家都在讨论 #Nostr ,我也借此讨论一个比较少有人讨论的话题,去中心化网络的结构化和点对点特性,以 #Nostr 和 Rings Network 举例来阐述一些异同点。

Nostr 和 Rings Network

1⃣️ 中心化,去中心化,混合式

去中心化网络里最广为人知的就是比特币和以太坊,无论哪个节点下线都不影响网络的内容安全,传输安全和一致性通过加密算法保证而非人工干预。

混合式当前比较著名的就是 Mastodon,各个服务器之间可以相关联,不同服务器的用户可以相联系,但若某个服务器停止工作,用户的账户也便不复存在。Mastodon 在混合式网络里是偏中心化属性强一点的。

2⃣️ Nostr 网络结构

每个用户都是独立的客户端,客户端只和 relay 相连接,relay 如其字面上意义可以认为是转发节点。relay 和 relay 之间可以互相连接,但是前提是互相之间知道对方的地址,对于不知道地址的 relay 是连接不到的,只能通过其他 relay 帮助转发。一个客户端也可以连接多个 relay,这样整体上寻址和通信的效率也会提升上来。

我知道这些已经是老生常谈了,但是如果你不是这个领域的专家,理解起来有困难,大家可以把 Nostr 网络想象为移动网络:

客户端就是手机,relay 就是基站(信号塔),手机(客户端)可以连接一个或多个信号塔(relay),如果连接不到任何信号塔,也就无法发送和接收信息。

信号塔之间当然也需要互相连接,这样才能组成一张通讯网。一个信号塔可能会连接一个或几个其他信号塔,当其中某个连接不畅的时候可以有备选,多个连接也能保证最短到达需要寻找的手机。一个信号塔大多数情况下连接了成百上千的手机,而一个手机通常只会连接到个位数的信号塔,我们称这种结构为星型网络(星型拓扑)。多个基站联合起来组成了扩展式的星型网络。这就是 Nostr 的基本网络结构。

3⃣️ Rings Network 网络结构

4⃣️ 差异对比

连接方式

此处连接方式上可以看得出两个网络在设计上都有很强的指向性 — — 为 web 服务。浏览器目前是大家主流的互联网交互方式,脱离浏览器的 app 则会受到例如 App Store 或 Google Play 等中心化组织的审核审查,所以本身可运行在浏览器中、连接方式被浏览器默认支持是非常重要的。无论 WebSocket 还是 WebRTC,在浏览器中进行高效、并行连接,或进行流式数据传输,都是很好的选择。

与此同时,Rings Network 选择了 p2p 的方式进行连接,在传输效率上必然没有 Nostr 星型网络的中心节点群带宽状态好,但是连通性上会更胜一筹。两种去中心化网络在数据传输效率和连通性上有所不同取舍。

节点角色

如果网络中有恶意节点存在,两种网络均不会被钓鱼或虚假消息攻击,因为两者都是经过加密算法保证每一条消息的可靠性。但是当恶意节点的目的是监听、追踪、蓄意不传递消息位置时,在 Nostr 网络中,恶意的客户端不会造成太大影响,但是恶意的 relay 则会造成网络故障或用户隐私暴露;在 Rings Network 中,精心编排的 Chord id 恶意节点也有可能通过控制一定数量的恶意节点达成监听和追踪的目的,但是不容易造成网络故障或不可用。

数据存储

Nostr 这种设计更偏向现有区块链的节点形式,但并非所有 relay 都对所有消息进行持久化,是一种在成本和效率中有所兼顾的方案。而 Rings Network 本身没有这种功能,依赖第三方在形式上为开发者提供了更多灵活的选择、降低了开发难度,不过同时也舍弃了网络本身的功能。

数据查询

可靠性

当遭遇单点故障时,主要取决于故障点属性。Nostr 网络中,如果故障点发生在 relay 节点上,大量客户端将受到影响,如果多个 relay 节点遭遇故障,可能会造成网络分裂成几部分,甚至整个网络瘫痪。而 Rings Network 遭遇单点故障时则表现较好,因为各个节点关系对等,即使 50% 节点遭遇故障仍能保持 95% 以上的可用性。

效率

Nostr 网络中随着网络的发展壮大,客户端数量和 relay 数量的比值如果一直较为均衡,则不容易出现堵塞,但如果客户端数量剧增而 relay 数量和质量没有跟上网络发展的速度,瘫痪的情况则有可能发生。不过在理想状态下,整体传输效率较高,速度也较快,但是即使在这种情况下,随着网络中消息包数量剧增,很容易造成类似 DDOS 效果的消息风暴出现,可能会拖垮整个网络。

Rings Network 网络则相反,如果节点数量剧增,则网络效率和传输质量会有所提升,理论上节点越多连通性越好,相应的多点传输带来的带宽效应也会体现;而如果节点数量较少,偏僻节点则可能无法获得很好的体验。但随着节点数量增加顺势导致的消息量增加时,因为点对点传输的缘故,消息风暴出现的可能性非常低。

没有评论: