摘要:P2P作為當(dāng)今最熱門的網(wǎng)絡(luò)體系結(jié)構(gòu)在互聯(lián)網(wǎng)上得到了快速的發(fā)展,而SUN公司推出的JXTA是一組開放的通用P2P協(xié)議,它允許任何介入網(wǎng)絡(luò)的設(shè)備作為對等點進行通信和協(xié)同工作。該文簡要介紹了JXTA技術(shù)及其應(yīng)用發(fā)展。
關(guān)鍵詞:P2P;JXTA;協(xié)議
中圖分類號:TP393文獻標識碼:A文章編號:1009-3044(2009)35-9923-02
JXTA Technology Application and Development
LIU Feng
(Huanggang Polytechnic College, Huanggang 438002, China)
Abstract: As of today's most popular P2P network architecture on the Internet has been rapid development, while SUN has introduced the JXTA is a set of open and common P2P protocol, which allows any equipment involved in the network as a peer to communicate and work together. This paper briefly describes the JXTA technology and its applications development.
Key words: Peer-to-Peer; JXTA; protocol
1 概述
JXTA是“juxtapose”的縮寫,意思是“肩并肩的”。這個名字就指明了相對于傳統(tǒng)的基于Web的客戶端-服務(wù)器計算機模式,P2P計算是平等并列的。
JXTA 為開發(fā)P2P應(yīng)用提供了一組開放的協(xié)議隨著網(wǎng)絡(luò)應(yīng)用在內(nèi)容和接入設(shè)備方面的持續(xù)增長,使得P2P技術(shù)越來越流行。基于P2P的軟件涵蓋了多個方面,如即時通信、文件共享、分布式計算等。雖然這些軟件有著不同的功能,但它們在節(jié)點發(fā)現(xiàn)、內(nèi)容搜索、數(shù)據(jù)傳送和文件傳送方面等有很多的相似點。不過目前的應(yīng)用開發(fā)卻是非常低效的,幾乎所有的應(yīng)用都局限在單一的平臺上,相互之間不能進行通信或者共享資源。SUN公司推出JXTA的首要目的就是提供一個平臺,在這個平臺上有P2P網(wǎng)絡(luò)所必需的基本功能。除此之外,JXTA還致力于解決已有P2P系統(tǒng)的一些問題:
1)協(xié)同性
JXTA使得對等點能提供多種P2P服務(wù),用于對等點之間的相互通信。
2)平臺獨立性
JXTA獨立于編程語言、傳輸協(xié)議和開發(fā)平臺。
3)通用性
JXTA允許任何數(shù)字設(shè)備接入,而不僅僅局限于PC機或者某一特定平臺。
2 JXTA的平臺結(jié)構(gòu)
基于JXTA的軟件架構(gòu)可以分為3層,層次結(jié)構(gòu)示意圖如圖1所示。
核心層(JXTA Core)封裝了P2P網(wǎng)絡(luò)的一些最基礎(chǔ)的要素,包括為P2P應(yīng)用程序提供關(guān)鍵機制的模塊。這些關(guān)鍵機制包括發(fā)現(xiàn)、傳輸、節(jié)點加入、創(chuàng)建組還有相關(guān)的安全原語。
服務(wù)層(Services)包含一些網(wǎng)絡(luò)服務(wù)。這些服務(wù)可能并不是P2P網(wǎng)絡(luò)所必不可少的,但卻非常有用。這些服務(wù)包括搜索和索引、目錄、存儲系統(tǒng)、文件共享、分布式文件系統(tǒng)、資源聚合和租借、協(xié)議轉(zhuǎn)換、驗證以及PKI服務(wù)等。
應(yīng)用層(Applications)包括一些應(yīng)用的實現(xiàn),比如P2P即時消息、文件和資源共享、娛樂內(nèi)容管理和轉(zhuǎn)發(fā)、P2P電子郵件系統(tǒng)、分布式驗證系統(tǒng)等。
3 JXTA協(xié)議
JXTA定義了一系列XML格式的消息來使對等點之間相互通信。JXTA用這些消息來發(fā)現(xiàn)對等點、通告、網(wǎng)絡(luò)資源等,也用來通信和路由。
目前有6種JXTA協(xié)議,下面分別予以描述:
1)對等點發(fā)現(xiàn)協(xié)議(Peer Discovery Protocol,PDP)
對等點使用節(jié)點發(fā)現(xiàn)協(xié)議來通告它們的資源(如對等點、點組、管道或服務(wù)),同時也用來發(fā)現(xiàn)其他對等點的資源。每個對等點的資源都用通告來描述和發(fā)布。
2)對等點信息協(xié)議(Peer Information.Protocol,PIP)
對等點用節(jié)點信息協(xié)議獲取其他對等點的狀態(tài)信息(上線時間、狀態(tài)、最近的流量)。
3)對等點解析協(xié)議(Peer Resolvet Protocol,PRP)
對等點使用對等點解析協(xié)議來發(fā)送通用查詢,同時接收該查詢的回應(yīng)。該查詢可以發(fā)送給點組的所有成員或者特定的部分成員。對等點解析協(xié)議允許對等點定義和交換它們需要的任意信息,而不局限于PDP和PIP所定義的特定信息。
4)管道綁定協(xié)議(Pipe Binding Protocol,PBP)
對等點使用管道綁定協(xié)議在相互之間建立虛擬的通信信道,可以在一個管道上綁定兩個或者更多的端點。
5)端點路由協(xié)議(Endpoint Routing Protocol,ERP)。
對等點用端點路由協(xié)議來查找到目的地址的路由。路由信息包括一系列排序的路由點的ID,通過這些排序的路由點可以給目的地發(fā)送消息。比如,消息通過路由A到路由B到最終目的地。
6)集合點協(xié)議(Rendezvous Protocol,RVP)
集合點協(xié)議是JXTA用來預(yù)定或者傳播服務(wù)的。在一個點組內(nèi),對等點可以成為集合點或者只是使用集合點。集合點協(xié)議允許一個對等點給服務(wù)的所有實例發(fā)送消息。對等點解析協(xié)議和管道綁定協(xié)議用集合點協(xié)議來傳播消息。
4 JXTA的標準應(yīng)用
4.1 即時通信和文件共享(MyJXTA)
MyJXTA是在J2SE平臺上的一個JXTA演示程序,主要為展示JXTA項目和P2P的一些概念。它提供了一些功能,諸如安全的一對一的交談、組內(nèi)的交談、組內(nèi)文檔的共享、搜索和下載等。MyJXTA使用了JXTA平臺的核心服務(wù),完成發(fā)現(xiàn)組、加人組和創(chuàng)建組的功能;還有在兩個Peer間創(chuàng)建連接,完成一對一的交談;或者在組內(nèi)建立連接,完成組內(nèi)交談以及組內(nèi)文件的搜索和下載。該程序的主要目的是為了展示基于JXTA協(xié)議的P2P的工作方式。
4.2 網(wǎng)絡(luò)游戲(Chess)
JXTA Chess是一個使用JXTA平臺在網(wǎng)絡(luò)上進行國際象棋比賽的游戲。使用JXTA Chess,你可以在網(wǎng)絡(luò)上發(fā)現(xiàn)伙伴并與他進行一場比賽,或者在旁邊觀看其他人的比賽。
4.3 計算機輔助設(shè)計(JXTA-CAD)
為了在CAD(計算機輔助設(shè)計)領(lǐng)域中采用JXTA技術(shù),在jxta. arg網(wǎng)站上就有人發(fā)起了JXTA-CAD項目。由于在網(wǎng)絡(luò)上存在大量的CAD文件,JXTA-CAD這個項目希望使用JXTA技術(shù)為CAD的設(shè)計者和用戶提供更好的輔助技術(shù),為一些工業(yè)領(lǐng)域的工作提供幫助,例如制造業(yè)、建筑業(yè)和航空業(yè)等領(lǐng)域。JXTA-CAD提供了與其他程序連接的服務(wù),能夠?qū)⒆稍內(nèi)藛T、設(shè)計人員和用戶聯(lián)系起來,以便共享他們各自領(lǐng)域中最好的設(shè)計并且交換他們的看法。
5 JXTA的發(fā)展
5.1 各種語言的實現(xiàn)
目前JXTA只有Java的實現(xiàn)版本,以至于大家談到JXTA都認為它是用Java開發(fā)的一套P2P框架,而忽略了JXTA的實質(zhì)只是一套獨立于各種平臺和語言的協(xié)議。因此在各種語言上實現(xiàn)JXTA成為一項非常重要的工作。只有這樣,因特網(wǎng)上的用各種各樣語言實現(xiàn)的應(yīng)用軟件就可以只需改寫網(wǎng)絡(luò)部分的代碼而轉(zhuǎn)換到JXTA平臺上來。這不但大大地節(jié)省了工作量,而且將會吸引大量因為各種原因無法采用Java語言的軟件加入到JXTA中來,從而大大促進JXTA協(xié)議的發(fā)展?,F(xiàn)在正在進行的其他語言的實現(xiàn)有C,Perl,Python,Smalltalk等等,顯然這還遠遠不夠,也許我們將來需要看到用Pascal,VB,C#實現(xiàn)的版本。
5.2 各種平臺的實現(xiàn)
跨平臺,這是Java已經(jīng)實現(xiàn)了的目標,但是并不表示JXTA就無事可做,一個真正的P2P網(wǎng)絡(luò)不僅僅是包括PC這個大家目前已經(jīng)熟悉的設(shè)備,它還應(yīng)該包含各種現(xiàn)在以及將來能夠連到因特網(wǎng)上的設(shè)備。頭一個目標顯然是PDA和手機這種移動設(shè)備,JXTA for J2ME以及PocketJxta都已經(jīng)在進行中,而且已經(jīng)可以使用;但是,我們還要考慮到將來的各種設(shè)備,這其中主要是各種各樣的嵌人式設(shè)備。如果這些設(shè)備都運行JXTA平臺,那么我們將看到一個真正的P2P世界。
5.3 各種應(yīng)用
有好的應(yīng)用,一個平臺是不可能流行起來的。目前在jxta.org上登記的應(yīng)用開發(fā)項目有多個,相比現(xiàn)實世界中的各種網(wǎng)絡(luò)軟件的數(shù)目,這個數(shù)字實在是很小。目前的JXTA應(yīng)用主要集中在即時通信和文件共享上面,這似乎成了P2P的代名詞。但是如果只局限于這些應(yīng)用,JXTA的應(yīng)用范圍將會很有限。
5.4 Service
Service在JXTA中扮演著極其重要的角色,所有JXTA協(xié)議的實現(xiàn)都是以Service的形式存在著的。除了幾個核心服務(wù)外,目前JXTA上有多個關(guān)于Service的項目正在開展著,從某種程度上來說,Service比Application更重要;如果沒有好的Service,也就產(chǎn)生不了多少好的應(yīng)用,在這些進行中的Service中,Search是其中關(guān)鍵的環(huán)節(jié),在沒有中心服務(wù)器的P2P網(wǎng)絡(luò)中,如何有效地進行查找成為一個關(guān)鍵問題,與此同時,還需做到盡可能地減少占用的帶寬。
參考文獻:
[1] SUN公司.JXTA V2.5.X:JAVATM Programmer's Guide[EB/OL].www.jxta.org.
[2] Oaks S,Traversrsat B,Gong L.JXTA技術(shù)手冊[M].北京:清華大學(xué)出版社,2004.
[3] 吳鵬.基于JXTA的P2P系統(tǒng)的分析與實現(xiàn)[D].哈爾濱:哈爾濱工程大學(xué),2007.