JXTA技术结构

层次结构

JXTA由三层组成,如图2所示。第一层是JXTA核心层,它包含了服务所需要的核心功能;第二层是服务层,它提供了访问JXTA协议的接口;第三层是应用层,它使用服务来访问JXTA网络和JXTA提供的功能。这样的设计和一个标准的操作系统比较相似,标准的操作系统包括核心操作系统、服务和应用程序。

1.核心层(JXTA Core):提供了对P2P应用与服务的核心支持。其中,Peer组建立一组点并在组中分别命名,并且对创建、删除、成员管理、公布以及搜索其他Peer组和点、通信、安全、内容共享等基本功能都设定了相应机制;管道在Peer之间提供通信,在管道中传输的信息通过XML格式化,并且在某种意义上是不依赖特定协议的;Peer实体监视器用来控制一个Peer组中某个Peer的行为;安全提供基本的平台级安全保障。

2.服务层(JXTA Services):包括对于P2P网络不是必需的,但很通用的功能,如查找、共享、索引、代码缓存和内容缓存的机制。

3.应用层(JXTA Application):包括了应用JXTA服务开发出来的完整的P2P应用程序,为用户提供最终的界面和整体解决方案。

 

协议

六个协议构成了JXTA的核心,JXTA通过这六个协议来完成Peer之间的通信,彼此之间的资源的发布和发现,信息的传递和路由,协议本身并不是应用程序,需要添加更多的代码来开发有用的应用,协议隐藏了很多细节,这样使得编写JXTA应用程序比从空白开发P2P应用要容易得多。

JXTA项目在JXTA协议规范中定义了它的协议。此规范描述了Peer间如何通信和交互,它并未描述实现的细节或如何编写P2P应用程序。Sun已为 JXTA 提供了初步的 Java 语言实现。这些协议都是建立在 XML 消息交换的基础上的。JXTA规范不要求Peer实现上述所有协议。任一个特定的Peer只需实现那些实际要用到的协议。

1.点发现协议Peer Discovery Protocol(PDP):主要用来发布自己的广告信息,并且从其他Peer处获得广告。PDP允许一个Peer发现其他Peer的广告(包括Peer 广告、组广告、服务广告,或者是管道广告)。该协议通过指定一种广告类型(如Peer、组)、一个XML标签名、一个匹配这个XML标签所表示数据的字符串来定义查询。它使用Peer Resolver Protocol来发送和传播搜索广告的请求。

2.管道绑定协议Pipe Binding Protocol(PBP):允许Peer之间建立虚拟的通信通道。该协议首要关注的是通过Peer端点路由协议提供的路由连接Peer。它使用Peer Resolver Protocol来发送和传播搜索广告的请求。

3.点信息协议Peer Information Protocol(PIP):用来获得其他Peer的状态信息,包括更新时间、状态等等。该协议有时被用做ping命令,有时被用来获得一个Peer的基本状态信息,PIP消息的正文是自由格式的,它允许询问特定的Peer信息。此外,这种能力可以被扩展以提供控制能力,它使用Peer Resolver Protocol来发送和传播搜索广告的请求。

4.点解析协议Peer Resolver Protocol(PRP):允许Peer发送更一般的请求,并可以接收到该请求的回应;同时可以将请求分发到组内的一个或者多个匹配的处理器,Peer 解析协议是一个基础通信协议,它按照一种请求/响应格式来进行,要使用这个协议,需要提供一个查询的Peer和一个包含能被目标Peer理解的XML请求消息,该协议被用来支持JXTA中的其他协议(PDP、PBP和PIP),而且允许传播查询,例如,如果一个Peer收到一个查询并且不知道答案,解析协议就会将该查询发送给别的Peer。

5.端点路由协议Peer Endpoint Protocol(PEP):通过该协议Peer以发送消息的形式获得一条路由路径。它使用Peer间的网关来建立一条包含一个或多个适合建立管道的管道协议组成的通路。管道绑定协议借助此Peer列表来建立Peer间的路由。一般情况下传统的路由器和DNS服务器会因为防火墙、代理服务器和NAT设备等原因而无法建立连接,而端点路由协议通过寻找网关来穿越诸如防火墙等障碍来建立连接。端点路由协议还可以同时帮助相互不支持对方使用协议的Peer进行通信。例如,如果你连接支持TCP的Peer-A和只支持HTTP的Peer-B,端点路由协议既可以选择一个可以支持此传输的网关,又可以选择多个并且相互协议兼容的一组网关。

6.集合点协议Rendezvous Protocol(RVP):通过该协议Peer可以对一个服务订阅或者被订阅。集合点协议负责在JXTA对组内传播消息,它为Peer在组内接收和发送消息并且控制消息如何传播定义了一个基本的协议。

  从编写P2P应用程序的角度而言,可以简单地划分上述协议的主要用途:
  * Peer Discovery----搜索资源
  * Peer Resolver----一般查询服务
  * Peer Information----监控
  * Pipe Binding----可寻址的消息传递
  * Rendezvous----消息传播
  * PeerEndpoint----路由

 

网络核心概念

1.Peer是一个虚拟的通信点。在一台计算机或者设备上可以有很多个Peer,一个Peer并不是一个用户,因为一个用户可以有多个Peer,同一个设备上也可以有多个Peer(在测试的时候经常用到)。Peer与特定的网络服务联系得很紧,在JXTA的参考实现中,Peer可以使用网络提供的基本服务,这些基本服务又可以提供搜索和通信服务,一般来说,并不是所有的Peer都使用这些服务,它们只使用这些服务的一部分。

2.PeerGroup是可以通过Peer组协议进行交互的一个虚拟实体,它是一种组织Peer并且发布组内的特定服务的方式。对等组可以被创建、加入和退出,在一个组里还可以更新一个组成员的关系,由于一些原因,组需要对成员关系进行一些限制,例如为了通信的安全、隐私的考虑等。这里使用一种协议来认证,它专门收集信息并判断其是否符合成员关系的要求。总之,PeerGroup是一个为提供通用服务而相互协同工作的一组Peer的集合。P2P最终将使整个可连接设备组成一个巨大的虚拟P2P计算系统网络。然而,在实际的环境中,由于多方面的原因,将网络分隔成许多不同的部分可能是非常有意义的。JXTA以PeerGroup的形式提供了此类网络分隔。

服务

JXTA的服务主要提供给Peer组内的成员共享。事实上,一个Peer加入到Peer组的主要目的就是为了得到组内的服务。一组高效的核心服务对于实现JXTA网络的基本操作是致关重要的。

Pipe(管道):是Peer之间的虚拟通道,是用来在Peer之间接收和发送异步消息的通信管道。逻辑上,JXTA的通信管道属于对等组内的资源,它是通过通信管道服务来实施的。通常,我们认为Peer通信是单个的通信连接,但是也并不总是这样的,因为防火墙和其他障碍的存在,许多Peer并不能直接连接,这时,管道更像一个在多种通信协议之上的虚拟层,可以通过起网关作用的Peer对通信提供中继支持。 管道是 JXTA最基本、最重要的特性,它提供了一种很好的方案,使得Peer在大多数网络情况下都可以通信,而不用去管防火墙或者其他的障碍,即使不知道另外一个Peer的位置以及它所使用的协议等信息,通过管道仍然可以与之通信;管道作为一种抽象的方法,隐藏了一些细节,比如在多个连接的时候可能会有多个Peer参与进去,管道也可以重新定位,找到原来的Peer。

Message(消息): JXTA网络中的所有通信都是通过发送和接收消息实现的。JXTA消息是从一个节点通过管道传输到另一个节点的数据包,这些消息由封装袋和主体组成,用XML文档编码,是实现交互操作性的关键(另一个为协议)。封装袋具有标准的格式,主体可以携带任意长度、任何内容的数据。用任何编程语言实现的节点可以从一个JXTA管道里读消息或广告数据,产生输出,将结果写到另一个JXTA管道中。

Advertisement(广告) :一个广告就是一个XML文档,它用来描述JXTA的消息、Peer、Peer组或者服务等。广告都遵守编码、标签和内容的标准,广告用来交换JXTA网络上可以获得的任何信息。例如,一个Peer创建了名称为“team_A8”的Peer组后,就可以使用IP多播方式把广告发布到本地的JXTA网络;也就说,子网中的每一个Peer都会收到一份广告的副本,此外广告还会被发送到集合点去。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值