P2P综述

原文参见:http://www.lotushy.com/?p=113

[TOC]

什么是P2P

P2P全称是Peer-to-peer。P2P计算或P2P网络是一种分布式应用架构。它将任务或负载分发给Peers。在应用中,Peers是平等的、对等的参与者。

从资源角度来讲,Peers将它们拥有的资源如cpu、存储、网络带宽等直接分享给其它参与者们。所以,Peers即是资源的提供者也是资源的消费者。而在Client-Server架构中,资源消费和资源供给是分离开的。新兴的协作式P2P系统超越了Peers在共享资源时做同类事情的时代,并且正在寻找多元化的Peers,这些Peers可以为虚拟社区带来独特的资源和能力。

发展历史

虽然P2P系统以前在许多应用领域被采用,但这个概念被文件共享系统所普及,例如音乐共享应用Napster(最初于1999年发布)。

点对点移动使得数百万互联网用户能够“直接连接”,形成团体并彼此合作进而形成用户创建的搜索引擎,虚拟超级计算机和文件系统。在早期的软件系统和网络讨论中设想了点对点计算的基本概念,回溯到Request for Comments所陈述的原因。

Tim Berners-Lee对万维网的看法与P2P网络非常接近,因为它假定网络的每个用户都是活跃的编辑和贡献者,创建和链接内容以形成相互关联的“链接”网络。早期的互联网比现在更开放,两台连接到互联网的机器可以在没有防火墙和其他安全措施的情况下将数据包发送给对方。这与多年来发展起来的网络类广播结构形成了鲜明的对比。作为互联网的先驱,ARPANET是一个成功的client-server网络,“每个参与节点都可以请求和提供内容”。 然而,ARPANET并不是自组织的,它不具备“为简单的基于地址的路由之外的上下文或基于内容的路由提供任何手段的能力”。

USENET,一种分布式的消息系统,通常被认为是早期的p2p架构,开发于1979年。基本模型是从用户或客户角度来看的client-server模型,它为新闻组服务器提供了一种自组织方法。但是,新闻服务器以对等方的身份进行通信,以便在整个网络服务器组上传播Usenet新闻报道。 同样的考虑适用于SMTP电子邮件,因为邮件传输代理的核心电子邮件中继网络具有对等角色,而电子邮件客户端与邮件代理则是严格的client-server关系。

在1999年的5月,伴随着几百万互联网用户的出现,Shawn Fanning引入音乐分享应用Napster。

Napster是P2P网络的起点,就我们目前所知,一种虚拟网络,完全独立于物理网络,而不必遵守任何行政限制。

架构体系

路由和资源发现

对等网络通常在物理网络拓扑之上实现某种形式的overlay network(虚拟层叠网络),其中覆盖层中的节点形成物理网络中节点的子集。数据仍然直接在底层TCP / IP网络上交换,但是在应用层,Peers可以通过逻辑层叠链路(每个链路对应于通过底层物理网络的路径)直接相互通信。 层叠网络用于索引和对等节点(peer)发现,并使P2P系统独立于物理网络拓扑。

根据节点在层叠网络中彼此链接的方式以及资源如何索引和定位,我们可以将P2P网络分类为非结构化或结构化或两者之间的混合(Hybrid)。

非结构化网络

非结构化网络的典型代表是Gnutella, Gossip, Kazaa

非结构化网络没有特定的结构。节点通常是随机的连接到其他节点。

由于没有全球强加于它们的结构,非结构化网络很容易建立,并允许对层叠网络的不同区域进行局部优化。 另外,由于网络中所有对等节点(peer)的角色都是相同的,非结构化网络在面对高速率“流失”时具有高度稳健性 - 也就是说,当大量对等点频繁地加入和离开网络时,这种网络依然是健壮的。

然而,非结构化网络的主要局限性也是由于缺乏结构。 特别是,当peer想要在网络中找到所需的数据段时,搜索查询必须通过网络进行泛洪以找到尽可能多的共享数据的peer。 洪泛会导致网络中信令流量非常高,使用更多的CPU/内存(通过要求每个peer处理所有搜索查询),并且不能确保搜索查询将始终得到解决。 此外,由于peer与其管理的内容之间没有关联,所以不能保证泛洪将找到具有所需数据的peer。 受欢迎的内容可能会在多个peer中找到。 但是,如果一个peer正在寻找罕见的数据,而且只有少数其他peer共享,那么搜索很不可能成功。

结构化网络

结构化网络的典型应用有BitTorrent,Kad network,Storm botnet,YaCy,Coral Content Distribution Network。

在结构化的P2P网络中,层叠层被组织成一个特定的拓扑结构,并且该协议确保任何节点都可以有效地在网络中搜索文件/资源,即使资源极其稀少。

最常见的结构化P2P网络实现是一种分布式散列表(DHT),使用一致性散列的变体来将每个文件的所有权分配给特定的peer。这使peer能够使用散列表在网络上搜索资源:也就是说,(Key,Value)对存储在DHT中,并且任何参与节点都可以有效地检索与给定Key相关联的Value。

但是,为了有效地通过网络路由流量,结构化层叠网中的节点必须维护满足特定条件的邻居列表。 这使得它们在高流失率的网络(即大量节点频繁地加入和离开网络)中的稳健性较差。 最近对实际工作负载下的P2P资源发现解决方案的评估指出了基于DHT的解决方案中的几个问题,例如广播/发现资源的高成本以及静态和动态负载不平衡。

混合模型

混合模型是对等和客户-服务器模型的组合。一个常见的混合模式是有一个中央服务器,可以帮助同行找到对方。 Spotify是混合模式的一个例子[直到2014年]。对于中国用户而言,迅雷是个典型的混合模型。

安全和信任

从计算机安全角度来看,P2P系统构成了独特的安全挑战。

路由攻击

由于每一个节点均在流星路由中扮演一个角色,恶意用户可以发起多种形式的路由攻击或拒绝服务攻击。

常见路由攻击的例子包括“不正确的查找路由”,由此恶意节点故意不正确地转发请求或返回错误结果,恶意节点通过向相邻节点的路由表发送错误信息而导致“错误的路由更新”,以及“不正确的路由网络分区 “当新节点加入时,他们通过恶意节点进行引导,这会将新节点放入由其他恶意节点填充的网络分区中。

损坏的数据和恶意软件

恶意软件的流行程度因不同的P2P协议而异。

应用

内容分发

在P2P网络中,客户端都提供和使用资源。这意味着,与client-server系统不同,P2P网络的内容服务能力实际上可以随着更多用户开始访问内容而增加(特别是使用需要用户共享的协议(如BitTorrent)时,请参考性能测量研究)。该属性是使用P2P网络的主要优势之一,因为它使原始内容分发者的设置和运行成本非常小。

文件分享网络

众多的文件分享网络是基于P2P网络的,如Gnutella, G2, eDonkey等。

  • P2P的内容投递
  • P2P的内容服务,如缓存服务
  • 软件发布和分发

** 侵犯版权 **

P2P网络上的数据传输是没有中心server的。开发P2P应用的公司通常深陷大量的法律诉讼,特别是在美国。

多媒体

  • P2PTVPDTP
  • Spotify
  • Peercasting,一种多播流媒体
  • Osiris,一种允许用户创建匿名站点。这种站点发布在P2P网络。ZeroNet也是一种运行于P2P网络的Web站点。

其他的P2P应用

社会影响

隐私和匿名

一些P2P网络如Freenet特别强调隐私和匿名。公钥加密技术用于提供加密、数据检验、授权和认证。Onion routing和其他的mix network协议则用来提供匿名特性。

P2P协议

  • Ares
  • Bitcoin
  • BitTorrent
  • Direct Connect
  • FastTrack
  • eDonkey
  • Gnutella
  • Libp2p: IPFS, Orbit
  • OpenNap
  • RShare
  • Xunlei (私有,仅迅雷公司使用)

Bitcoin中的P2P协议分析

Bitcoin Core的P2P层

引文

原文地址:https://www.cnblogs.com/lotushy/p/9085642.html

时间: 2024-10-28 20:16:50

P2P综述的相关文章

哈希函数和哈希表综述 (转)

哈希表及哈希函数研究综述 摘要 随着信息化水平的不断提高,数据已经取代计算成为了信息计算的中心,对存储的需求不断提高信息量呈现爆炸式增长趋势,存储已经成为急需提高的瓶颈.哈希表作为海量信息存储的有效方式,本文详细介绍了哈希表的设计.冲突解决方案以及动态哈希表.另外针对哈希函数在相似性匹配.图片检索.分布式缓存和密码学等领域的应用做了简短得介绍 哈希经过这么多年的发展,出现了大量高性能的哈希函数和哈希表.本文通过介绍各种不同的哈希函数的设计原理以及不同的哈希表实现,旨在帮助读者在实际应用中,根据问

Libjingle库 综述

国内现在很多语音聊天工具都是基于TURN方式实现的,包括YY.AK等等,这种方式对于服务器的性能要求很高,而且在用户量增大的时候,服务器压力也会越来越大,用户的语音质量也会受到很大影响.而基于P2P方式实现的语聊服务器,就可以极大的避免这种情况的发生,而且用户的语音体验也会非常好.? ?通过上文(P2P的原理和常见的实现方式(为libjingle开路))我们知道,因为NAT设备没有固定标准的原因,导致并不能100%的实现P2P,但是根据现在通用的ICE&STUN的方式,P2P的成功率可以达到90

Peer-to-Peer 综述

Peer-To-Peer 网络介绍 最近几年,Peer-to-Peer (对等计算,简称P2P) 迅速成为计算机界关注的热门话题之一,财富杂志更将P2P列为影响Internet未来的四项科技之一. “Peer”在英语里有“对等者”和“伙伴”的意义.因此,从字面上,P2P可以理解为对等互联网.国内的媒体一般将P2P翻译成“点对点”或者“端对端”,学术界则统一称为对等计算.P2P可以定义为:网络的参与者共享他们所拥有的一部分硬件资源(处理能力.存储能力.网络连接能力.打印机等),这些共享资源通过网络

Java精品高级课,架构课,java8新特性,P2P金融项目,程序设计,功能设计,数据库设计,第三方支付,web安全,视频教程

36套精品Java架构师,高并发,高性能,高可用,分布式,集群,电商,缓存,性能调优,设计模式,项目实战,P2P金融项目,大型分布式电商实战视频教程 视频课程包含: 高级Java架构师包含:Spring boot.Spring  cloud.Dubbo.Elasticsearch,Redis.ActiveMQ.Nginx.Mycat.Spring.MongoDB.ZeroMQ.Git.Nosql.Jvm.Mecached.Netty.Nio.Mina.java8新特性,P2P金融项目,程序设计,

迅雷的镜像服务器 和 迅雷P2P加速

镜像网站是将一个完全相同的站点放到几个服务器,分别有自己的URL,在这些服务器上互为镜像网站.它和主站并没有太大差别,或者可算是为主站作的后备措施.有了镜像网站的好处是:如果不能对主站作正常访问(如某个服务器死掉或出了意外),但仍能通过其它服务器正常浏览.相对来说主站在速度等各方面比镜像站点略胜一筹. 说到P2P,就不能不提BT,这个被人戏称为"变态"的词几乎在大多数人感觉中与P2P成了对等的一组概念,而它也将P2P技术发展到了近乎完美的地步.实际上BitTorrent(中文全称比特流

互联网金融下,三四线城市需有自己的P2P平台

如果你听到有人说什么"羊毛出在猪身上让牛去买单".什么"XX行业万亿市场"之类的很扯的话,那个人不是干互联网的,就是干金融的,哦对了,他更有可能是干互联网金融的. 互联网本来就有点浮躁,再加上金融的忽悠特质,互联网金融会出现一些比如P2P公司倒闭,老板跑路之类的不靠谱现象太正常不过了. 言归正传,虽然有不少臭鱼搅腥了互联网金融这锅汤,但互联网金融确实是一次重大创新,大方向上没有问题,国家在战略层面很支持,银行业也非常关注这一块的发展.现在的问题是互联网非常容易产生虹

Node.js综述

前言 本综述文章旨在帮助读者深入理解下Node.js的本质,不去关注应用的细节,我认为真正的技术问题只有在动手写代码的时候才会遇到,那个阶段解决问题才是真正有意义的. 发展史 Node.js是Ryan Dahl 2009年对外发布的开源醒目,后来该项目被Joyent公司注意到并于2010年成为Joyent公司的一个子项目.2016年微软与Joyent公司合作,Node.js在windows上得到支持. 目前Node.js的版本为V6.11,周围已经形成了一个庞大的生态系统. 特性分析 Node.

Map 综述(二):彻头彻尾理解 LinkedHashMap

摘要: HashMap和LinkedList合二为一即是LinkedHashMap.所谓LinkedHashMap,其落脚点在HashMap,因此更准确地说,它是一个将所有Entry节点链入一个双向链表LinkedList的HashMap.由于LinkedHashMap是HashMap的子类,所以LinkedHashMap自然会拥有HashMap的所有特性.比如,LinkedHashMap的元素存取过程基本与HashMap基本类似,只是在细节实现上稍有不同.当然,这是由LinkedHashMap

p2p (对等网络)

对等网络,即对等计算机网络,是一种在对等者(Peer)之间分配任务和工作负载的分布式应用架构[1]  ,是对等计算模型在应用层形成的一种组网或网络形式."Peer"在英语里有"对等者.伙伴.对端"的意义.因此,从字面上,P2P可以理解为对等计算或对等网络.国内一些媒体将P2P翻译成"点对点"或者"端对端",学术界则统一称为对等网络(Peer-to-peer networking)或对等计算(Peer-to-peer compu