P2P即Peer to Peer,稱為對等連接或對等網絡,P2P技術主要指由硬件形成連接後的信息控制技術,其代表形式是軟件;P2P並不是一個新的概念,因特網上的許多核心協議本身就是P2P的應用程序,因特網的發展過程也說明了這一點,我們可以通過下述特性來描述P2P:
1、Peer知道其他Peer的存在。
2、Peer在一個虛擬的網絡中運行。
3、Peer同時具有Client和Server的特點。
4、多個Peer可以組成為一個Peer組。
從因特網的發展來看,目前已經完全有可能開發新的P2P應用程序來補充和取代現有的集中式應用程序,文件共享程序和聊天程序的成功已經吸引了許多程序員加入P2P程序的開發。而且隨著技術的發展,P2P所面臨的安全、控制和網絡使用的問題將逐步解決。P2P系統可以提供如下功能:
1、Peer的獨立控制能力----用戶將變得非常強大,可以創建自己的組和虛擬網絡,而且可以非常容易地發布自己的資源。
2、可靠性----P2P系統是任何人都可以獲得的可靠系統。
3、擴展性----P2P系統的用戶數量可以急劇膨脹,可以與最大的集中式系統媲美。
4、性能----各種資源之間可以協同工作來有效地解決問題。
P2P是一種基於互聯網環境的新的應用型技術,主要為軟件技術,P2P網絡應用發展可能要涉及到4個方面關鍵技術:
1) 對於互聯網上眾多計算機,P2P應用比其他應用要更多考慮那些低端PC的互聯,它們不具備服務器那樣強的聯網能力,同時對於以往的P2P應用技術,現在的硬件環境已經更為復雜,這樣在通信基礎方面,P2P必須提供在現有硬件邏輯和底層通信協議上的端到端定位(尋址)和握手技術,建立穩定的連接。涉及的技術有IP地址解析、NAT路由及防火牆。
2) 在應用層面上,如果兩個Peer分別代表兩家不同的公司,而且它們已經通過互聯網建立連接,那麼一方的信息就必須為另一方所識別,所以當前互聯網上關於數據描述和交換的協議,如XML、SOAP、UDDI等都是一個完善的P2P軟件所要考慮的
3) 有通信就要有安全保障,加密技術是必須要考慮的。
4) 其他需考慮的有如何設置中心服務器,如何控制網絡規模等。
與P2P相關技術,有許多其他的技術被稱做P2P,或者與P2P相關,或者可以被當作P2P使用,主要是以下幾方面內容:
1、JINI技術;
2、軟件代理(Agent)技術;
3、JXTA的競爭者(Gnutella和Freenet等);
4、Web Services技術。
JXTA設計目標及層次結構
一、JXTA設計目標
首先,JXTA是為了構建P2P網絡而制訂的一組協議,是處理構建P2P網絡所碰到的問題的解決方法,JXTA標准協議規范介紹如下:
“JXTA由六個協議組成,這些協議是專為特定的、分布式的、對等的網絡計算而設計的。使用這些協議,Peer可以互相合作來建立自我組織、自我管理的對等組,而不必關心它們在網絡中所處的位置(在網絡邊緣或者防火牆的後面),並且也不需要集中的管理機構。”
因此JXTA的核心是六個協議,其次,JXTA是P2P應用程序開發的運行平台;目前JXTA首先推出了基於Java的參考實現,提供了支持六個協議的Java API,JXTA還將推出包括C語言在內的其他編程語言的API,JXTA在設計時有如下幾個目標:
1、操作系統無關
2、語言無關
3、為P2P應用提供服務和基礎
從本質上講,JXTA的目標是希望在任何設備,從台式機到PDA、汽車、洗衣機等設備都可以支持P2P編程。這裡有幾個概念上的目標,它們包括:
1、使用組來組織Peer並且在組內提供服務和應用的環境。
2、組可以使用認證和驗證方式來控制組內的訪問權限。
3、通過網絡來發布關於Peer和網絡資源的信息。
4、通過系統來發布各種請求。
5、提供一個基礎平台,供Peer之間做路由和通信。在防火牆或者其他障礙後面的Peer之間的通信也是這個目標中很關鍵的一部分。
6、供一種機制允許Peer之間可以彼此監視狀態和資源。
除此之外還有一些其他目標,例如加密、支持不同的通信協議、易用性、穩定性和性能等,所有這些目標在設計JXTA協議和最初的Java API時,都被考慮到,另外,開發人員和Sun公司的管理者還考慮了以下目標:
1、系統應該允許任何設備直接加入到JXTA網絡中去。
2、系統應該允許ISP對網絡上的Peer進行集中管理。
3、系統應該支持數字產品版權的管理,例如購買的軟件、音樂CD、電影等。
4、封裝和抽象一些特定的核心功能,以便產生出商業方面的應用。
從上面列出的目標可以看出兩點,首先要讓企業覺得使用JXTA可以使自己對系統進行控制,原因在於大部分P2P系統沒有集中式的管理,所以在應用中不受企業的歡迎;其次,對於硬件或者軟件提供商來說,JXTA系統需要能夠創造出利潤。
根據以上這些目標,JXTA被設計成企業可以接受的、容易維護的、健壯的,並且能夠滿足任何P2P應用的概念。
二、JXTA的層次結構
JXTA由三層組成,如圖1所示。第一層是JXTA核心層,它包含了服務所需要的核心功能;第二層是服務層,它提供了訪問JXTA協議的接口;第三層是應用層,它使用服務來訪問JXTA網絡和JXTA提供的功能。這樣的設計和一個標准的操作系統比較相似,標准的操作系統包括核心操作系統、服務和應用程序。
圖1 JXTA的層次結構
各層的說明如下所示:
1、核心層(JXTA Core):這一層封裝了最根本的東西,包括Peer、對等組、Peer發現、Peer通信、Peer監視和相關的安全原語。
2、服務層(JXTA Services):這一層包括對於P2P網絡不是必需的、但很通用的功能,如查找、共享、索引、代碼緩存和內容緩存的機制。
3、應用層(JXTA Application):這一層包括了應用JXTA服務開發出來的完整的P2P應用程序,例如myJXTA,JXTA-CAD等應用程序。