P2P 网络

这节的主题是 P2P 网络,先聊聊基本含义,然后介绍一下它的优势和现实应用。跟 Peter 的大部分严肃内容一样,本节也是关于技术,但是却不需要读者有技术背景。希望达成的效果是让大家能迅速把握这个技术的要点,理解现实意义,从而真正发生兴趣。

P2P 的基本含义

我们先从 P2P 的基本含义聊起。可以用一句话来概括:P2P 是一种分布式的应用架构,任务会被分摊到各个节点上去完成,没有中央服务器。

P2P 的全称是 Peer to Peer ,直接翻译过来就是”地位对等的两个节点之间“。Peer 的英文本意是能力和地位相同的人,例如 My Peer ,可以指代我的一个平级的同事。 Peer Review ,指的是让跟我具有同等级能力的人帮我评估一下工作。P2P 网络是由很多计算机组成的一个网络。每个计算机上都安装着相同的客户端软件,完成相同的任务,所以每个计算机就是一个 Peer ,或者叫做一个节点。每一个节点都是平等没有特权的,都同时是资源的提供者,也是消费者。这个跟当前互联网的 client/server 模式是明显不同的,在 P2P 条件下,角色区分没有了,每个节点都同时是 client 和 server。

再聊聊 P2P 网络的基本架构。P2P 的数据交互也是在 TCP/IP 之上完成的,也就是说在底层跟常见的互联网协议使用的是相同的基础设施。P2P 网络最大的特点是不需要中央服务器的调度,自我组织协调,各个节点之间可以直接通信。具体的通信协议有多种,常见的一种叫 Gossip ,翻译过来就是八卦协议。协议的基本通信原理非常简单,所有节点都会把信息传递给自己的邻居,就像村里长舌妇之间传闲话,或者白领在办公室传八卦。

这就是 P2P 网络的基本含义和架构了。

P2P 的意义

聊到这里我们会发现 P2P 的架构跟传统架构还是差别巨大的,于是我们很自然的就有了两个问题,首先,没有了中央服务器,真的能完成现有互联网的各项功能吗?第二个问题是,原有的 client/server 架构已经运行了这么多年了,研发 P2P 的意义又是什么呢?第一个问题我们稍后再回答,先来回答第二个问题。

P2P 网络的第一个优势是安全。当代的互联网已经非常中心化了,大部分的通信都会通过中央服务器来完成。两个人微信聊天,信息要走腾讯的服务器。我的两个苹果设备之间同步数据,也要走中央服务器。这样,中央服务器上汇集了所有人的信息,成了对攻击者最有诱惑力的攻击目标。一旦服务器被拿下,或者公司出了事,那么所有用户的信息安全就都荡然无存了。而 P2P 就是一套更安全的替代方案,尤其是实现了端对端加密 https://zhuanlan.zhihu.com/p/50629940 之后的 P2P 网络。

第二个优势是性能。目前的互联网架构其实挺傻的,所有事情都要去服务器上去办。这就好比一个城市有这样的规定,不允许从 A 点开车直接去 B 点,所有车都必须先开到市中心,然后再去 B 点。想象一下,我和你在一个屋子里面聊微信,信息还是要先到达服务器然后再转发的。而如果能够实现 P2P 的架构,让两个手机直接通信,这样就实现了直接从 A 点开车到 B 点的效果了,完全不会造成对市中心的拥堵。但是,我们也可能会想,如果数据都存在服务器上,大家还是需要去服务器上取数据的。目前很多 P2P 存储的项目和技术也正在发展中,例如 IPFS ,Swarm 等。总之,P2P 架构可以对互联网的带宽充分利用从而能有效提升性能。

第三个优势隐私。P2P 架构下,由于没有中央服务器,所以也就没有发挥中心作用的公司。于是 P2P 架构下,我们构建的是无信任,trust-less 系统。用户掌握了自己的隐私,不需要去信任公司不会泄露他们的数据,而只是需要相信通信协议的数学原理即可。来做一个类比。现实中人类最为隐私的交流方式是什么?很简单,就是见面耳语。这就是一个基本的 P2P 的架构,没有中央服务器,各个参与方直接通过一套协议来进行沟通,这套协议就是人类语言。这种见面耳语的方式是有局限性的,因为受到肉身距离的限制。而通过 P2P 网络,我们可以和世界上任意位置的人进行耳语,这将会给人类社会的政治,伦理,商业等各个方面都带来根本性的变化。

以上就是 P2P 网络存在的意义。

P2P 网络的真实应用

接下来聊聊 P2P 网络的真实应用,回答一下刚才提出的第一个问题。看看没有了中央服务器,如何能够实现现有的功能。

先来从宏观角度聊一下。互联网( Web )之父 Tim Berners-Lee 最早发明互联网的时候,愿景就是每个用户都应该同时是网页内容的生成者,也是消费者,是一种 P2P 的思想。不可否认,互联网的很多机制和协议依然是 P2P 的,例如发送的邮件 SMTP ,传递视频语音的 WebRTC ,但是整个互联网目前已经非常中心化了,大部分的事情都是通过商业公司的中心化的服务器完成的。但是,有很多人正在致力于构筑一个真正的 P2P 的互联网 https://zhuanlan.zhihu.com/p/50911228 。

接下来聊一个非常具体的角度,认证。我们以云盘业务为例,当前架构下,我到 Dropbox 网站上注册一个账户,然后文件就都会上传到这个账户下了。Dropbox 服务器会保证只有我才有权利去操作上传的内容。到了 P2P 架构下,中央服务器不存在了,也没有地方去注册账户了,如何确认我对一个文件的所有权呢?新方法是非常的不一样的,通过密码学方法对文件进行加密,只有我自己持有密钥,也就保证了我对文件的所有权。这就是去中心化架构下,实现认证的基本思路了。

现实中比较成功的 P2P 应用有两个方向。一个是区块链类应用,例如 Bitcoin 。另一类是文件分享类应用,例如 BitTorrent 。

总结

关于 P2P 网络,我们就聊到这里。P2P 网络是一种去中心化的应用架构,任务要通过地位平等的各个节点相互配合来完成。P2P 在安全,性能和隐私各个方面都比现有的互联网中心化架构有优势。实际应用方面,除了已经比较成功的区块链和文件分享类应用之外,人们正在努力建设一个真正 P2P 架构的互联网。

参考: