一、 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个,就向相临的搜索节点再发请求,若还不足,再继续扩散请求,直到所有的搜索节点都访问过。