* 为P2P应用提供服务和基础
从本质上讲,JXTA的目标是希望在任何设备,从台式机到PDA、汽车、洗衣机等设备都可以支持P2P编程。这里有几个概念上的目标,它们包括:
* 使用组来组织Peer并且在组内提供服务和应用的环境。
* 组可以使用认证和验证方式来控制组内的访问权限。
* 通过网络来发布关于Peer和网络资源的信息。
* 通过系统来发布各种请求。
* 提供一个基础平台,供Peer之间做路由和通信。在防火墙或者其他障碍后面的Peer之间的通信也是这个目标中很关键的一部分。
* 提供一种机制允许Peer之间可以彼此监视状态和资源。
除此之外还有一些其他目标,例如加密、支持不同的通信协议、易用性、稳定性和性能等。所有这些目标在设计JXTA协议和最初的Java API时,都被考虑到。
另外,开发人员和Sun公司的管理者还考虑了以下目标:
* 系统应该允许任何设备直接加人到JXTA网络中去。
* 系统应该允许ISP对网络上的Peer进行集中管理。
* 系统应该支持数字产品版权的管理,例如购买的软件、音乐CD、电影等。
* 封装和抽象一些特定的核心功能,以便产生出商业方面的应用。
从上面列出的目标可以看出两点,首先要让企业觉得使用JXTA可以使自己对系统进行控制,原因在于大部分P2P系统没有集中式的管理,所以在应用中不受企业的欢迎。其次,对于硬件或者软件提供商来说,JXTA系统需要能够创造出利润。
根据以上这些目标,JXTA被设计成企业可以接受的、容易维护的、健壮的,并且能够满足任何P2P应用的概念。
JXTA提出了一些新的概念,例如 Peer(对等机)、Peer Group(对等组)、Pipe(管道)和Endpoint(端点)等。JXTA在做对等通信和发现的时候,使用了一个新的概念Advertisemen(广告),这是一个XML文档,它描述了JXTA网络上可以获得的服务和信息。最后,还需要一些不同类型的标志符来区分不同的项目和服务。
在JXTA中,XML是大多数协议的基础。因为它能被任何语言读取,并且其合法性可以验证,而且XML也被广泛地应用。使用XML格式来创建一个协议是个很好的选择;因为如果使用二进制格式会很难理解,而且解析起来很费力气,而使用XML格式,有很多解析器可供使用,既有商业化的,也有免费的。并且,XML正在成为一种标准被许多厂商采用以表达数据。
当然使用XML也有它不利的一方面,XML并不是一种压缩的数据传送方式,用XML编写的信息往往比由二进制编写的信息大得多。虽然也可以采用一些技术来加以改善,例如用二进制信令来替代XML的标签,或者是进行数据压缩,但是这些技术在目前还不是被广泛接受的标准,因此在JXTA中还没有采用。最终,JXTA的核心开发人员创造了一种简单的二进制信息传送方式,并使用简洁的语言和缩写来描述标签名字,但是这也意味着JXTA中采用的XML是不容易读懂和学习的。
JXTA由三层组成,如图3.1所示。第一层是JXTA核心层,它包含了服务所需要的核心功能;第二层是服务层,它提供了访问JXTA协议的接口;第三层是应用层,它使用服务来访问JXTA网络和JXTA提供的功能。这样的设计和一个标准的操作系统比较相似,标准的操作系统包括核心操作系统、服务和应用程序。
图3.1 JXTA的三层结构
各层的说明如下所示。
核心层(JXTA Core):这一层封装了最根本的东西,包括Peer、对等组、Peer发现、PeeR通信、Peer监视和相关的安全原语。
服务层(JXTA Services):这一层包括对于P2P网络不是必需的、但很通用的功能,如查找、共享、索引、代码缓存和内容缓存的机制。
应用层(JXTA Application):这一层包括了应用JXTA服务开发出来的完整的P2P应用程序,例如myJXTA,JXTA-CAD等应用程序。
3.2 JXTA的概念
在JXTA网络中,有一些概念是需要熟悉和理解的,它们是从JXTA协议中提出的一系列的专有名词。
3.2.1 Peer(对等机)
Peer是一个虚拟的通信点。在一台计算机或者设备上可以有很多个Peer。一个Peer并不是一个用户,因为一个用户可以有多个Peer,同一个设备上也可以有多个Peer(在测试的时候经常用到)。因为Peer不等同于用户,所以需要将用户和Peer抽象出来并分离开。
Peer与特定的网络服务联系得很紧。在JXTA的参考实现中,Peer可以使用网络提供的基本服务,例如rendexvous(集合点服务),router(路由服务),gateway(网关服务)等。这些基本服务又可以提供搜索和通信服务。一般来说,并不是所有的Peer都使用这些服务,它们只使用这些服务的一部分。
3.2.2 Peer Group(对等组)
对等组是一种组织Peer并且发布组内的特定服务的方式。对等组可以被创建、加入和退出。在一个组里还可以更新一个组成员的关系。由于一些原因,对等组需要对成员关系进行一些限制,例如为了通信的安全、隐私的考虑等。这里使用一种协议来认证,它专门收集信息并判断其是否符合成员关系的要求。
对等组为应用程序提供了一种环境,例如对某个话题感兴趣的Peer可以组成一个组,并且在组内使用一个聊天服务来讨论。这样,聊天的信息就会限制在那些加人到这个组内的成员之间。并且,对于想加人到这个组的Peer,可以使用成员ID来进行认证;没有这个ID的Peer不能够加人到组内,也就不能够使用组内的聊天服务。
也可以把对等组看成一个虚拟的私人网络VPN。一个VPN只允许几个计算机之间互相交流,而不允许因特网上其他的成员加人。由于VPN使用了加密的方式,对于偷听者他们不能够理解组内的谈话。对等组也可以限制Peer的加入,同样也可以对谈话消息加密。
3.2.3 Endpoint(端点)
在JXTA应用中,端点是最基本的通信方法。一个端点就是实现了特定通信协议的Peer的地址。一个Peer可以有多个端点,这样可以通过不同的协议来与其他Peer通信。
端点不一定要是物理地址,端点可以允许物理地址发生变化。端点的一个简单例子就是一个IP地址加上一个端口。通过使用这些值,可以打开一个流并且与目标Peer通信。然而,JXTA在流的基础之上又放置了一层,称之为Pipe(管道)。这样,不是将一个流连接到一个地址,而是把一个管道连接到端点上。端点和管道的好处在于,不用去关心Peer所使用的真正的地址和协议是什么。使用抽象出来的端点和管道,可以为创建P2P应用提供强大的功能并降低复杂性。
由于管道使用通信协议来连接,端点描述了协议和连接的所需要的信息。因此端点可以描述HTTP、TCP、BEEP以及其他可以支持的通信协议。
一个Peer可以支持一个或者多个端点。通过使用多种协议,Peer可以提供更有效率的方法。也就是说,如果两个Peer都在防火墙的后面,可以直接通过它们的TCP端点来通信;如果两个Peer要穿过防火墙去通信,则需要使用HTTP的端点。
3.2.4 Pipe(管道)
管道是Peer之间的虚拟通道。通常,我们认为对等通信是单个的通信连接,但是也并不是总是这样的。因为防火墙和其他障碍的存在,许多Peer并不能直接连接。这时,管道更像一个在多种通信协议之上的虚拟层,可以通过起网关作用的Peer对通信提供中继支持。
管道是JXTA最基本、最重要的特性,它提供了一种很好的方案,使得Peer在大多数网络情况下都可以通信,而不用去管防火墙或者其他的障碍。即使你不知道另外一个Peer的位置以及它所使用的协议等信息,通过管道仍然可以与之通信。
管道作为一种抽象的方法,隐藏了一些细节,比如在多个连接的时候可能会有多个Peer
上一篇:
JSP网上购物系统毕业设计论文(word文档)
下一篇:
基于JSP邮件收发系统论文