摘 要:随着P2P应用的普及,P2P技术受到广泛关注。本文首先详细介绍了JXTA平台的概念、核心构件和体系结构,然后设计了一个基于JXTA的P2P应用程序开发框架,最后针对这个框架实现了一个即时通信系统。
关键词:JXTA;对等网络;即时通信系统;对等体;对等组
中图分类号:TP302.1 文献标识码:A 文章编号:
1. 引言
近年来,对等网络模型P2P受到人们的关注,成为热点技术。P2P就是peer to peer,也叫对等网络或对等连接,它与传统的浏览器/服务器(b/s)模式或客户端/服务器(c/s)最大的不同是降低了对服务器的依赖,并且在P2P网络中各peer之间的关系是对等的,peer同时具有client和server的特点。P2P模型无需依赖集中式服务器或资源就可以直接通信,进行文件传输。
(3)应用层
应用层包括应用的实现,例如 P2P 即时通信、文件资源共享、P2P电邮系统、娱乐内容管理和传递、分布式拍卖系统以及其它很多应用程序的整合。应用层和服务层之间并没有严格的界限。
3. 基于JXTA的P2P即时通信系统设计
3.1 需求分析
本系统是一个建立在JXTA平台上的P2P即时通信软件,其功能类似于目前常用的即时通信软件,如QQ、ICQ和MSN等软件。本系统要求能够实现局域网内的即时通信功能,具体的功能有对等点的发现、对等点之间的一对一通信、对等点之间的文件传输和视音频传输以及对等点到对等点组的一对多通信,同时要求系统具有良好的扩展性。
3.2 网络模型设计
因为JXTA平台本身基于P2P技术设计,可以避免大量信息通过中心节点造成过度负载而引起的系统变慢和崩溃的情况,因此非常适合用于即时通信应用。另外,由于程序基于Java Applet开发,网内节点都必须通过中心服务器获取程序,为了体现P2P 的负载分散特性和 C/S结构的集中式同步节点状态的优点,这里采用P2P的非完全集中式结构,如图2所示。该结构中所有节点都与服务器相连,上下线信息均通过服务器同步和分发,节点在获取组内其他节点的在线状态后可以不通过服务器而直接与节点相连。
3.3 模块设计
通过分析,本系统从功能上分为用户界面(GUI)模块、通信模块、资源模块等三大模块。其中资源模块涵盖产生和存储应用需要的所有资
源,主要有用户的各种管道广告信息、本机网络资源和国际化资源。如图3所示,三大模块相互协作构成本软件的基本框架。
初始状态下,程序通过入口函数传入用户名等信息,同时完成通信模块和用户界面模块的初始化。接下来将详细介绍用户界面模块和通信模块的设计。
3.3.1 用户界面模块
用户界面是软件和用户交互的最主要方式,本软件作为企业内部信息系统的子系统,使用Java applet实现,设计的原则要求简单明了,另外由于是嵌在网页中的程序,故要求其具有较高的可靠性。因此本界面设计尽量简洁,其总体结构如图 4所示。
本界面使用Swing工具包进行开发,它以抽象窗口工具包(AWT)为基础,可以使跨平台应用程序使用任何外观风格。同时,Swing开发人员用很少的代码便可利用Swing灵活丰富的功能和模块化组件创建出优雅的用户界面。
3.3.2 通信模块
通信模块是程序与外界交互的最重要的部分。本程序的通信机制是在JXTA 协议基础上开发的,而JXTA的节点发现机制(Discovery)中发现新节点需要很长时间,非常不适用于局域网,因此本系统重新设计新的节点发现机制。JXTA协议中用于通信的组件主要有Pipe和Socket,其中Jxta BiDi Pipe用于节点之间的文字通信和信令传输,Jxta Socket用于节点之间的字节流传输,本系统中用于文件传输,Jxta Propagated Pipe用于对等点组内的广播型文本通信。
(1)发现机制的设计
JXTA提供了对等点发现协议(Peer Discovery Protocol),对等点之间利用这个协议来发布资源信息以及发现被其它对等点发布出来的JXTA资源信息。
网络中的发现工作通过两种方式来完成,一种是在本地网络上发送多播信息;如果本地没有想要的节点就会采用第二种方式,即使用集合点(Rendezvous Peer)之间的通信来发现外网的对等点。
由于JXTA中查找采用多播的方式,网络规模较大时容易产生网络风暴,同时,因为所有的地址信息都通过哈希函数转化而来,物理上相近的节点可能转化后在遍历顺序上相距甚远,从而导致发现效率的降低。在实际使用JXTA发现协议过程中,发现已上线的节点需要10秒甚至更多的时间,使用效果不佳。因此,选择自己设计更适合的发现机制来完成节点的信息发布工作。
在设计的发现流程中,对等组内所有节点的用户信息和在线状态信息都储存在服务器里,节点和服务器通过建立JxtaBidiPipe进行通信,避免了因多播产生网络风暴的风险。一个节点首先通过已知服务器的通告与之建立BidiPipe并传送其上线信息,随后服务器更新在线列表,并将上线信息分发给组内其他的节点, 其他节点根据获得的信息与之建立连接,最终对等点间的通信便可进行。
4. 结语
随着P2P应用的普及,P2P技术得到了越来越广泛的关注,成为了计算机领域的热点技术之一。而其中专门用于P2P计算的开放性网络计算平台的JXTA技术,解决了当前分布计算应用中面临的问题,实现了统一、互操作以及异构的应用,提供了一整套开放协议和开源实现,解决了己有P2P系统的一些缺陷,使人们开发P2P系统变得简单自如。
本文的创新点在于设计了一个在JXTA平台上开发P2P应用系统的框架,并在此基础上实现了一个即时通信系统。但是由于时间仓促,且实验条件的限制,程序在稳定性方面仍然存在一定的问题,这有待于进一步开发和完善。信息安全方面,本系统采用了建立安全管道的机制进行通信,一定程度地保护了消息,如果采用比较成熟和主流的数字签名、消息验证码的方法来最大限度地保护消息则更优。随着网络的发展和普及,即时通信系统在商业领域得到广泛应用,而其安全性和互通性也将成为人们重点关注和研究的一个热点问题。
参考文献:
[1] 朱浩然,安海燕,刘治波.在VPN上架设P2P的研究[J]. 中国医学装备,2008(9):10-12
[2] 舒忠梅.基于P2P的视图维护架构及方法研究[D].中山大学, 2005:1-2
[3] 郭庆玲.JXTA仿真分析及其在P2P移动流媒体中的应用研究[D].济南大学, 2008:1-2
[4] 李蓬.JXTA框架下P2P即时通信系统的设计[J]. 计算机与数字工程,2008(4):61-63
[5] 姜超.JXTA分布式计算技术[J]. 现代计算机:下半月版,2005(1):31-34
[6] 刘居亮,潘郁.P2P移动电子商务模式研究[J]. 微处理机 ,2008(6):75-77
[7] 詹晓亮.P2P局域网文件共享系统的研究与实现[D]. 西华大学, 2010:1-2
作者简介:
范伟(1977- ),女,湖北荆州人,讲师,硕士,主要研究方向:计算机网络,P2P技术;
韩双霞(1970 - ) ,女,河北藁城人,副教授,硕士,主要研究方向:数据库、无线传感与通信控制;
叶冬芬(1978- ),女,浙江衢州人,讲师,硕士,主要研究方向:计算机网络,P2P技术。
基金项目:
1.大区域覆盖无线传感器网络中多sink节点的优化部署及拓扑控制研究,浙江省自然科学基金资助项目(Y1080023) 。
2.基于JXTA的P2P技术在企业内部网中的应用研究,浙江省教育厅科研项目(Y201016195)