集中式Web的几种替代方案比较


点对点(P2P)协议使建立分散的应用程序更容易,无需任何额外的服务器或网络基础设施就可以工作。与集中式平台相比,它们提供了更多的隐私和弹性,并减少了建立使人们能够共享数据的应用程序的障碍。然而,有几个可供选择,要弄清楚哪一个适合你的用例,可能是令人生畏的。

这篇文章比较了几种点对点协议,看看它们是如何工作的,以及在选择使用何种协议时需要考虑的权衡因素。
我们将特别关注BitTorrent、星际文件系统(IPFS)、安全互传(SSB)和Hypercore,因为它们已经存在了一段时间,并且有一些相似之处,使它们易于比较。我们将探讨每个协议如何处理内容、链接、数据模型、对等的可发现性、安全性、性能、实施和备份。

这篇文章针对的是想要使用这些协议的人,他们对点对点系统的工作方式已经有了基本了解。如果你看到一个新的术语,请点击链接以进一步阅读或在线搜索。

BitTorrent
BitTorrent与互联网盗版有着密切的联系,像海盗湾这样的项目被用来上传受版权保护的内容的非法拷贝,以绕过DRM或无法访问等限制。然而,BitTorrent经常被用来分发数据集,如Linux ISO图像、科学数据和其他合法的数据共享用例。它也被用于像PeerTube这样的应用,它允许独立的内容创作者分享观看视频的带宽成本。BitTorrent还被互联网档案馆等归档团体使用,以分发作为我们数字历史的内容档案。

由于BitTorrent已经存在了很长时间,所以它是众所周知的,有很多内容可以探索。

最终成绩。A

星际文件系统(IPFS)
IPFS在区块链社区中一直在建立嗡嗡声,它作为一个去中心化的文件存储替代中心文件服务器,用于非可替换代币(NFT)和各种位的网络内容,如COMPOST。其高水平的API也被用于WebRecorder等工具,使其更容易归档内容并保存在不可变的记录中,同时尽可能地重复文件内容。

最终成绩:B

Hypercore
尽管Hypercore在Beaker浏览器中发布了很多内容,但现在很多内容已经与Hypercore的新版本不兼容了。除此之外,还有一些建立在Hypercore低层位之上的应用,如Mapeo或Cabal,在特定的群体中分享内容。

最终成绩。D

SSB
SSB上的大多数内容都被锁在人们的社交图谱中,只有当你被引入这些网络时才能访问;例如,通过加入Manyverse。然而,也有一些公共观众提供了对人们选择公开的内容的一瞥。


链接:小而重要的基础设施
人们在与P2P协议互动时,首先看到的是数据如何被链接到它们。大多数人在使用这些协议从点对点网络加载内容时,可能不会过多地考虑链接的实际含义。但链接是需要考虑的,因为链接结构可以开始告诉你协议的不同工作方式,以及如何使用它们的一些限制。这里的大多数协议都在IANA注册了URI方案,这为与不同的应用集成提供了直接的途径,而不必担心冲突。

链接 - BitTorrent
BitTorrent使用了使用magnet.URI方案的链接。URI方案,指定一个属性,链接到给定Torrent的urn:btih(BitTorrent InfoHash)。其他几个内容网络也使用该标准,如Kazaa和eDonkey,它们是流行的文件共享网络,但现在已经不那么活跃了。链接格式可以包含额外的信息,如用于发现其他对等人的数据和元数据的跟踪服务器;这可以让你知道一个山洪是否是 "私有的",而不需要下载山洪本身。有一点需要注意的是,磁力链接是URI,它可以识别洪流,但不适合用作浏览器的URL,因为它们没有浏览器可以用作 "原点 "的 "主机名 "属性,无法与cookie和权限等东西联系起来。同样,URI也不能用于在一个特定的洪流中的文件之间进行导航。为了解决使用URI的一些缺点,已经有一些关于标准化bittorrent:// URL格式的讨论,它可以更好地与浏览器整合,并链接到特定的数据,而不是整个洪流。

最终成绩。C

链接 - IPFS
IPFS对链接有几种方法。他们主要使用内容标识符,又称CIDs,有两种方法将它们变成链接。/ipfs/{CID}/风格的URLs,在IPFS网关中可以很容易地转换为路径,最初相当普遍。这些反映了底层的Libp2p多地址格式,并依赖于带有 "类型 "前缀的路径。

最近,IPFS一直在使用ipfs://{CID}的URL。URLs,这些URLs在CID的编码上有一些成长的烦恼。起初,IPFS使用大小写敏感的CIDv0规范,基于Base58比特币编码;但这导致了在浏览器中加载IPFS URL的问题,因为URL的主机名部分是不分大小写的,在浏览器中解析时通常会被转换为小写。为了缓解这个问题,IPFS开始迁移到CIDv1,它默认为base32编码,使用所有小写字符。当人们试图使用旧工具中默认的CIDv0风格的链接时,仍然有一些成长的痛苦,所以如果你的网页有一个以Qm开头的URL,考虑用CID检查器更新它。除了IPFS链接,还有IPNS(InterPlanetary Name System)链接,可以利用公钥或DNS(域名服务器)名称代替CID,如ipns://{公钥或DNS}/。DNS功能来自于DNSLink标准。

最终成绩。A

链接 - Hypercore
Hypercore的URL标准随着时间的推移而改变,主要是由Dat CLI的创新和Paul Frazee的Beaker浏览器引导的。最初,生态系统使用dat://{public key}/ URLs,其中公钥是64个十六进制字符,代表一个32字节的公钥。这被扩展到使用dat://{public key}+{version}/语法在URL中指定一个版本,也可以在URL中指定一个DNS名称。然后在2020年,从事Dat生态系统的Hypercore协议部分的核心团队分离出来做他们自己的事情,URL方案被改变为使用hyper://名称而不是dat://。这种URL格式是有问题的,因为根据URL标准,主机名部分在技术上是无效的,因为它使用了64个字符;允许的最大长度是63。幸运的是,浏览器和许多其他工具,如Node.js,都能愉快地消耗钥匙的全长,但社区可能需要从十六进制编码切换到类似IPFS的base32编码,以便更好地符合现有标准。

最终成绩:B

链接--Secure Scuttlebutt (SSB)
Secure ScuttleButt是一个异类,因为人们通常通过像Manyverse这样的应用程序与它的数据进行交互,这在一定程度上抽象了数据的链接。然而,在引擎盖下,SSB有两种链接数据的方法。Cypherlinks和SSB URI。Cypherlink规格似乎是针对SSB用来链接 "频道"(在其他社交媒体平台中又称 "标签")的hashtag语法而演变的,并增加了三种新类型。@feed链接到一个特定的人或 "feed",%message链接到一条信息,以及&blob链接到一个blob。这种语法在P2P协议中是独一无二的,一般只在Patchwork或Manyverse等应用中渲染Markdown时使用。最新的创新是利用ssb.URI方案的URI。URI方案,以及 "类型",如 "消息"、"