[摘要]計算機對等網絡 (P2P)技術是目前網絡技術的研究熱點。本文根據教學需要設計一套即時通訊軟件,原理簡單,成本低,易于實現。我們從P2P技術的基本概念、應用范圍和技術特點進行分析,并介紹了網絡模型設計和系統結構模型設計。從而方便大家了解其P2P技術,實現其教學功能,并很好地向實際推廣應用。
[關鍵詞]P2P局域網TCP/ IP UDP即時通訊
一、 P2P技術
1.P2P技術介紹
P2P是英文peer-to-peer的縮寫,peer在英語里有“(地位、能力等)同等者”、“同事”和“伙伴”等意義,因此,P2P可以理解為對等網、點對點等。現在,P2P軟件技術在互聯網上得到廣泛應用,除了網上即時通訊軟件之外,P2P在共享音樂和軟件下載等方面的應用也很多,如PP Live網絡電視軟件、多媒體影音分享工具POCO軟件、BT下載、迅雷下載、eMule——電驢等軟件均屬于P2P軟件。
在互聯網應用中,P2P是一種技術,同時也是一種思想。它是一種充分發揮整個互聯網基礎潛能的思想。P2P使得互聯網絡上的溝通變得容易、更直接共享和交互,真正地消除中間環節。使人們可以直接連接到其他用戶的計算機進行文件交換,而不是像過去那樣必須連接到服務器去瀏覽與下載。
P2P技術的局域網即時通訊軟件的設計應用主要是實現同在一個局域網內的每個用戶之間進行即時通訊,即聊天、文件傳輸等功能。它是一個建立在純P2P模型下的即時通訊軟件,所以完全不需要服務器支持就可以進行點對點通訊,使用起來非常方便。它采用了UDP網絡的傳輸協議進行底層的消息傳送,在此基礎上用廣播消息實現上下線提示。該軟件同時采用TCP網絡的傳輸協議進行文件傳輸和建立可靠的文字聊天。
2.P2P技術產生的背景
P2P不是一個新概念,在互聯網產生初期,一個本質的特征就是P2P,只不過由于帶寬及處理能力等的限制,使得我們的溝通中出現了很多的中間環節,如中間服務器、門戶網站、第三方信息(交易)平臺等。這樣,個人用戶在互聯網上變成了被動的參與者,被動地接受那些“中心”提供的過時、蕪雜的信息。在國外,P2P發展已經如火如荼,Intel、Sun、Microsoft等公司都已經開始制定P2P的標準。對等計算它引導著網絡計算模式從集中式向分布式轉移,也就是說,網絡應用的核心從中央服務器向網絡邊緣的終端設備擴散:服務器到服務器、服務器到PC機、PC機到PC機,PC機到WAP手機……所有網絡節點上的設備都可以建立P2P對話。基于P2P技術的局域網即時通訊軟件教學設計就是針對這種需求而開發的。它設計思想簡單,即以簡單而有效的方式構建純P2P通訊模型,在沒有服務器支持的情況下,實現局域網內點對點的通訊功能,就是簡單的網絡文字聊天、文件傳輸等應用。使得開發后期不需要過多考慮如何解決對等通訊的技術問題,而可以專注于如何實現與完善可擴展、操作性強的高層應用。
3. P2P技術的特點
P2P技術應用于教學局域網時有如下特點:
(1)成本低廉。與傳統C/S結構的網絡相比,因為設備依靠的是各個點的終端,實施時不需要特別額外的設備,所以其成本很低。
(2)高性能。系統采用P2P技術,能充分利用網絡中的所有計算機資源,整體上平均事物處理能力較高。
(3)可擴展性好。中間服務器是采用多服務器并行處理,并支持異構特性,可以動態擴展服務器的功能和數量,系統提供的應用功能也就隨之不斷地增加擴展。
(4)安全性好。系統提供任意兩點間動態密鑰加密機制和對任意節點的身份驗證機制,并在面向應用的格式化消息結構和系統接口中,預留了第三方加密軟件接口,用戶可以對其安全性進行任意定制。
本軟件的特點采用基于純P2P網絡模型方式,不需要專門的服務器,網絡中所有的對等點都是服務器,并且承擔很小的服務器的功能。各用戶可以根據運行時收集到的用戶信息選擇聊天對象,大部分的功能都可以在此連接上實現。
二、 P2P技術的需求分析
1.軟件功能層的劃分
根據該即時通訊軟件的應用功能和P2P技術的組網模式可劃分為四層軟件功能層:接口層、網際層、傳輸層和應用層。
(1)接口層。這是TCP/ IP 軟件的最底層,負責接收IP 數據包并通過網絡發送或網絡上接收物理幀,抽出IP 數據包,交給IP 層。
(2)網際層。負責相鄰的計算機之間的通信。功能包含: ①處理來自于TCP的數據,收到請求后分組裝入IP 數據包,填充報文頭后選擇目標機的路徑,再將數據包發送到相應的接口;②處理從接口層來的數據,判斷數據包正確后去掉IP 包文頭后發送到相應的傳輸層;③處理ICMP 數據包文,處理路徑、流控和擁塞問題等。
(3)傳輸層。提供端到端的通信。其功能包含:①格式化信息流,處理從應用程序和從IP 層來的數據,再發送到相應的協議處理層;②提供可靠的連接,在這里傳輸層協議規定接收端必須發送確認信息來建立鏈路,并且假如分組遺失必須重新發送。
(4)應用層。向用戶提供一組常用的應用程序,如EMAIL,FTP等。嚴格地說TCP/ IP 只包含前三層。PPP 協議的協議幀結構與多數常用軟件兼容,而且還提供了在單一鏈路上同時復用多種網絡協議機制。
2.數據需求分析
(1)數據傳送的載體。在本文介紹的基于P2P技術的即時通訊軟件程序中,在Visual C具體操作實現網絡點對點通訊軟件的關鍵就是實現信息在網絡中的發送和接收。數據接收載體的是Socket,數據發送載體的是Network Stream。為了更清楚地說明問題,下面舉簡單示例說明接收和發送數據的流程。利用Socket來接收信息。軟件程序在處理數據發送和接收時采用了不同的端口號,發送數據程序在缺省狀態設定的端口號為“2244”。下面代碼是偵聽端口號“2244”,接受網絡中對此端口號的連接請求,并在建立連接后,通過Socket接收遠程計算機發送來的數據;利用Network Stream來傳送信息。Network Stream載體的就是Stream Writer類和Stream Reader類,Network Stream在處理網絡中數據傳送時,有一個缺點就是只能用以傳輸字符類型的數據。在使用Stream Writer處理Network Stream傳送數據時,數據傳送的編碼類型是“UFO6”,提出網絡中對等計算機的連接申請,并在連接申請建立后,以UFO6編碼發送字符串“您好,見到您很高興”到對等計算機那里。
(2)數據的一致性與容錯性。由于對等計算機的信息在本地是共享的,所以就不存在數據一致性問題。但是由于沒有固定服務器的支持,所以每一個對等計算機都要獨立保存一份數據,當一部分對等計算機在線時,數據更新也只是這一部分計算機,這樣就造成數據不一致。面對這個問題,我們的即時通訊軟件就能夠允許出現數據的不一致,并且在客戶端上線后,能夠即時獲得更新。
三、概要設計
P2P作為一種網絡的模型,有別于傳統的客戶/服務器模型。客戶/服務器模型一般都有預定義的客戶機和服務器。在網絡中,傳統上的客戶機/服務器通訊模型中,發送服務請求或者發送數據的計算機,一般稱為客戶機;而接收、處理服務或者接收數據的計算機成為服務器。而在P2P中并沒有明確的客戶端和服務器。其實,在P2P模型中,每一臺計算機既可以看成是服務器,也可以看成是客戶機。
1.網絡模型設計
純P2P網絡架構采用的是廣播式的P2P模型。在這種架構下,沒有集中的中央服務器,每個用戶節點隨機接入到網絡,并與自己相鄰的一組節點通過端到端連接構成一個邏輯覆蓋的網絡。節點之間的內容查詢和內容共享都是直接通過相鄰節點以廣播方式接力傳遞。為了避免循環搜索現象,每個節點會記錄其搜索軌跡。
比如,Gnutella模型是現在應用最廣泛最經典的純P2P網絡架構。它采用泛洪式的節點搜索算法,解決了網絡結構中心化的問題,擴展性和容錯性較好。但是,Gnutella網絡可用性較差,易被病毒攻擊,并且極大地消耗了網絡帶寬,很容易造成網絡擁塞與不穩定。
對于局域網的整體模型,采用了純P2P的連接模型,充分發揮了點對點通訊的優勢。在本地主機上保存了局域網其它結點的基本信息,直接通過目錄列表與其它主機通訊,這樣可以大大減少連接的開銷。
2.系統結構模型設計
以需求分析為依據,結合教學模式的特點,系統結構模型劃分為三層:顯示層、控制層以及數據層。
顯示層主要是使用者與軟件的交互平臺,它實現友好的用戶界面,是使用者獲得和輸入信息的渠道。
控制層是整個軟件的靈魂,大部分的底層操作都需要經過調用控制層的方法。包括初始化原始數據、網絡消息的收發、網絡消息的處理、用戶信息的管理、基本窗口的管理。
數據層是提供了存取、拷貝、查找和序列化等方法的信息結構體,它使得消息數據操作、數據庫操作和基本信息數據操作都變得透明化。包括數據集對象、基本數據信息對象。
四、結論
本文介紹的P2P技術在教學即時通訊軟件的設計應用程序方便,但涉及的知識面卻比較多。其中,涉及到很多網絡功能的實現,如偵聽端口號、建立連接、發送數據和接收數據等,了解、掌握這些問題的處理方法對編寫更復雜的網絡應用程序是十分必要的。
參考文獻:
[1]王一煒,楊可揚.淺談P2P技術[J].忻州師范學院學報,2007.
[2]侯太平,顧大權,汪晉.淺談P2P技術[J].微計算機應用,2002,(06):22-24.
[3]龔君芳,李圣文. P2P應用程序及設計[J].現代計算機,2002,(09):36-38.
[4]毛薇,姚青,李濤.P2P系統發現技術的研究與實現[J].武漢理工大學學報,2002,(06):52-54.
(作者單位:浙江理工大學信息電子學院)