覃德澤
賀州學(xué)院計(jì)算機(jī)科學(xué)與工程系 廣西 542800
傳統(tǒng)互聯(lián)網(wǎng)計(jì)算模式主要有兩種:客戶端/服務(wù)器(C/S)模式和對(duì)等網(wǎng)絡(luò)(Peer-to-Peer Networks,P2P)模式??蛻?服務(wù)器的工作模式是:客戶與服務(wù)器之間采用網(wǎng)絡(luò)協(xié)議(如TCP/IP、IPX/SPX)進(jìn)行連接和通訊,由客戶端向服務(wù)器發(fā)出請(qǐng)求,服務(wù)器端響應(yīng)請(qǐng)求,并進(jìn)行相應(yīng)服務(wù)。服務(wù)器通常采用高性能的PC、工作站或小型機(jī),并采用大型數(shù)據(jù)庫(kù)系統(tǒng)。長(zhǎng)期以來(lái),客戶端/服務(wù)器(C/S)模式一直是主流的計(jì)算模式。
隨著終端技術(shù)和網(wǎng)絡(luò)接入技術(shù)的發(fā)展,終端的能力越來(lái)越強(qiáng),對(duì)等網(wǎng)絡(luò)的技術(shù)和作用越來(lái)越受到重視。對(duì)等網(wǎng)絡(luò)的工作模式是:各臺(tái)計(jì)算機(jī)的地位相等,沒(méi)有主客之分,每臺(tái)計(jì)算機(jī)既可擔(dān)任服務(wù)器角色,向其他計(jì)算機(jī)提供資源和服務(wù),又可擔(dān)任客戶機(jī)角色,請(qǐng)求并享受其他計(jì)算機(jī)提供的資源和服務(wù)。近年來(lái)基于P2P 技術(shù)的應(yīng)用服務(wù)越來(lái)越流行,統(tǒng)計(jì)數(shù)據(jù)表明,目前的互聯(lián)網(wǎng)流量中P2P流量超過(guò)60%,已經(jīng)成為當(dāng)前互聯(lián)網(wǎng)應(yīng)用的新的重要形式。隨著對(duì)等網(wǎng)絡(luò)技術(shù)的不斷發(fā)展,人們?cè)诨ヂ?lián)網(wǎng)上的交流與工作方式將發(fā)生深刻變化。P2P 技術(shù)成為當(dāng)前網(wǎng)絡(luò)技術(shù)研究的熱點(diǎn)問(wèn)題之一。
對(duì)等網(wǎng)絡(luò)從不同角度有不同的分類方法。根據(jù)拓?fù)浣Y(jié)構(gòu)具體形態(tài)的差別,可以將P2P分為中心化拓?fù)洹⑷植际椒墙Y(jié)構(gòu)化拓?fù)?、全分布式結(jié)構(gòu)化拓?fù)浜桶敕植际酵負(fù)? 種形式;根據(jù)對(duì)等網(wǎng)絡(luò)出現(xiàn)時(shí)間先后及體系結(jié)構(gòu)在設(shè)計(jì)思想上的不同,可以將P2P大致分為三類:1999年出現(xiàn)的混合式對(duì)等網(wǎng)絡(luò)、2000年出現(xiàn)的無(wú)結(jié)構(gòu)對(duì)等網(wǎng)絡(luò)和2001 年出現(xiàn)的結(jié)構(gòu)化對(duì)等網(wǎng)絡(luò)。本文論述采用后者分類方法。
典型結(jié)構(gòu)化對(duì)等網(wǎng)絡(luò)有Chord 、CAN、Pastry 、Tapestry等。這些對(duì)等網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)均經(jīng)過(guò)嚴(yán)格設(shè)計(jì),遵循節(jié)點(diǎn)存儲(chǔ)資源能夠高效、準(zhǔn)確查詢的原則。如果用關(guān)鍵字(Key)表示共享資源,并為各節(jié)點(diǎn)分配IP 地址,則應(yīng)用分布式哈希表(Distributed Hash Table, DHT),如SHA-1等,哈希文件名或者文件內(nèi)容可得到m位的關(guān)鍵字標(biāo)識(shí)符;哈希節(jié)點(diǎn)的IP 地址可得到m位節(jié)點(diǎn)標(biāo)識(shí)符(NodeID)。如果m足夠大,就能確保兩個(gè)節(jié)點(diǎn)或者關(guān)鍵字哈希到同一個(gè)標(biāo)識(shí)符的概率小到可以忽略不計(jì)。通過(guò)為關(guān)鍵字和節(jié)點(diǎn)各分配m 位標(biāo)識(shí)符,實(shí)現(xiàn)將存儲(chǔ)數(shù)據(jù)的位置信息相應(yīng)地部署在確定的節(jié)點(diǎn)上。對(duì)某特定網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),通過(guò)以下方式可以達(dá)到在有限邏輯跳內(nèi)查找定位資源目的。使用NodeID 與關(guān)鍵字標(biāo)識(shí)符數(shù)值最接近的節(jié)點(diǎn)保存數(shù)據(jù)的存儲(chǔ)位置信息,每個(gè)節(jié)點(diǎn)建立和維護(hù)一個(gè)很小的路由表, 路由表內(nèi)存儲(chǔ)鄰居節(jié)點(diǎn)的NodeID 和IP地址信息,查詢消息以一定方式在節(jié)點(diǎn)間傳遞,直到轉(zhuǎn)發(fā)給NodeID 與關(guān)鍵字標(biāo)識(shí)符最接近的節(jié)點(diǎn),則該節(jié)點(diǎn)就是存儲(chǔ)目標(biāo)資源的節(jié)點(diǎn)。
結(jié)構(gòu)化對(duì)等網(wǎng)絡(luò)與其它兩種類型對(duì)等網(wǎng)絡(luò)相比,主要有兩大特點(diǎn)。第一,網(wǎng)絡(luò)結(jié)構(gòu)有特殊要求。體現(xiàn)在整個(gè)對(duì)等網(wǎng)絡(luò)的組織不是任意的,而是要遵循一定的規(guī)范,按這些規(guī)范組織的網(wǎng)絡(luò),能高效并精確地查詢到存儲(chǔ)資源的目標(biāo)節(jié)點(diǎn)。也就是說(shuō),結(jié)構(gòu)化的對(duì)等網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)都具有相當(dāng)?shù)膰?yán)密性。目前,結(jié)構(gòu)化的對(duì)等網(wǎng)絡(luò)主要有環(huán)型、多維空間、超立方體、蝴蝶型等。第二,技術(shù)上也有特殊要求。體現(xiàn)在結(jié)構(gòu)化對(duì)等網(wǎng)絡(luò)都要應(yīng)用分布式哈式表技術(shù)。為了使所有的用戶節(jié)點(diǎn)在對(duì)等網(wǎng)絡(luò)中能夠準(zhǔn)確定位,結(jié)構(gòu)化的對(duì)等網(wǎng)絡(luò)均運(yùn)用分布式哈式表對(duì)所有的節(jié)點(diǎn)進(jìn)行相應(yīng)的映射。但是正因?yàn)榻Y(jié)構(gòu)化的對(duì)等網(wǎng)絡(luò)的結(jié)構(gòu)與資源所在位置有密切關(guān)聯(lián)性,為結(jié)構(gòu)化P2P 蠕蟲(chóng)提供了一個(gè)極佳的傳播途徑。該環(huán)境下的P2P蠕蟲(chóng)利用分布式哈希表所包含的資源與節(jié)點(diǎn)索引信息,獲得節(jié)點(diǎn)的IP信息,進(jìn)行節(jié)點(diǎn)間傳播,因此,結(jié)構(gòu)化對(duì)等網(wǎng)絡(luò)也存在著較重大的安全性問(wèn)題。
分布式哈希表(Distributed Hash Table,DHT),分布式哈希表技術(shù)又叫DHT技術(shù),結(jié)構(gòu)化對(duì)等網(wǎng)絡(luò)的基本技術(shù)是DHT技術(shù)。DHT類似Tracker的根據(jù)種子特征碼返回種子信息的網(wǎng)絡(luò),是一種分布式存儲(chǔ)方法。DHT的特點(diǎn)是:對(duì)于不需要服務(wù)器管理的網(wǎng)絡(luò),如對(duì)等網(wǎng)絡(luò),依靠節(jié)點(diǎn)維護(hù)的鄰居路由表,以及存儲(chǔ)的一部分?jǐn)?shù)據(jù),就能在DHT網(wǎng)絡(luò)中實(shí)現(xiàn)資源的存儲(chǔ)和查找。
P2P 系統(tǒng)中各節(jié)點(diǎn)地位均等,有關(guān)資源分布存儲(chǔ)在各個(gè)節(jié)點(diǎn)中, 為了查找定位某一目標(biāo)資源,需要建立一套資源搜索機(jī)制,使得各個(gè)節(jié)點(diǎn)都能從其他節(jié)點(diǎn)中找到所需資源。資源搜索機(jī)制必須保證用戶能夠迅速找到所需資源,同時(shí)盡可能提高帶寬的利用率。
在典型的結(jié)構(gòu)化對(duì)等網(wǎng)絡(luò)Chord、CAN、Pastry、Tapestry中,Chord 模型與其他的P2P 模型相比,具有良好的可擴(kuò)展性,可靠性和良好的查詢效率。
Chord 是MIT 等人提出的一種分布式查找算法,這種查找算法能在P2P 網(wǎng)絡(luò)中較快速地查找到所需要的資源。其基本查找過(guò)程是:如果給定一個(gè)關(guān)鍵字(Key),利用Chord 可以有效地把該關(guān)鍵字映射到特定對(duì)等網(wǎng)絡(luò)的某個(gè)節(jié)點(diǎn)上,這樣,只要給每個(gè)數(shù)據(jù)V 都賦予一個(gè)關(guān)鍵字K,通過(guò)Chord 就能實(shí)現(xiàn)節(jié)點(diǎn)與數(shù)據(jù)的一對(duì)一關(guān)聯(lián),即在該關(guān)鍵字映射的節(jié)點(diǎn)上存儲(chǔ)或提取相應(yīng)的(K,V)對(duì)。通過(guò)使用分布式哈希表技術(shù),實(shí)現(xiàn)關(guān)鍵字和節(jié)點(diǎn)標(biāo)識(shí)符的分配,假設(shè)分配給每個(gè)關(guān)鍵字和每個(gè)節(jié)點(diǎn)的標(biāo)識(shí)符均為m 位二進(jìn)制數(shù),為了區(qū)別,m 位關(guān)鍵字標(biāo)識(shí)符用K表示,m 位節(jié)點(diǎn)標(biāo)識(shí)符用N表示。把各節(jié)點(diǎn)標(biāo)識(shí)符取模2m后得到的結(jié)果由小到大排序,并以此順序沿順時(shí)針?lè)较驅(qū)⒏鞴?jié)點(diǎn)組織成一個(gè)邏輯的圓環(huán),通常稱為Chord 環(huán)。將關(guān)鍵字標(biāo)識(shí)符為K 的(K, V)對(duì)存儲(chǔ)在Chord 環(huán)上節(jié)點(diǎn)標(biāo)識(shí)符數(shù)值等于K或者緊跟在K 之后的節(jié)點(diǎn)上。在Chord 環(huán)上節(jié)點(diǎn)標(biāo)識(shí)符緊跟在K 之后的節(jié)點(diǎn)稱為K 的后繼節(jié)點(diǎn),通常用successor(K)表示。后繼節(jié)點(diǎn)實(shí)際上是在Chord環(huán)上從K 開(kāi)始順時(shí)針?lè)较蚓嚯xK 最近的節(jié)點(diǎn)。這樣,每個(gè)節(jié)點(diǎn)只要建立和維護(hù)由它的后繼節(jié)點(diǎn)的標(biāo)識(shí)符和IP地址組成的路由表,通過(guò)后繼節(jié)點(diǎn)指針在圓環(huán)上傳遞,就能查找定位到特定關(guān)鍵字標(biāo)識(shí)符K對(duì)應(yīng)的目標(biāo)資源(K,V)存儲(chǔ)的位置。如果關(guān)鍵字的標(biāo)識(shí)K落在某個(gè)節(jié)點(diǎn)標(biāo)識(shí)和它的后繼節(jié)點(diǎn)標(biāo)識(shí)之間,則這個(gè)后繼節(jié)點(diǎn)就是存儲(chǔ)目標(biāo)資源(K,V)對(duì)的節(jié)點(diǎn)。
Chord 的優(yōu)點(diǎn)主要有三方面。第一,算法簡(jiǎn)單;第二,具有可擴(kuò)展查詢過(guò)程的通信開(kāi)銷以及節(jié)點(diǎn)維護(hù)的狀態(tài)與系統(tǒng)總節(jié)點(diǎn)數(shù)直接相關(guān),并且是某種指數(shù)關(guān)系。假設(shè)在Chord構(gòu)建的一維環(huán)形值域空間中,節(jié)點(diǎn)的數(shù)目為n,則每個(gè)節(jié)點(diǎn)維護(hù)鄰居的指針列表為O(logn)個(gè)。按照這種算法,如果指針的起點(diǎn)是第i項(xiàng),則指針指向2i 遠(yuǎn)的節(jié)點(diǎn),如果此節(jié)點(diǎn)不是所要查詢的最終目標(biāo)節(jié)點(diǎn),則指針移向它的后繼節(jié)點(diǎn),依此下去,最終可查詢到目標(biāo)資源。因此,每次查詢使得從起點(diǎn)到終點(diǎn)的距離縮減一半,容易證明其查詢的路徑長(zhǎng)度是O(logn)。第三,Chord使得網(wǎng)絡(luò)的某些安全性能得到提高。這是因?yàn)椋旱谝?,Chord采用SH-1散列算法,而SHA-1已經(jīng)被公眾密碼社群做了非常嚴(yán)密的檢驗(yàn)而還沒(méi)發(fā)現(xiàn)到有不安全的地方,它現(xiàn)在被認(rèn)為是安全的;第二,Chord既是環(huán)形結(jié)構(gòu),又是分布式系統(tǒng),并且各節(jié)點(diǎn)地位平等,所需要完成的工作又相同,因此Chord系統(tǒng)具有很高的健壯性,抗DoS(拒絕服務(wù))攻擊的能力較強(qiáng)。
對(duì)等網(wǎng)絡(luò)由于具有非集中性、可擴(kuò)展性的優(yōu)點(diǎn),使得其在大規(guī)模的因特網(wǎng)上得到了廣泛的應(yīng)用。對(duì)等網(wǎng)絡(luò)模式實(shí)現(xiàn)了因特網(wǎng)上的各種主機(jī)對(duì)網(wǎng)絡(luò)空閑資源的共享與利用,實(shí)現(xiàn)了各節(jié)點(diǎn)之間方便可靠的數(shù)據(jù)通信。但是,正是這種方便、高效的共享模式同時(shí)也帶來(lái)了網(wǎng)絡(luò)安全問(wèn)題,特別是存在著惡意節(jié)點(diǎn)的搭便車(chē)行為。因此,必須為系統(tǒng)提供一套可靠的信譽(yù)管理機(jī)制,驗(yàn)明只有友好節(jié)點(diǎn)才能相互通信,保護(hù)可信任的節(jié)點(diǎn),拒絕惡意節(jié)點(diǎn),確保用戶之間的共享資源的訪問(wèn)安全可靠。
在目前國(guó)內(nèi)外提出的各種節(jié)點(diǎn)信譽(yù)管理機(jī)制中,大部分都采用集中式的方法,但這種方法容易出現(xiàn)性能瓶頸,因而出現(xiàn)了非集中式的方法。但傳統(tǒng)非集中式的方法需要增加額外的節(jié)點(diǎn)的參入與輔助來(lái)計(jì)算信譽(yù)度,需要額外消耗一些網(wǎng)絡(luò)資源。隨著P2P技術(shù)的發(fā)展,學(xué)者又提出了各種使用對(duì)等網(wǎng)絡(luò)策略的節(jié)點(diǎn)信譽(yù)管理機(jī)制,例如,非結(jié)構(gòu)化對(duì)等網(wǎng)絡(luò)信譽(yù)管理機(jī)制和結(jié)構(gòu)化對(duì)等網(wǎng)絡(luò)節(jié)點(diǎn)信譽(yù)管理機(jī)制。前者使用一種新的非集中式的策略,根據(jù)節(jié)點(diǎn)與應(yīng)用的需求計(jì)算節(jié)點(diǎn)的信譽(yù)度,具有獨(dú)立性,不需要其它節(jié)點(diǎn)的參入與輔助。把加入對(duì)等網(wǎng)絡(luò)的節(jié)點(diǎn)行為劃分為惡意行為與友好行為,既可以統(tǒng)計(jì)節(jié)點(diǎn)對(duì)系統(tǒng)的貢獻(xiàn),也可以根據(jù)惡意行為而減少節(jié)點(diǎn)的信譽(yù)度。后者使用全局儲(chǔ)存方式保存信譽(yù)度信息,將文件信譽(yù)與節(jié)點(diǎn)信譽(yù)相結(jié)合,避免惡意節(jié)點(diǎn)通過(guò)修改標(biāo)識(shí)符偽裝友好節(jié)點(diǎn)的行為。這兩種信譽(yù)管理機(jī)制都是對(duì)等網(wǎng)絡(luò)中一種真實(shí)的、高效的、信譽(yù)機(jī)制良好的資源共享策略。結(jié)構(gòu)化對(duì)等網(wǎng)絡(luò)的節(jié)點(diǎn)信譽(yù)管理機(jī)制使其共享安全性得到提高。
雖然結(jié)構(gòu)化對(duì)等網(wǎng)絡(luò)的技術(shù)目前還不夠完善,例如它的容錯(cuò)性還不夠理想,安全性還有待提高,但是隨著人們對(duì)結(jié)構(gòu)化對(duì)等網(wǎng)絡(luò)的進(jìn)一步研究,這些問(wèn)題將逐步得到解決。結(jié)構(gòu)化對(duì)等網(wǎng)絡(luò)具有很好的擴(kuò)展性,可靠性和可維護(hù)性;基于DHT 的結(jié)構(gòu)化P2P 網(wǎng)絡(luò)具有確定的查詢復(fù)雜度和維護(hù)開(kāi)銷。這些特性和優(yōu)點(diǎn)使得它能夠更好地被應(yīng)用到實(shí)際的網(wǎng)絡(luò)應(yīng)用之中,并能更好地滿足用戶的需求度,因而有廣闊的發(fā)展前景。
本文分析了結(jié)構(gòu)化對(duì)等網(wǎng)絡(luò)特性、存在問(wèn)題及關(guān)鍵技術(shù),指出結(jié)構(gòu)化對(duì)等網(wǎng)絡(luò)有著廣闊的發(fā)展前景。為了加快結(jié)構(gòu)化對(duì)等網(wǎng)絡(luò)在實(shí)際中應(yīng)用步伐,必須加大力度對(duì)其關(guān)鍵技術(shù)的研究,尤其是DHT 的路由效率問(wèn)題, 查詢系統(tǒng)的性能及其容錯(cuò)性問(wèn)題,對(duì)等網(wǎng)絡(luò)的安全性能問(wèn)題都是今后的研究重點(diǎn)。
[1] 於建華.基于應(yīng)用層特征串的P2P 流量識(shí)別及控制[J].金陵科技學(xué)院學(xué)報(bào).2011.
[2] 彭麗媛,劉杰,趙霞,許慶平.結(jié)構(gòu)化P2P 網(wǎng)絡(luò)Chord 算法研究[J].北京工商大學(xué)學(xué)報(bào)(自然科學(xué)版).2008.
[3] 徐蕾.對(duì)等網(wǎng)絡(luò)的發(fā)展與現(xiàn)狀[J].讀與寫(xiě)雜志.2010.
[4] 王立壯,王培峰.對(duì)等網(wǎng)絡(luò)(P2P)蠕蟲(chóng)模型分析與防御技術(shù)研究[J].計(jì)算機(jī)安全.2010.
[5] 張波.淺談結(jié)構(gòu)化對(duì)等網(wǎng)絡(luò)路由機(jī)制關(guān)鍵技術(shù)[J].硅谷.2010.
[6] 魏再超,張曉睿.基于DHT 的結(jié)構(gòu)化P2P網(wǎng)絡(luò)的性能比較[J].福建電腦.2011.
[7] 賀英杰,閆弘杉.基于SNMP的DOS攻擊特征提取方法[J].計(jì)算機(jī)安全.2009.
[8] Hughes D,Coulson G,Walkerdine J.Free riding on gnutella revisited:The bell tolls[C].IEEE Distributed Systems Online.2005.
[9] 項(xiàng)武,秦景.非結(jié)構(gòu)化對(duì)等網(wǎng)絡(luò)中的信譽(yù)管理機(jī)制[J].計(jì)算機(jī)工程與設(shè)計(jì).2010.
[10] 覃德澤.安全結(jié)構(gòu)化對(duì)等網(wǎng)絡(luò)的節(jié)點(diǎn)信譽(yù)管理機(jī)制[J].計(jì)算機(jī)工程.2011.