有六个协议构成了JXTA的核心,JXTA通过这六个协议来完成Peer之间的通信,彼此之间的资源的发布和发现,信息的传递和路由,协议本身并不是应用程序,需要添加更多的代码来开发有用的应用,协议隐藏了很多细节,这样使得编写JXTA应用程序比从空白开发P2P应用要轻易得多。
JXTA在JXTA协议规范中定义了它的协议。此规范描述了Peer间如何通信和交互,它并未描述实现的细节或如何编写P2P应用程序,下面是JXTA协议的列表,其中包含了协议名称的首字母缩略词,这六个协议如图所示。
图 JXTA的核心协议
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----路由