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