Jxta协议
由于需要实现关于p2p网络的应用,所以开始了学习JXTA的旅程。最近查看了JXTA的一些文档,使用了JXTA的demo Application和写了一些JXTA的小程序,对这个技术有了一定了解,因此在blog设了一个JXTA技术的板块,来开始记录我学习JXTA的过程,如果有网友也在学习,希望可以得到更多的指导!
第一篇是关于JXTA的简介以及我刚开始对一些模糊概念的理解,比较零散)
JXTA技术简介(参考JXSE_ProgGuide_V2.5)
JXTA目的是使网络中的各种设备(传感器,手机,pda,笔记本等)相互连接通信,JXTA是一种协议,而不是一种语言!因此JXTA是不依赖于具体平台的,但是当前的JXTA协议
是在java开发的,好像有(j2me版本)
JXTA协议标准化了关于peers的几种行为:
1)互相发现
2)自组织peer 组
3)广告以及发现资源(在JXTA网络中,资源包括了很多含义:peers,管道,groups等)
4)相互通信
5)检测对方
利用JXTA,可以容易实现以下几个方面的互操作p2p程序
1)相互发现peers,不管peers是在防火墙还是NATs后
2)互相共享资源
3)查找内容
4)创建组(组是基于一定共同目的的集合)
5)远程操作peer
6)安全通信
Jxta协议栈
JXTA core Service
封装基本的p2p网络功能,包括发现,互相通信(越过防火墙,NATs),创建组,建立安全通信
Services Layer
Applications Layer
JXTA peers可以分成3种基本类型
1 Minimal_Edge peers:仅仅提供基本的JXTAService,并且需要依赖于其他peers来参与到JXTA网络
2 Full_Edge peers:提供所有core service以及标准jxta功能,这些节点包括phones,pcs
3 super peer(个人理解是用于为jxta通信服务,为了帮助穿越防火墙以及NATs)
1)Relay用于帮助不能直接连接的peer来存储以及传输信息(例如防火墙,NATs)
2)Rendezvous用于存储广告信息以及所以,帮助节点来响应查询广告信息,更重要的是该节点维护网络的拓扑结构,用于控制分发信息路径。
3) proxy:帮助Minimal_Edge peers来接入jxta网络
解释:
Relay主要用于穿透防火墙,以及穿透NATs,穿透防火墙的一个例子如下:
A先通过HttP穿透防火墙与C相连,B与C之间可以使用其他协议(TCP/IP,HTTP等)
所以A与B就可以通过这种方式相连,在JXTA中,应该是利用管道信息来保存这样一条传输路径,来屏蔽下层的具体相连方式。另外,如果网络中一个peer在Nat或防火墙内部,就必须设置一个Relay来相连,否则应该无法连接出去(暂时理解,待深入探讨),在JXTAshell中就可以看到有一个Advanced 选项来设置Relay。
Rendezvous 用来存储广告信息以及维护拓扑结构,Rendezvous之间可以互相交互拓扑信息,存储广告信息的索引,是查询广告更加容易,一个注意的地方是:Rendezvous只是存储广告信息的索引,它不响应查询信息,如果收到查询信息,Rendezvous会查找索引,然后向目标机器发送信息,要求其直接回复查询信息。如果Rendezvous没有该索引,Rendezvous就会通过算法来查找索引。
待续,下一篇将介绍JXTA org上提供的Application JXTA Shell 以及MyJxta使用
个人觉得JXTA的两个应用刚开始还有点乱78糟的感觉,因为有些设置之类的,当用多几次,看些小程序,写些小程序感觉就比较容易理解了。