漫话:如何给女朋友解释什么是P2P?

6,854 阅读7分钟

​我满脸疑惑,什么时候P2P火了呢?还是按耐住心中的疑问,好不容易女朋友给机会,兄弟已经在台球厅等我了,不管咋样先表现一波。

什么是P2P

P2P,是Peer-To-Peer 的简称,翻译成"对等网络"或者"点对点网络"。P2P是一种分布式网络,网络的参与者共享他们所拥有的一部分硬件资源(处理能力、存储能力、网络连接能力、打印机等),这些共享资源需要由网络提供服务和内容,能被其它对等节点(Peer)直接访问而无需经过中间实体。在此网络中的参与者既是资源(服务和内容)提供者(Server),又是资源(服务和内容)获取者(Client)。

在介绍对等网络网络之前,我们先看看传统的Client/Server (C/S)模式是怎样的。

在传统的C/S模式下,我们想要下载一个20G的电影,我们需要找到一个提供该电影资源的网站,然后连接网站的服务器连续下载。也就是要从文件原始位置开始下载这20G的完整数据。

这种下载方式有什么缺点?

1、首先这种方式比较依赖服务器的可用性,也就是说,如果服务器挂了,那么就电影的下载不得不终止。

2、如果想要下载电影的人数增多,网站的带宽就会成为瓶颈,就会导致大家下载速度下降,甚至有人无法下载。

3、由于所有资源都通过服务器端输出,存在单点问题,别人想要攻击的话也相对方便,只要攻击服务器就可以了。

正是因为传统的C/S模式存在着这些问题,于是P2P就应运而生。

P2P打破了传统的C/S模式,在网络中的每个结点的地位都是对等的。每个结点既充当服务器,为其他结点提供服务,同时也享用其他结点提供的服务。

在P2P模式下,如果有多个人想要下载同一个电影的话,大家就可以不必分别从服务器下载完整的20G的电影。

由于采用了P2P模式,那么每一个用户就可以既充当客户端又可以充当服务器。

如果4个人同时下载20G电影,那么4个人分别各自下载了不一样的部分,然后在下载的同时进行相互传送。

这样大家一边从服务器下载得到数据,一边从别的下载的人那里得到数据,就比单一从服务器下载来得快。

女朋友内心OS:不是讲P2P吗,这货咋说到下载那去了,难道是要先从快播讲起么?真宅男!不管了,先附和一下吧。

P2P的优点

P2P网络的一个重要的目标就是让所有的客户端都能提供资源,包括带宽,存储空间和计算能力。

因此,当有节点加入且对系统请求增多,整个系统的容量也增大。这是具有一组固定服务器的CS结构不能实现的。

因此在P2P结构中,客户端的增加意味着所有用户更慢的数据传输。

除了速度的提升,P2P技术还有以下几个优点:

  • 非中心化:网络中的资源和服务分散在所有结点上,信息的传输和服务的实现都直接在结点之间进行,可以无需中间环节和服务器的介入,避免了可能的瓶颈。P2P的非中心化基本特点,带来了其在可扩展性、健壮性等方面的优势。

  • 可扩展性:在P2P网络中,随着用户的加入,不仅服务的需求增加了,系统整体的资源和服务能力也在同步地扩充,始终能较容易地满足用户的需要。整个体系是全分布的,不存在瓶颈。理论上其可扩展性几乎可以认为是无限的。

  • 健壮性:P2P架构天生具有耐攻击、高容错的优点。由于服务是分散在各个结点之间进行的,部分结点或网络遭到破坏对其它部分的影响很小。P2P网络一般在部分结点失效时能够自动调整整体拓扑,保持其它结点的连通性。P2P网络通常都是以自组织的方式建立起来的,并允许结点自由地加入和离开。P2P网络还能够根据网络带宽、结点数、负载等变化不断地做自适应式的调整。

  • 高性价比:性能优势是P2P被广泛关注的一个重要原因。随着硬件技术的发展,个人计算机的计算和存储能力以及网络带宽等性能依照摩尔定理高速增长。采用P2P架构可以有效地利用互联网中散布的大量普通结点,将计算任务或存储资料分布到所有结点上。利用其中闲置的计算能力或存储空间,达到高性能计算和海量存储的目的。通过利用网络中的大量空闲资源,可以用更低的成本提供更高的计算和存储能力。

  • 隐私保护: 在P2P网络中,由于信息的传输分散在各节点之间进行而无需经过某个集中环节,用户的隐私信息被窃听和泄漏的可能性大大缩小。此外,目前解决Internet隐私问题主要采用中继转发的技术方法,从而将通信的参与者隐藏在众多的网络实体之中。在传统的一些匿名通信系统中,实现这一机制依赖于某些中继服务器节点。而在P2P中,所有参与者都可以提供中继转发的功能,因而大大提高了匿名通讯的灵活性和可靠性,能够为用户提供更好的隐私保护。

  • 负载均衡: P2P 网络环境下由于每个节点既是服务器又是客户机,减少了对传统C/S结构服务器计算能力、存储能力的要求,同时因为资源分布在多个节点,更好的实现了整个网络的负载均衡。

但是,P2P技术也不是毫无缺点的。P2P技术相比于传统的C/S结构有以下两个缺点:

  • 架构较为复杂,除了要有开发服务端,需要专用的客户端。

  • 用在大规模的网路,资源分享紊乱,管理较难,安全性较低

女朋友内心OS:我的个天哪,这说的都是啥???咋感觉越说越远了呢,我得往回拉一拉。

P2P的分类

根据中央化程度,P2P可以分为一般型P2P、特殊型P2P以及混合型P2P

 图:维基百科中关于P2P的分类

根据网路拓扑结构,P2P可以分为结构P2P、无结构P2P以及松散结构P2P
 图:维基百科中关于P2P的分类

P2P的应用

目前,P2P网络计算技术正不断应用到军事、商业、政务、电信、通讯等领域。根据具体应用不同,可以把P2P应用软件大致分为以下这些类型:

1、文件内容共享和下载,例如Napster、Gnutella、eDonkey、eMule、Maze、BT等,用户可以直接从任意一台安装同类软件的PC上下载或上传文件,并检索、复制共享的文件。

2、计算能力和存储共享,例如SETI@home、Avaki、Popular Power、Netbatch、Farsite等,可用于在网络上将存储对象分散存储,或利用其空闲时间进行协同计算。

3、基于P2P技术的协同处理与服务共享平台,例如JXTA、Magi、Groove等,可用于企业管理。

4、即时通讯工具,包括ICQ、QQ、Yahoo Messenger、MSN Messenger等,多个用户可以通过文字、语音或文件进行交流,甚至还可以与手机通信。

5、P2P通讯与信息共享,例如Skype、Crowds、Onion Routing等。

6、基于P2P技术的网络电视和网络游戏,如沸点、PPStream、PPLive、QQLive、SopCast等,当前许多网络游戏也是通过对等网络方式实现的。

女朋友内心OS:这货是在跟我装傻还是真的傻?我还就不信了,直接挑明了说吧。

广大的程序员的女朋友(老婆)们,你家程序员也这么呆萌吗?

参考资料:

https://docs.huihoo.com/p2p/1/index.html

https://zh.wikipedia.org/wiki/%E5%B0%8D%E7%AD%89%E7%B6%B2%E8%B7%AF

https://baike.baidu.com/item/p2p/16298681