P2P协议入门

一.P2P定义

        P2P(Peer to Peer)对等计算机或对等网络。

        P2P的核心是数据存储在客户本地,通过存储信息(名称、地址、分块)的查询,让终端之间直接数据传递。P2P网络让网络上的数据流量分散化,同时管理点不仅没有服务容量的压力,而且只存储数据的索引与链接,不对数据本身负责,避免了版权与管理的麻烦。

        “我为人人,人人为我”的思想是基于P2P网络实现的,但不等于P2P。P2P网络实际上是一种“无中央政府的”、“部落式的”网络,加入的方式就是客户端的登录,多数不需要认证,离开更不受限制,别人“取”你的东西是自愿,你拿别人的资源也不用付费,“P2P世界是和谐的”。为了激励大家在获取的同时多奉献,,因为只有奉献的越多,可供共享的也越多,开发者在你下载的同时,利用文件分块的技术,把你刚拥有的部分马上给别人分享,当然这种共享不必再经过你的允许,并且根据你的表现积分,鼓励“好”人,奖励奉献,你帮了别人,别人就来帮你。由于很多P2P网络的协议是公开的,所以加入的方式也很宽泛,不同的P2P网络还可以互通,为信息的进一步共享提供了基础。

        自由、松散的P2P网络的最大问题是给政府的监管非常困难,面对的不是一个组织,而是每一个用户。一个用户加入P2P网络后,把自己计算机的处理能力、存储能力贡献给网络,具体谁在使用自己并不清楚。网络的设计者提供了一种集中大家资源的方式,也定义了规则,但具体的内容就要看具体的用户了。P2P是一种新技术,是一个与C/S、B/S并列的业务开发模式,技术是好的,但天生就是小人物反抗大公司的产物,所以有些人不太欢迎它。

 

二.我对P2P网络的理解

        P2P的应用从下载MP3被人们“认识”起,迅速风靡世界,目前运营上网络骨干流量的一半多都是P2P的流量,并且在文件共享、视频直播与点播、即时通(网上电话)、网络聊天、网络存储、网格计算等领域的应用发展神速。P2P的组网模式与开发模式已经成为互联网上最适合“自由者社区”的网络模式,随着网络的普及,互联网已经走过信息上网、信息搜索的阶段,而“社区型”信息搜索可能成为下一阶段的标志。

我个人理解的P2P发展的关键是P2P的业务模式,因为P2P真正体现了网状网络的优势,也从网络自身上解决了长期困扰人们的TCP/IP的服务保障问题,在“没有保障”的因特网上,实现了可以保障服务质量的应用,比如:SKYPE的通话、PPLive的视频直播。网络是信息化社会的传导神经,而这个神经上最适合的模式是P2P。

        P2P技术目前的主要难题还集中在信息的搜索上,搜索技术与P2P的网络结构有直接的关系,先学习一下网络结构是必要的。

 

三.P2P网络结构

1.集中式P2P网络:代表是Napster、QQ

        有一个中心服务器负责记录共享信息(索引信息)并应答对这些信息的查询。与C/S模式的差异是在C/S结构中,客户端之间没有数据流,通过中心服务器交换数据。而P2P登录与信息查询都与中心服务器连接,但查询到数据后,就与存放数据的客户端直接建立连接。

 

2.分布式非结构化P2P网络:代表是Gnutella

        采用了随机图的组织方式来形成松散的网络,没有中心服务器,采用洪泛式搜索(Flooding)和随机转发机制(TTL转发机制),每个节点功能相同,兼作服务器和客户机。

        节点的管理有些象路由的管理,信息在网络中象水的波纹一样传播,直到“能量”耗尽。



3.分布式结构化P2P网络:代表Pastry、Tapestry、Chord、CAN

        结构化是对网络解决的管理方式,是一种逻辑上可以结构化查询,而不是物理连接的变动,结构化是为了搜索算法的快捷,一般相当于折半查找。

        DHT(Distributed Hash Table分布式散列表)路由算法是通过分布式散列函数将输入的关键字唯一映射到某个节点上,然后通过特定路由算法和该节点建立连接。网络节点被分配唯一节点标识符(Node ID),资源对象通过散列运算产生唯一资源标识符(Object ID),且该资源存储在NID与之相等或相近的节点上,查询时,同样的方法定位到存储该资源的节点。

 

4.混合式(半分布式)P2P网络:第三代P2P,代表Skype

        在分布式模式基础上,将用户节点按能力进行分类,使某些节点担任特殊的任务。用户节点:可以从索引节点处得到相临的搜索节点地址。搜索节点:处理搜索请求,要有128k以上的速度,从子节点中搜索文件列表。索引节点:速度快、内存大的节点,保存可以利用的搜索节点信息、搜集状态信息,并维护网络结构。索引节点也可以同时是搜索节点。用户节点可以选择三个搜索节点为父节点,并提交它的共享列表。一个父节点可以维护500个孩子节点。

        首先索引节点的引入不直接连接有版权的资料,摆脱了版权问题。其次引入搜索节点,查询时,用户节点直接连接搜索节点,若搜索的结果不足100个,就向相临的搜索节点再发请求,若还不足,再继续扩散请求,直到所有的搜索节点都访问过。

 

附一:用P2P协议打造人工智能运行平台的讨论

1.用P2P协议打造分布式计算系统

        a.p2p是当今互联网中的一种分布式通讯协议,BT下载,P2P聊天工具都是p2p协议的应用。

        b.而p2p协议曾被用来构建PC机集群来进行大规模并行的蛋白质模拟运算。

        c.分布式系统不是人工智能所必须的,但却是一个很好的人工智能运行的平台

        d.DHT协议是P2P协议中的一种,也是最没有中心的一种P2P协调,很多eMULE就采用这次协议。

        采用DHT协议可以将数以千计的计算机联系起来成为一个分布式计算系统

        DHT没有事件通知,或者选择其他的框架如JXTA。其实C语言确实很不适合做分布式,做服务器编程还可以,GO语言,java,python做分布式比较好。

2.做这个有几个先决条件:

        a.相关的人工智能系统必须有个分布式的架构,不然的话得不到什么好处。

        b.要使用DHT来分布数据的话,那些的数据必须使用hashtable的形式。有些现有的人智系统可能需要改变架构才能用上这个技术。

        c.DHT 貌似没有支持事件通知(event notification)的功能,所以会需要使用其它的p2p协议来满足这类分布式系统的通讯需求。

这种协议多半是支持多语言的,所以该不会被局限在C语言。

附二:P2P及DHT网络简单介绍

        P2P在思想上可以说是internet思想/精神/哲学非常集中的体现,共同的参与,透明的开放,平等的分享(让我想起之前学习过的,现在正在疯狂热炒的云计算的"中央集权"制度)。基于P2P技术的应用有很多,包括文件分享,即时通信,协同处理,流媒体通信等等。通过这些应用的接触,分析和理解,P2P其本质是一种新的网络传播技术,这种新的传播技术打破了传统的C/S架构,逐步地去中心化,扁平化,这或许在一定程度上应证了"世界是平的"趋势。P2P文件分享的应用(BTs/eMules等)是P2P技术最集中的体现,P2P文件分享网络的发展大致有以下几个阶段,包含tracker服务器的网络,无任何服务器的纯DHT网络,混合型P2P网络。DHT网络发展即有"思想/文化"上的"发展",也有一定的商业上的需求(版权管理)。

        DHT全称叫分布式哈希表(Distributed Hash Table),是一种分布式存储方法,一类可由键值来唯一标示的信息按照某种约定/协议被分散地存储在多个节点上,这样也可以有效地避免"中央集权式"的服务器(比如:tracker)的单一故障而带来的整个网络瘫痪。实现DHT的技术/算法有很多种,常用的有:Chord, Pastry, Kademlia等。BT及BT的衍生派(Mainline, Btspilits, Btcomet, uTorrent…),eMule及eMule各类Mods(verycd, easy emules, xtreme…)等P2P文件分享软件都是基于Kademlia算法来实现DHT网络的,BT采用Python的Kademlia实现叫作khashmir。eMule采用C++的Kademlia实现干脆就叫作Kad,当然它们之间有些差别,但基础都是Kademlia。

 

文章来源:

http://www.2cto.com/net/201306/221922.html

http://tieba.baidu.com/p/3047618339

http://blog.csdn.net/mergerly/article/details/7989281

猜你喜欢

转载自bijian1013.iteye.com/blog/2355339
P2P