P2P网络

P2P

1.P2P简介

首先,现在大家熟知的BT、电驴、迅雷、QQ、MSN和PPlive等都是基于P2P方式实现的软件,并且对等联网(Peer to Peer,P2P)将是互联网的发展方向,因此对于P2P技术的了解显得非常的重要,下面就来介绍下P2P架构:

在P2P技术之前,我们所有的网络应用都采用C/S或者B/S架构来实现的,然而在之前C/S架构的应用程序中,客户端软件向服务器发出请求,服务器然后对客户端请求做出响应,在这种情况下,如果客户端越多,此时服务器的压力就越大。然而采用P2P技术实现的每台计算机既是客户端,也是服务器,他们的功能都是对等的。对于安装了P2P软件(如迅雷,QQ等)的计算机加入一个共同的P2P网络,网络中的节点之间可以直接进行数据传输和通信。

特点如下:

无中央服务器,打破了C/S模式

用户之间互联并可以分享文件

1.1P2P网络4种常见的形式

1.中心化拓扑网络:由一台中心索引服务器连接各个设备,当需要下载某个资源时,请求索引服务器,索引服务器查询所在资源的地址返回给主机,主机则直接请求存在资源的服务器,获取结果。中心服务器不存储任何资源,只存储文件索引,这样有些的降低了服务器负荷。最典型的应用是MP3下载网站napster。

但是这种中心化的P2P模式由于还是依赖于一台中心服务器,中心服务器崩溃,整个p2p网络则崩溃,可扩展性也存在问题,并且法律方面的风险比较大,napster后来就被各个唱片公司起诉。

2.全分布式非结构化拓扑网络:采用随机图组织方式,节点度数据服从power-law规律,主要采用基于完全随机图的Flooding搜索算法,即从当前节点开始查找与他相邻的索引主机,相连的主机再查找相连主机,为了控制搜索消息不至于永远这样传递下去,一般通过TTL (Time To Live)的减值来控制查询的深度,主要案例是Gnutella协议,如图可以看出这种方式并不能查找所有的主机,只能查询到部分网络。

3.全分布式结构化拓扑网络:通过加密散列函数,一个对象的名字或关键词被映射为128位或160位的散列值,全分布式结构化拓扑的P2P网络主要是采用分布式散列表(Distributed Hash Table, 简写成DHT)技术来组织网络中的结点,DHT是由一个广域范围维护的巨大散列表,散列表有很多不连续的散列块组成,每个散列块可能存储在不同的主机,每个主机维护自己的散列块。DHT类结构能够自适应结点的动态加入/退出,有着良好的可扩展性、健壮性、结点ID分配的均匀性和自组织能力。由于重叠网络采用了确定性拓扑结构,DHT可以提供精确的发现。只要目的结点存在于网络中DHT总能发现它,发现的准确性得到了保证,最经典的案例是Tapestry,Pastry,Chord和CAN。

4.半分布式拓扑网络:由于集中式网络由于过度依赖于中央索引服务器,而全分布式拓扑结构查找维护成本较高,半分布式拓扑结构吸取了中心化结构和全分布式非结构化拓扑的优点,选择性能较高(处理、存储、带宽等方面性能)的结点作为超级结点(英文表达为SuperNodes或者Hubs),在各个超级结点上存储了系统中其他部分结点的信息,发现算法仅在超级结点之间转发,超级结点再将查询请求转发给适当的叶子结点。半分布式结构也是一个层次式结构,超级结点之间构成一个高速转发层,超级结点和所负责的普通结点构成若干层次。采用这种结构的最典型的案例就是KaZaa。

在实际应用中,每种拓扑结构的P2P网络都有其优缺点,下图从可扩展性、可靠性、可维护性、发现算法的效率、复杂查询等方面比较了这四种拓扑结构的综合性能。

详细文章http://www.intsci.ac.cn/users/luojw/P2P/apa.html

2.区块链中P2P实现技术总结

2.1比特币中P2P网络

比特币系统地网络结构是最容易理解、最容易实现地一种形式。

尽管比特币P2P网络中的各个节点相互对等,但是根据所提供的功能不同,各节点可能具有不同的分工。

1。全结点

如图:

这种结点就是包含了钱包,挖矿,区块链,网络路由功能的一个集合结点。全节点能够独立自主地校验所有交易,而不需借由任何外部参照。

2.SPV结点

如图:

这种只保留了区块链的一部分(区块头),它们通过一种名为“简易支付验证(SPV)”的方式来完成交易验证。英文是Simplified Payment Verification。这样的节点被称为“SPV节点”,又叫“轻量级节点”。关于什么是SPV验证,简单来说就是通过这个区块头的信息通过网络到区块链里去验证。具体请参考Higher的文章:http://www.jianshu.com/p/39be41dfb5fa

3。挖矿结点。

这种结点,其实只要有独立矿工功能的结点都可以叫做挖矿结点。全结点其实就是一种挖矿结点。

带有矿池协议的挖矿结点,如图:

独立矿工,如图:

挖矿节点通过运行在特殊硬件设备上的工作量证明(proof-of-work)算法,简称POW。以相互竞争的方式创建新的区块。一些挖矿节点同时也是全节点,保有区块链的完整拷贝;还有一些参与矿池挖矿的节点是轻量级节点,它们必须依赖矿池服务器维护的全节点进行工作。

2.2以太坊中P2P网络

和比特币一样,以太坊的节点也具备钱包、挖矿、区块链数据库、网络路由四大功能,也同样存在很多不同类型的节点,除了主网络之外也同样存在很多扩展网络。但与比特币不同的,比特币主网的 P2P 网络是无结构的,但以太坊的 P2P 网络是有结构的。

在以太坊中,P2P网络主要采用Kademlia算法实现,此算法是分布式散列算法(DHT)的一种,借助该技术以太坊系统实现了在分布式环境下快速准确地路由和定位数据。同时还引入异或距离、二叉前缀树、K-桶等,结构上更加复杂,实现起来更困难,但在节点路由上要快于比特币,相当于是空间换时间地做法。

原文地址:https://www.cnblogs.com/yk20192320/p/15408277.html