论坛首页 入门技术论坛

JXTA的概念(一)

浏览 2042 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2010-03-26  

在JXTA网络中,有一些概念是需要熟悉和理解的,它们是从JXTA协议中提出的一系列的专有名词。

Peer(对等机)

Peer是一个虚拟的通信点。在一台计算机或者设备上可以有很多个Peer。一个Peer并不是一个用户,因为一个用户可以有多个Peer,同一个设备上也可以有多个Peer(在测试的时候经常用到)。因为Peer不等同于用户,所以需要将用户和Peer抽象出来并分离开。

Peer与特定的网络服务联系得很紧。在JXTA的参考实现中,Peer可以使用网络提供的基本服务,例如rendezvous(集合点服务),router(路由服务),gateway(网关服务)等。这些基本服务又可以提供搜索和通信服务。一般来说,并不是所有的Peer都使用这些服务,它们只使用这些服务的一部分。

Peer Group(对等组)

对等组是一种组织Peer并且发布组内的特定服务的方式。对等组可以被创建、加入和退出。在一个组里还可以更新一个组成员的关系。由于一些原因,对等组需要对成员关系进行一些限制,例如为了通信的安全、隐私的考虑等。这里使用一种协议来认证,它专门收集信息并判断其是否符合成员关系的要求。

对等组为应用程序提供了一种环境,例如对某个话题感兴趣的Peer可以组成一个组,并且在组内使用一个聊天服务来讨论。这样,聊天的信息就会限制在那些加入到这个组内的成员之间。并且,对于想加入到这个组的Peer,可以使用成员ID来进行认证;没有这个ID的Peer不能够加入到组内,也就不能够使用组内的聊天服务。

也可以把对等组看成一个虚拟的私人网络VPN。一个VPN使用了加密的方式,对于偷听者他们不能够理解组内的谈话。对等组也可以限制Peer的加入,同样也可以对谈话消息加密。

Endpoint(端点)

在JXTA应用中,端点是最基本的通信方法。一个商战就是实现了特定通信协议的Peer的地址。一个Peer可以有多个端点,这样可以通过不同的协议来与其他Peer通信。

端点不一定要是物理地址,端点可以允许物理地址发生变化。端点的一个简单例子就是一个IP地址加上一个端口。通过使用这些值,可以打开一个流并且与目标Peer通信。然而,JXTA在流的基础之上又放置了一层,称之为Pipe(管道)。这样,不是将一个流连接到一个地址,而是把一个管道连接到端点上。商战和管道的好处在于,不用去关心Peer所使用的真正的地址和协议是什么。使用抽象出来的端点和管道,可以为创建P2P应用提供强大的功能并降低复杂性。

由于管理使用通信协议来连接,端点描述了协议和连接的所需要的信息。因此端点可以描述HTTP、TCP、BEEP以及其他可以支持的通信协议。

一个Peer可以支持一个或者多个端点。通过使用多种协议,Peer可以提供更有效率的方法。也就是说,如果两个Peer都在防火墙去通信,则需要使用HTTP的端点。

Pipe(管道)

管道是Peer之间的虚拟通道。通常,我们认为对等通信是单个的通信连接,但是也并不是总是这样的。因为防火墙和其他障碍的存在,许多Peer并不能直接连接。这时,管道更像一个在多种通信协议之上的虚拟层,可以通过起网关作用的Peer对通信提供中继支持。

管道是JXTA最基本、最重要的特性,它提供了一种很好的方案,使得Peer在大多数网络情况下都可以通信,而不用去管防火墙或者其他的障碍。即使你不知道另外一个Peer的位置以及它所使用的协议等信息,通过管道仍然可以与之通信。

管道作为一种抽象的方法,隐藏了一些细节,比如在多个连接的时候可能会有多个Peer参与进去。管道也可以重新定位,找到原来的Peer。在JXTA的参考实现中,有几种常用到的管道,它们是:

1、单向异步-----这种管道只用来做单向通信。管道是异步的,消息到达时可能不是顺序的。这是JXTA平台上最基本的一种类型的管道。

2、同步的请求/应答-----所有发出的信息都会收到一个应答信息,消息到达的顺序是按照它们发送时候的顺序。

3、成批改善-----用来改善大量的数据。

4、流传送-----通过流可以更有效地传送诸如声音、视频等大量的数据。

5、双向-----它是两个单身异步管道的组合。

6、单向同步-----所有发出的信息都会收到一个应答消息,消息到达的顺序是按照它们改善时候的顺序。

7、单向可行安全的管道-----所有发出的信息都会收到一个应答信息,并且这些消息都是加密的。

管道还可以分成以下两种类型:

1、点到点类型-----点到点的管道连接两个不同的Peer。可以使用多个起网关作用的Peer来创建连接。

2、传播类型------将一个Peer连接到多个目标Peer。

现有的JXTA参考实现已经提供了单向异步管道、单向可行安全管道和双向的管道。

JXTA和传统的网络是非常不同的。大多数网络协议或者没有地址,或者有一个固定的地址。而JXTA抽象出一个概念叫做端点,用来作为地址。一个Peer可以有多个端点。Peer可以通过一种或者多种协议例如TCP、HTTP等进行通信,所以可以使用多个端点。JXTA使用多种传输协议的目的是为了在与其他Peer通信时可以选择最好的方式。

如果一个Peer在企业的防火墙的后面,可以使用HTTP来与防火墙之外的Peer通信,还可以使用TCP来与防火墙内局域网内部的Peer通信。通过灵活使用多个传输端口,对特定的Peer使用特定的协议,以得到最好的速度和响应。

Advertisement(广告)

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

Peer使用一种叫做集合(Rendeavous)的特殊Peer来发现网络上其他地方的广告。集合点Peer可以存储广告并且支持搜索。Peer可以使用对等组的名字或者其他属性来搜寻该对等组广告。有了对等组的广告,其他的Peer就可以使用广告中的XML来实例化并加入到“MyChat”这个对等组中。一是成为对等组的成员之后,Peer可以使用对等组的环境所提供的服务。

广告实际上是P2P网络中的“名片”,P2P网络中的任何资源,包括Peer、对等组、管道等都可以用广告来描述,目前是在P2P网络中标志资源,并且可以相互找到。

大多数JXTA广告的编码是使用UTF-8,它是对Unicode的一种ASCII编码方式。UTF-8使用的是8位编码,Uniccode使用的16位编码,因此可以节省一半的空间。只有在消息体中间可能会使用到完全的Unicode编码,在消息体里可以指定使用Uniccode或者其它的字符集作为编码方式。

论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics