发新话题
打印

P2P通信

本主题由 admin 于 2008-5-18 09:25 PM 分类

P2P通信

P2P通信时需要解决的最基本的问题即是如何连接其它的终端获得信息、资源和服务。该问题可细分为以下一些问题:
􀁺 P2P网络的拓扑结构和Peer节点的功能角色划分;
􀁺 资源和服务如何标识;
􀁺 进行资源查找时如何进行Peer定位;
􀁺 P2P网络中Peer节点的动态变化的处理;
􀁺 如何穿越NAT(Network Address Translation)和防火墙进行Peer节点之间的直接通信
P2P网络的拓扑结构和Peer节点的角色划分
在P2P网络中,有两种典型的拓扑结构,即纯P2P网络和混杂的P2P网络[13]。在纯P2P网络中,每个Peer都具有同等的责任和地位,不存在中间节点的协调。FreeNet、Gnutella都属于纯P2P网络。而在混杂的P2P网络中,存在着充当服务器角色的Peer节点或提供特殊功能的Super-Peer节点,这些节点保存其它Peer节点的基本状态和存储内容源信息,协助完成对其它节点的记录、查询等工作。Napster, Groove, Magi等系统均是典型的混杂型P2P系统。
每一个Peer根据其提供的角色功能可以划分为三种类型,即简单类型Peer节点,super-peer节点和服务器型的peer节点。简单类型Peer节点仅仅是一个简单的终端用户,它可以请求获得服务并为网络中的其它Peer提供服务。Super-peer节点除了具有和简单Peer节点类似的功能外,还提供某些特殊功能。如JXTA系统中就存在路由器Peer节点和会聚点Peer节点[12],前者作为一个桥梁,使得被防火墙或NAT隔离的Peer可以相互通信;后者为简单节点提供查询定位信息的功能。服务器型的Peer节点主要提供类似与客户/服务器模型下的服务器功能,如提供一个全局统一的目录查询。在Napster这种混杂型的P2P系统中,有若干个简单Peer节点相互提供文件下载功能的服务,还有一个目录服务器节点提供文件条目的注册管理。Groove和Magi系统中也均存在这样的服务器型节点。而在纯P2P网络中,每一个Peer节点均充当了上述的三种角色。
资源的标识
为了在P2P网络中准确地查找资源进行Peer定位,还需要确定Peer中存贮资源的标识(这里我们将在P2P网络中需要进行查找的对象统称为资源)。不同的应用场景均有适合自身特点的资源标识方式。
在以文件共享为主的应用中,资源主要以文件的名称、关键字、源数据等进行标识。而即时消息通讯系统往往采用类似于电子邮件的命名方式,如在Jabber系统中,Jabber的用户ID以[node@]domain/[resource]的形式进行地址标识[7],提供一个全局统一的地址空间。其中,Domain是主要的ID标识,是与多个用户连接进行消息转发的Jabber Server;Node为用户姓名或昵称,Resource属于一个Node,标识属于一个用户的多个资源。一个用户可以同时与同一服务器建立多次连接。
以用户之间协作为主的P2P应用如Groove系统和Magi系统,由于在协作中对即时消息通讯和文件共享的要求兼而有之,用户一般以用户名进行标识,而文件则以源数据标识[14]。
JXTA作为一个解决不同P2P应用彼此不兼容的底层平台,提出了一个统一的资源标识定义,即广告[12]
(advertisement)。广告是一个XML结构的文档,由Peer或相互协作共同完成一种应用Peer 组进行发布,用来描述现有的资源、服务或实体Peer。Peer节点通过查询广告以获得各种资源的消息,进行Peer定位。
Peer的定位方式
在查找资源的过程中,可采用直接或间接方式定位Peer。直接定位Peer的方式比较简单,即利用广播或多播的形式发出查询请求,符合查询要求的Peer节点进行应答,然后建立直接的通信连接。由于这种方式只能在局域网中使用,所以应用范围有限。当然这种方式可以和其它的定位方式结合使用以获得良好的查询效率。
间接方式包括三种模型:服务器模型、洪流模型、和路由模型。
服务器模型:该模型是基于混杂型的P2P拓扑结构。充当服务器的peer节点提供资源查询。peer将请求发送至服务器获得查询结果,随后,直接与目标节点通信获取所需服务。但这种方式存在单点失败问题,同时,也存在伸缩性问题。但因为peer节点仅在启动、停止及查询的时候才与服务器交互,所以此时的伸缩性还是强于客户/服务器模式。典型系统有Napster,Magi,Groove和Jabber。Napster系统采用一个目录服务器记录资源索引,Groove系统和Magi系统均是采用动态DNS查找用户的IP地址[14]。Jabber系统由于其资源标识类似于Email地址,所以,利用DNS的MX记录进行IP地址的查询[7]。
洪流模型:该模型基于纯P2P拓扑结构。Peer节点采用洪流法将查询请求不断地转发至邻居节点,直到到达目标节点,获得查询结果。同时为了避免消息无限制的转发,查询请求中设定有TTL(Time to Live)或HTL(Hops to Live)进行转发控制。Gnutella是采用此类模型的典型系统。
路由模型:该模型也是基于纯P2P网络结构。首先为网络中的每一个peer赋予一个ID,同时,每个Peer存储的资源和服务也有类似的ID。Peer节点的路由表中登记一定数量的邻居节点。Peer的请求被转发至与所请求的资源或服务的ID 最接近的Peer,直到发现这个资源或服务[15]。插入一个新资源/服务的过程与查询过程类似,也是通过查找该资源/服务ID来确定存储的正确位置。此类模型主要用在文件共享系统中,如FreeNet,Chord[16],CAN[17],Tapestry,Pastry等。
路由模型又可细分为非结构化路由模型和结构化路由模型。FreeNet系统属于典型的非结构化路由模型。在查找到所需资源后,为了提高搜索性能,系统沿搜索路径复制资源。这样,由于资源的存储位置不固定,其行为不易观察,不确定因素较大。所以相对于结构化路由模型来说,其资源分布的规律性不强,难以从全局上把握整个系统的资源分布状况。而结构化路由模型如Chord, CAN, Tapestry, Pastry均采用了DHT(Distributed Hash Table)作为主要的存储算法。DHT的主要思想是将资源定位用的索引(索引结构通常是两元组(文件名,实际的存储位置))分散存储到整个P2P网络上,这样,哈希表的存储和查询操作就会涉及到P2P网络中的多个节点。
以DHT思想进行路由模型的设计时,首先需要确定通过Hash函数进行虚拟地址空间映射的规则。虚拟地址空间的设计有多种方式, Chord采用的虚拟地址空间为m-位的循环地址空间[16],CAN系统采用的是多维的地址空间[17]。Peer节点的IP地址和端口号经过哈希函数映射到地址空间,再将映射空间进行划分,每个节点负责存储属于自己空间的值对(key,value)。其次需要确定路由表项的存储内容,即邻居节点的规模,以适应于不同的网络需求。这里需要对路由表项的规模与网络搜索跳转数进行综合考虑。在动态性较强的网络中,节点频繁加入和退出网络会使得规模较大的路由表更新频率过高,操作费时。但规模较小的路由表在进行资源定位时,又使得查找时间过长。再次是确定在接收到一个资源的查询请求时,从路由表中选择转发的邻居节点的规则。最后要确定新节点的插入和删除操作后,虚拟的地址空间如何进行分裂和合并。
P2P网络中节点的登录和退出
在服务器模型的P2P网络中,由于Peer节点的状态信息和管理的资源信息直接记录在服务器中,Peer节点的登录和退出仅需和服务器进行交互,由服务器进行协调处理。如在Napster系统中,Peer节点登录系统后,向服务器发送当前的网络状态和所有的文件列表信息,由服务器更新目录索引。在Jabber等即时消息通讯系统中,Peer节点往往是与用户绑定的。服务器接收到用户的登录消息或退出消息后,通知订阅
该用户在线状态的所有在线用户。
非结构化路由模型FreeNet中,新节点首先需要获知网络中的若干可连接节点的信息,通过执行搜索操作向整个网络宣布自己的存在。在结构化路由模型的P2P网络中,节点的登录和退出,将导致虚拟地址空间的分裂和合并。Peer节点登录网络的操作,类似于一个资源的查找过程。Peer节点定位到所属的地址空间后,将地址空间以一定规则进行分裂。负责管理该地址空间资源的原节点将所属资源按分裂的规则,部分转移到新节点。同时两个节点的路由表项和其它相关节点的路由表项均要进行修改。而Peer节点退出网络的过程,则是登录网络的逆过程,资源需要转移合并,相关节点的路由表项同样需要更新。
防火墙和NAT的穿越
在实际的网络通信中,Peer节点往往是一个私有网络中的节点,位于防火墙之后。这样,Peer与Peer之间直接通信需要解决的一个关键问题是穿越防火墙和NAT。由于防火墙会对IP进行过滤,限制了墙内外的连接,而NAT技术虽然可以使得内部网络地址映射到外部网络地址,但要求内部网络首先发起对外连接,否则外部网络机器无法达到内部网络[12]。穿越防火墙和NAT的策略有两个基本点:
(1) 需要使用在一般情况下可以通过防火墙的协议,如基于请求/应答方式的HTTP协议。
(2) Peer之间进行通信时,必须由内部网络的机器首先发起连接请求,如果通信双方均处于防火墙之后,则需要有防火墙外的转发节点进行消息转发。
在Napster系统中当Peer节点请求下载的资源位于一个防火墙之后的节点上,请求节点向服务器端发送需要进行转换下载的请求 (Alternate download request),由服务器通知被请求节点首先发起文件下载的连接请求。而Gnutella是在将查询的详细信息返回给请求者的同时发送资源文件,以此方式解决文件提供者位于防火墙之后的情况。
JXTA平台中,其super-peer节点中的路由节点是提供防火墙和NAT穿越功能的特殊节点。若通信一方在防火墙之后,那么单向穿越的过程由试图与防火墙后的peer A连接的peer节点B发起,节点B首先与路由Peer连接,同时peer A周期性地连接路由 Peer,由于路由 Peer对Peer A是可见的,且不在防火墙后,连接请求消息可作为http的应答内容返回至peer A。若通信的双方都在防火墙之后,那么需要两个路由 peer。Peer1 通过路由节点1 转发消息,路由节点1将消息转发至路由节点 2,Peer2周期性地向路由节点2发送http请求,获得消息后断开连接。JXTA平台中路由节点的使用不仅可以穿越防火墙,还可以解决瓶颈问题,解决网络传输的不兼容性[12]。
偶沙发
板凳了
顶啊
BS坐地板的,没有品位,忽忽偶笑话你

m专卖 戴尔 700m

提示: 作者被禁止或删除 内容自动屏蔽
发新话题
本站网页播放器基本说明:1.点击可按专辑选择曲目,界面有6种随机皮肤,您可定制外观和列表,还可在后台改样式、加音视频、加入歌词、指定共享用户等; 2.可添加的视频格式:.WAV .MPG .MPEG .MPE .MPA .AVI .WMV .WVX .IVF .DAT .ASF .SMI .SMIL .RMVB .SWF .JPE .JPG .JPEG .GIF .PNG .BMP .FLV .html 音频格式:.M1V .MP2 .MPV2 .MP2V .MP3 .MID .MIDI .RMI .WMA .WAX .AIF .AIFC .AIFF .AU .SND .SWA .M3U; 3.内置赞偈、经颂、经忏、朝暮课诵、经咒佛号、藏传南传、英语、旋律、名星唱佛等佛教梵呗,共有132部专辑1088首佛 曲,10G的音乐文件,多为128kbps 44kHz格式,点击网页右上角的“启动播放器”即可在线播放。 内置佛乐下载 详细帮助