我满脸疑惑,什么时候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

--------  END  ---------

最近面试BAT,整理一份面试资料《Java面试BAT通关手册》,覆盖了Java核心技术、JVM、Java并发、SSM、微服务、数据库、数据结构等等。关注公众号并回复 888 领取,更多内容陆续奉上

好文章,我 在看 


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

  1. java 日期加一天_漫话:如何给女朋友解释为什么一到年底,部分网站就会出现日期混乱的现象?...

    2019年最后一天,在家里看着跨年晚会,享受着这一年最后一天的闲暇时光,女朋友在旁边玩手机.看了一会之后她突然问我一些很奇怪的问题. 于是我拿过他的手机,看到了下面这一幕: 这是微信官方出的公众号管理 ...

  2. 漫话:如何给女朋友解释什么是3PC?

    一顿愉快的小火锅之后,悠哉悠哉的回家了,于是只能开始新一轮的家庭科普了. 分布式一致性 幸好在<漫话:如何给女朋友解释什么是2PC(二阶段提交)?>中介绍过关于2PC的知识,要不然这事儿可 ...

  3. 漫话:如何给女朋友解释什么是适配器模式?

    本文经授权转载自微信公众号:漫话编程 周末窝在家里面打王者荣耀,女朋友在旁边玩我的电脑,我嫌她播放的综艺节目声音比较大,于是建议她戴耳机. 适配器模式 Adapter Pattern,通常被翻译成适配 ...

  4. 漫话:如何给女朋友解释什么是BIO、NIO和AIO?

    本文经授权转载自微信公众号:漫话编程 周末午后,在家里面进行电话面试,我问了面试者几个关于IO的问题,其中包括什么是BIO.NIO和AIO?三者有什么区别?具体如何使用等问题,但是面试者回答的并不是很 ...

  5. 漫话:如何给女朋友解释什么是 3PC?

    作者 | 漫话编程 本文经授权转载自漫话编程(ID:mhcoding) 责编 | 胡巍巍 一顿愉快的小火锅之后,悠哉悠哉的回家了,于是只能开始新一轮的家庭科普了. 分布式一致性 幸好在<漫话:如 ...

  6. 漫话:如何给女朋友解释什么是语法糖?

    语法糖 语法糖(Syntactic sugar),也译为糖衣语法,是由英国计算机科学家Peter J. Landin发明的一个技术术语,指在计算机语言中添加的某种语法,这种语法对语言的功能并没有影响, ...

  7. 漫话:如何给女朋友解释为什么吴某凡会被中间人攻击?

    中间人攻击 中间人攻击(Man-in-the-middle attack,缩写:MITM)在密码学和计算机安全领域中是指攻击者与通讯的两端分别创建独立的联系,并交换其所收到的数据,使通讯的两端认为他们 ...

  8. 漫话:如何给女朋友解释什么是Mock?

    某天晚上,接到测试的电话,他问为什么在日常环境我的接口使用不同的用户测试返回的内容都一样,我回答他:接口数据被我mock掉了,现在返回的都是mock数据.需要调一下mock的逻辑才行. 挂断电话之后, ...

  9. 漫话:如何给女朋友解释什么是大案牍术?

    听说最近<长安十二时辰>比较火,于是趁着一个周末赶紧补一补剧.相信很多人都对其中的"大案牍术"比较感兴趣,靖安司说"大案牍术"选中了张小敬. 看到这 ...

最新文章

  1. mysql8.0.12密码_mysql8.0.12如何重置root密码
  2. java1.5多线程_【Java多线程】JDK1.5并发包API杂谈
  3. 这2个单片机编程的思想,请你掌握。
  4. SVN使用过程中遇到的一些问题
  5. mysql性能优化较佳实践_MySQL性能优化的21个最佳实践 和 mysql使用索引
  6. android配置多个url,Retrofit中使用多个baseUrl
  7. 三种传统电量检测方法对比分析
  8. 武魂金刚少林加点、装备坐骑及江湖技能选择
  9. MySQL Study之--MySQL schema_information数据库
  10. Android内存泄漏分析心得
  11. 如何搭建一个好的测试环境
  12. win7找不到服务器的dns错误怎么办,Win7系统DNS错误怎么办?
  13. 服务器托管带宽单线、双线、BGP线路之间区别有哪些
  14. 超文本链接html,什么是超文本链接超文本链接有什么用
  15. mc服务器常用指令_MC玩家必看常用指令大全
  16. 图像mnf正变换_最小噪声分离(MNF)
  17. 10、自上而下的电路架构设计
  18. 如何阅读一个前向推理框架?以NCNN为例。
  19. python调用IDM
  20. 追梦猪seo针对于移动端seo优化和排名技术

热门文章

  1. 剖析强化学习 - 第六部分
  2. CCIE理论-第十三篇-IPV6-路由-静态+(EIGRP+OSPF)两种做法+IPV4-ARP代理详解(精髓篇)
  3. 游戏DDoS防护新方案--SDK版
  4. ECDH产生共享密钥
  5. python超市笔记
  6. Java 比较两个Word文档差异
  7. vue3 组件拖拽小案例
  8. 软件测试面试关于压力测试,软件测试面试题目
  9. 【转】OpenGL入门学习[十五]
  10. python库——图形艺术