
peer-to-peer体系结构风格.pdf
35页Peer-to-Peer(P2P)体系结构风格 ************************************************** 目录 一 . 名称 二 . 基本特征 三 . 技术特点 四 . 不变式 五 . 参考实现 六 . 典型应用 附录:参考文献 ************************************************** 一 . 名称 Peer-to-Peer,以下简称 P2P,翻译成中文有“对等网络计算”、“点对点”等说法它是一种近年来在网络应用方面新出现的技术,可以说它是一种从宏观上对分布式系统架构的规范依赖网络中参与者的计算能力和带宽,而不是把依赖都聚集在较少的几台服务器上 P2P 通常被用在下载技术中,意思是在自己下载的同时,自己的电脑还要继续做 主机 上传,这种下载方式,人越多速度越快但缺点是对硬盘损伤比较大(在写的同时还要读),还有对内存占用较多,影响整机速度网络上有一种常见的说法 Point to Point,也简写为P2P,其实和 Peer-to-Peer 描述的是同一件事物,但 Peer-to-Peer 的说法更为专业。
目前,在学术界、工业界对于 P2P 没有一个统一的定义,以下是几个常用的定义: 1、 Peer-to-peer is a type of Internet network allowing a group of computer users with the same networking program to connect with each other for the purposes of directly accessing files from one another's hard drives. 2、 Peer-to-peer networking (P2P) is an application that runs on a personal computer and shares files with other users across the Internet. P2P networks work by connecting individual computers together to share files instead of having to go through a central server. 3、 P2P 是一种分布式网络,网络的参与者共享他们所拥有的一部分硬件资源(处理能力、存储能力、网络连接能力、打印机等),这些共享资源需要由网络提供服务和内容,能被其它对等节点 (Peer)直接访问而无需经过中间实体。
在此网络中的参与者既是资源(服务和内容)提供者( Server),又是资源(服务和内容)获取者( Client) 二 . 基本特征 该部分将从计算模型,构件,连接件,配置,约束几个方面对 P2P 技术做一简单介绍 计算模型 P2P 倡导的是一种去中心化的分布式计算模型,是与传统的 Client/Server想对应的传统的 Client/Server 模型是把计算和控制信息都保存在服务器端,而客户端只相当于一个 I/O 设备而存在,所有客户端之间的数据交流都要流经服务器,这样会导致当过多的客户端请求服务器时,会出现过度拥挤而减慢数据传输速度 P2P 则与传统的 Client/Server 模型相反,其计算模型具有一下特征: 1. P2P 中每个对等体,也即客户端,既是客户端,也是服务器,还具有路由器和高速缓冲存储器的功能; 2. P2P 中每个客户端都会充分利用邻近节点(也是一个个客户端)的资源,提高数据传输速度; 3. P2P 中的每一个对等体往往没有固定的 IP 地址,但这并不影响对等体之间互相使用对方的资源 图 1 P2P 的计算模型 构件 P2P 构件抽象,由去多构件组成(非正式划分) 图 2 P2P 构件抽象 连接件 连接件主要作用于构件之间的通信,包括一下三方面的内容: 1. P2P 模式拥有广泛的通信方式,可以通过高速稳定链路连接到 因特网的桌面机,还可以是小型无线设备 PDA,甚至通过无线媒质连接到Ad-hoc 网的基于传感的装置; 2. 在 P2P 的群体通信中,和对等端动态特点配合的问题体现在有意(关机)或无意(拨号或网络断开)使 P2P 群体组发生频繁变化以及在这种环境下维持应用层的连接; 3. 定位及搜索路由的方法,可以从某 Peer 到另一个之间的消息传送路径的优化,还可以使用已开发的 P2P 软件优化现行网络。
配置 每个网上 Peer 分配一个随机 ID,并知道其他 Peers 的给定号码,当共享文件发布到系统上时 ,根据文件名字和内容 Hash 成为 ID,每个 Peer 将根据该 ID向该文件路由该过程重复执行 ,直到最近的 PeerID 是现行 Peer 的 ID每个路由操作还保持文件副本在本地,当 Peer 请求某文件时 ,该请求将用该文件的ID 到达 Peer,过程重复直到发现文件副本,最终文件下载到请求源端 约束 P2P 系统天生需要 Peers 间直连,内外网隔离减少了应用的访问权限,如 FW阻止返回的 TCP 连接,导致 FW内的计算机不可访问更坏的是,家庭用户频繁使用伪装 IP 或 NAT 保持同几个计算机之间因特网连接,但 FW 让 TCP80 端口常开,使隐藏机和因特网可保持连接,两个均在 FW 后 Peers 通信就更难了,需要中继服务器提供二者间的连接 三 . 技术特点 优势 1. 非中心化 ( Decentralization):网络中的资源和服务分散在所有结点上,信息的传输和服务的实现都直接在结点之间进行,可以无需中间环节和服务器的介入,避免了可能的瓶颈。
P2P 的非中心化基本特点,带来了其在可扩展性、健壮性等方面的优势 2. 可扩展性 :在 P2P 网络中,随着用户的加入,不仅服务的需求增加了,系统整体的资源和服务能力也在同步地扩充,始终能较容易地满足用户的需要整个体系是全分布的,不存在瓶颈理论上其可扩展性 几乎可以认为是无限的 3. 健壮性 : P2P 架构天生具有耐攻击、高容错的优点由于服务是分散在各个结点之间进行的,部分结点或网络遭到破坏对其它部分的影响很小 P2P网络一般在部分结点失效时能够自动调整整体拓扑,保持其它结点的连通性P2P 网络通常都是以自组织的方式建立起来的,并允许结点自由地加入和离开 P2P 网络还能够根据网络带宽、结点数、负载等变化不断地做自适应式的调整 4. 高性能 /价格比 :性能优势是 P2P 被广泛关注的一个重要原因随着硬件技术的发展,个人计算机的计算和存储能力以及网络带宽等性能依 照摩尔定理高速增长采用 P2P 架构可以有效地利用互联网中散布的大量普通结点,将计算任务或存储资料分布到所有结点上利用其中闲置的计算能力或存储空间,达到高性能计算和海量存储的目的通过利用网络中的大量空闲资源,可以用更低的成本提供更高的计算和存储能力。
5. 隐私保护 : 在 P2P 网络中,由于信息的传输分散在各节点之间进行而无需经过某个集中环节,用户的隐私信息被窃听和泄漏的可能性大大缩小此外,目前解决 Internet 隐私问题主要采用中继转发的技术方法,从而将通信的参与者隐藏在众多的网络实体之中在传统的一 些匿名通信系统中,实现这一机制依赖于某些中继服务器节点而在 P2P 中,所有参与者都可以提供中继转发的功能,因而大大提高了匿名通讯的灵活性和可靠性,能够为用户提供更好的隐私保护 6. 负载均衡 : P2P 网络环境下由于每个节点既是服务器又是客户机,减少了对传统 C/S 结构服务器计算能力、存储能力的要求,同时因为资源分布在多个节点,更好的实现了整个网络的负载均衡 缺陷 1. 知识产权保护: 在 P2P 共享网络中普遍存在着知识产权保护问题尽管目前 Gnutella、 Kazaa 等 P2P 共享软件宣传其骨干服务器上并没有存储任何涉及产权保护的内容的备份,而仅仅是保存了各个内容在互联网上的存储索引但无疑的是, P2P 共享软件的繁荣加速了盗版媒体的分发,提高了知识产权保护的难点美国唱片工业协会 RIAA(Recording Industry Association of America)与这些共享软件公司展开了漫长的官司拉锯战,著名的 Napster 便是这场战争的第一个牺牲者。
另一个涉及面很关的战场则是 RIAA 和使用 P2P 来交换正版音乐的平民从 2004 年 1 月至今 RIAA 已提交了 1000 份有关方面 的诉讼尽管如此,至今每个月仍然有超过 150,000,000 的歌曲在网络上被自由下载后 Napster 时代的 P2P 共享软件较 Napster 更具有分散性,也更难加以控制即使 P2P 共享软件的运营公司被判违法而关闭,整个网络仍然会存活,至少会正常工作一段时间 2. 网络病毒传播: 随着计算机网络应用的深入发展,计算机病毒对信息安全的威胁日益增加特别是在 P2P 环境下,方便的共享和快速的选路机制,为某些网络病毒提供了更好的入侵机会由于 P2P 网络中逻辑相邻的节点,地理位置可能相隔很远,而参与 P2P 网络的节点数量又 非常大,因此通过 P2P 系统传播的病毒,波及范围大,覆盖面广,从而造成的损失会很大 3. 不良信息传播: 其它信息安全问题还包括反动影片、色情影片的在 P2P泛滥,对国家、青少年造成的负面影响 四 . 不变式 1. 非中心化思想 P2P 从产生之初就在置疑传统的 Client/Server 模式的中心化思想,并且一直没有改变,它强调用户端所有权 ,对数据和资源的控制;每个 Peer 都是平等的参与者; 2.可扩展性 由于每一个客户端都能扮演服务器的角色,承担一部分数据处理任务,因此P2P 系统可以支持非常多的用户同时,比如 Napster 在其服务的高峰用户达到 600 万,而最近的 P2P 系统 --- CAN,Chord,Oceanstore PST,该系统设计规模是数 10 亿用户和 1014个文件,这对于 Client/Server 结构的系统来说是很难做到的。
五 . 参考实现 以一个类似于 BitTorrent 的系统为例,以下是 Peer(对等体)的一些关键的实现代码,使用 C#语言,供参考 1. Peer 基本信息维护 using System; using System.Collections.Generic; using System.Linq; using System.Text; using CommData; using PeerSpace; using Utilities; namespace BitTorrent { public class BTPeer : IDisposable { private bool alreadyDisposed = false; public BTPeer() { PeerSingleton.Distributed.Node.OnObjectReceived += new Peer.ObjectReceivedHandler(Node_OnObjectReceived); } ~BTPeer() { this.Dispose(false); } public void Dispose() { this.Dispose(true); GC.SuppressFinalize(true); } private void Dispose(bool isDisposing) { if (this.alre。












