專利名稱:用于在分布式存儲網(wǎng)絡(luò)中實現(xiàn)數(shù)據(jù)授權(quán)的系統(tǒng)和方法
用于在分布式存儲網(wǎng)絡(luò)中實現(xiàn)數(shù)據(jù)授權(quán)的系統(tǒng)和方法背景領(lǐng)域各種特征涉及分布式通信和/或存儲系統(tǒng)。至少一個方面涉及用于在對等覆蓋網(wǎng)絡(luò)中授權(quán)存儲的方法。
背景諸如覆蓋網(wǎng)絡(luò)之類的結(jié)構(gòu)化對等網(wǎng)絡(luò)通常將分布式散列表(DHT)用于查詢的可縮放性和確定性路由。分布式散列表(DHT)是類似于散列表那樣提供查找服務(wù)的一類分散的分布式系統(tǒng)諸(節(jié)點名稱,標(biāo)識符值)對被存儲在DHT中,并且任何參與節(jié)點均可高效率地檢索與給定節(jié)點名稱相關(guān)聯(lián)的標(biāo)識符值。每個節(jié)點在DHT中具有唯一性的身份并且存儲在網(wǎng)絡(luò)中的每個服務(wù)或?qū)ο笠餐瑯泳哂形ㄒ恍缘纳矸?。所有這些標(biāo)識符都是相同標(biāo)識符空間的一部分,該標(biāo)識符空間通常是非常大的以避免沖突。按參與節(jié)點的集合的改變會致使最小量的破壞的方式將維護(hù)這些身份(從節(jié)點名稱映射到標(biāo)識符值ID)的責(zé)任分布在這些節(jié)點之中。這允許DHT擴(kuò)大到非常多的節(jié)點并且處置連續(xù)的節(jié)點到達(dá)、離開和故障。諸 DHT形成可被用來構(gòu)建諸如分布式文件系統(tǒng)、對等文件共享和內(nèi)容分發(fā)系統(tǒng)、協(xié)作式web高速緩存、多播、任播、域名服務(wù)和即時消息接發(fā)之類的更復(fù)雜服務(wù)的基礎(chǔ)設(shè)施。在這樣的分布式系統(tǒng)中,尤其是在那些實現(xiàn)分布式散列表以存儲和檢索數(shù)據(jù)并且發(fā)布和訂閱服務(wù)實例的分布式系統(tǒng)中,可能沒有任何針對何實體可在何位置發(fā)布的控制。 因此,需要一種機(jī)制,藉此可將節(jié)點的身份本身或者其與服務(wù)身份的組合用于確定節(jié)點可在何處存儲數(shù)據(jù)。在這樣的系統(tǒng)中,允許存儲節(jié)點驗證數(shù)據(jù)所有者實際上得到授權(quán)以在該特定節(jié)點或資源ID處進(jìn)行存儲可能是有挑戰(zhàn)性的。如果覆蓋網(wǎng)絡(luò)不能限制可由給定節(jié)點存儲數(shù)據(jù)的位置的數(shù)目,那么單個有害節(jié)點,無論是惡意的還是意外的,都可能對該覆蓋網(wǎng)絡(luò)中可用的分布式配額產(chǎn)生負(fù)面影響。然而,將與節(jié)點相對應(yīng)的存儲位置限制成恰好一個可能也是問題。在沒有該問題的情況下,給定節(jié)點可能負(fù)擔(dān)大量來自重負(fù)載用戶的要被存儲的數(shù)據(jù), 這可能還會激勵攻擊者將特定資源ID作為所選擇的位置攻擊的目標(biāo)。提供允許數(shù)據(jù)所有者控制哪些節(jié)點/用戶被允許寫、修改、或刪除特定資源ID的方法是會有價值的。如果沒有此方法,任何節(jié)點可能潛在地覆寫給定資源ID的內(nèi)容。概述本文中的各種特征涉及存儲授權(quán),并且提供了對存儲在對等覆蓋網(wǎng)絡(luò)上的數(shù)據(jù)的訪問控制。根據(jù)一個特征,提供了一種用于在覆蓋網(wǎng)絡(luò)上存儲數(shù)據(jù)的方法,并且該方法可以例如實現(xiàn)在發(fā)布節(jié)點、處理器上、和/或被存儲在計算機(jī)可讀介質(zhì)中。資源標(biāo)識符可以作為第一字符串與第二字符串的組合的函數(shù)來生成,其中第一字符串可由存儲節(jié)點獨立認(rèn)證并且該資源標(biāo)識符可由該存儲節(jié)點驗證。在一個示例中,第一字符串可以是發(fā)布節(jié)點標(biāo)識符, 而第二字符串可以是任意字符串。在另一示例中,第一字符串可以是發(fā)布節(jié)點標(biāo)識符,而第二字符串可以是關(guān)于覆蓋網(wǎng)絡(luò)內(nèi)的服務(wù)的預(yù)定義字符串。存儲請求可被生成,其包括資源標(biāo)識符、要被存儲的數(shù)據(jù)、第一字符串的指示符和/或第二字符串的指示符。該存儲請求可隨后在覆蓋網(wǎng)絡(luò)上發(fā)送以被存儲在存儲節(jié)點處,其中該存儲節(jié)點負(fù)責(zé)包括該資源標(biāo)識符的標(biāo)識符空間。由于資源標(biāo)識符的構(gòu)造,對存儲請求的授權(quán)可以在協(xié)議階層的覆蓋層面處驗證,其中該覆蓋層面低于協(xié)議階層中的用途層面。多個不同的資源標(biāo)識符可如所描述的那樣被生成,其中該多個不同的資源標(biāo)識符中的每一個是第一字符串與不同的第二字符串的組合的函數(shù)。因為不同的資源標(biāo)識符是用不同的第二字符串生成的,所以這導(dǎo)致數(shù)據(jù)存儲負(fù)載散布在其中不同存儲節(jié)點負(fù)責(zé)不同標(biāo)識符空間的覆蓋網(wǎng)絡(luò)內(nèi)。根據(jù)另一特征,提供了一種用于在覆蓋網(wǎng)絡(luò)上存儲數(shù)據(jù)的方法,并且該方法可以例如實現(xiàn)在存儲節(jié)點、處理器上、和/或被存儲在計算機(jī)可讀介質(zhì)中??山邮找趯Φ雀采w網(wǎng)絡(luò)中存儲數(shù)據(jù)的第一存儲請求。該第一存儲請求可包括第一資源標(biāo)識符和要被存儲的第一數(shù)據(jù),其中第一資源標(biāo)識符是第二字符串與可被認(rèn)證的第一字符串的組合的函數(shù)。在一個示例中,第一字符串可以是發(fā)布節(jié)點標(biāo)識符,而第二字符串可以是任意字符串。在另一示例中,第一字符串可以是發(fā)布節(jié)點標(biāo)識符,而第二字符串可以是關(guān)于覆蓋網(wǎng)絡(luò)內(nèi)的服務(wù)的預(yù)定義字符串??梢栽趨f(xié)議階層的覆蓋層面處通過驗證第一資源標(biāo)識符來執(zhí)行獨立的存儲授權(quán)。如果第一資源標(biāo)識符被成功驗證,那么第一數(shù)據(jù)可由存儲節(jié)點存儲并且可與第一資源標(biāo)識符相關(guān)聯(lián)。在一個示例中,在覆蓋層面處執(zhí)行獨立的存儲授權(quán)可包括 (a)認(rèn)證第一字符串,和/或(b)確定第一資源標(biāo)識符是否是第一字符串與第二字符串的組合的函數(shù)。存儲節(jié)點可隨后接收對所存儲的第一數(shù)據(jù)的數(shù)據(jù)訪問請求。如果該數(shù)據(jù)訪問請求證明知道第一資源標(biāo)識符和第一字符串,那么對所存儲的第一數(shù)據(jù)的訪問可被準(zhǔn)予。如果該數(shù)據(jù)訪問請求證明知道第一資源標(biāo)識符但是不能證明知道第一字符串,那么存儲節(jié)點可準(zhǔn)予對所存儲的第一數(shù)據(jù)的只讀訪問。準(zhǔn)予對所存儲的第一數(shù)據(jù)的訪問可包括允許用第二數(shù)據(jù)來替換第一數(shù)據(jù)。根據(jù)又一特征,提供了另一種在發(fā)布節(jié)點上操作的用于在對等覆蓋網(wǎng)絡(luò)上存儲數(shù)據(jù)的方法。資源標(biāo)識符可作為第二字符串的函數(shù)來生成,其中該資源標(biāo)識符可由存儲節(jié)點驗證。存儲請求可隨后被生成并且包括資源標(biāo)識符、要被存儲的數(shù)據(jù)、以及可由存儲節(jié)點獨立認(rèn)證的第一字符串。在一個示例中,第一字符串可以是發(fā)布節(jié)點標(biāo)識符,而第二字符串是任意字符串。在另一示例中,第一字符串是發(fā)布節(jié)點標(biāo)識符,而第二字符串是關(guān)于覆蓋網(wǎng)絡(luò)內(nèi)的服務(wù)的預(yù)定義字符串。該存儲請求可在覆蓋網(wǎng)絡(luò)上發(fā)送以被存儲在存儲節(jié)點處,其中該存儲節(jié)點負(fù)責(zé)包括該資源標(biāo)識符的標(biāo)識符空間。對該存儲請求的授權(quán)可在協(xié)議階層的用途層面處使用第一字符串來驗證,其中該用途層面高于協(xié)議階層中的覆蓋層面。覆蓋網(wǎng)絡(luò)內(nèi)的不同發(fā)布節(jié)點可生成具有相同資源標(biāo)識符但具有不同第一字符串的數(shù)據(jù)存儲請求。這些不同的數(shù)據(jù)存儲請求可基于使用不同第一字符串的用途層面授權(quán)來區(qū)分。根據(jù)又一特征,提供了另一種在存儲節(jié)點上操作的用于在對等覆蓋網(wǎng)絡(luò)上存儲數(shù)據(jù)的方法。可接收要在對等覆蓋網(wǎng)絡(luò)中存儲數(shù)據(jù)的第一存儲請求。第一存儲請求可包括第一資源標(biāo)識符、要被存儲的第一數(shù)據(jù)以及第一發(fā)布節(jié)點標(biāo)識符,其中存儲節(jié)點負(fù)責(zé)包括第一資源標(biāo)識符的標(biāo)識符空間??山邮找趯Φ雀采w網(wǎng)絡(luò)中存儲數(shù)據(jù)的第二存儲請求。該第二存儲請求可包括第一資源標(biāo)識符、要被存儲的第二數(shù)據(jù)、以及第二發(fā)布節(jié)點標(biāo)識符。第一數(shù)據(jù)和第一發(fā)布節(jié)點標(biāo)識符可由存儲節(jié)點存儲并且可與第一資源標(biāo)識符相關(guān)聯(lián)。第二數(shù)據(jù)和第二發(fā)布節(jié)點標(biāo)識符可由存儲節(jié)點存儲并且可與第一資源標(biāo)識符相關(guān)聯(lián)。存儲節(jié)點可在協(xié)議階層的用途層面處執(zhí)行獨立的存儲授權(quán),其中該用途層面高于協(xié)議階層中的覆蓋層面。隨后,存儲節(jié)點可接收對與第一資源標(biāo)識符相關(guān)聯(lián)的數(shù)據(jù)的數(shù)據(jù)訪問請求。存儲節(jié)點可準(zhǔn)予對所存儲的第一數(shù)據(jù)和第二數(shù)據(jù)的只讀訪問。然而,如果該數(shù)據(jù)訪問請求證明知道第一發(fā)布節(jié)點標(biāo)識符,那么存儲節(jié)點可準(zhǔn)予對所存儲的第一數(shù)據(jù)的寫訪問。同樣,如果該數(shù)據(jù)訪問請求證明知道第二發(fā)布節(jié)點標(biāo)識符,那么存儲節(jié)點可準(zhǔn)予對所存儲的第二數(shù)據(jù)的寫訪問。附圖簡 述在結(jié)合附圖理解下面闡述的具體說明時,本發(fā)明各方面的特征、本質(zhì)和優(yōu)點將變得更加顯而易見,在附圖中,相同附圖標(biāo)記始終作相應(yīng)標(biāo)識。
圖1是圖解DHT可如何操作以幫助實現(xiàn)對等覆蓋網(wǎng)絡(luò)的操作的圖示。圖2是圖解集中式注冊器(可信授權(quán))可如何用于將節(jié)點ID指派給覆蓋網(wǎng)絡(luò)內(nèi)的多個節(jié)點的框圖。圖3是圖解可在網(wǎng)絡(luò)內(nèi)實現(xiàn)的協(xié)議階層的一個示例的框圖。圖4是圖解可在一個示例中用于覆蓋網(wǎng)絡(luò)中的數(shù)據(jù)存儲請求的消息報頭架構(gòu)的示例的圖示。圖5是圖解可如何在對等覆蓋網(wǎng)絡(luò)中執(zhí)行分布式數(shù)據(jù)存儲和授權(quán)的示例的框圖。圖6是圖解可如何在對等覆蓋網(wǎng)絡(luò)中執(zhí)行分布式數(shù)據(jù)存儲和授權(quán)的替換示例的框圖。圖7是圖解兩個不同的發(fā)布節(jié)點可如何使用對等覆蓋網(wǎng)絡(luò)中的相同資源ID來尋求存儲數(shù)據(jù)的示例的框圖。圖8是圖解發(fā)布節(jié)點可如何為覆蓋層面數(shù)據(jù)存儲授權(quán)生成覆蓋網(wǎng)絡(luò)中的資源ID 的示例的框圖。圖9是圖解存儲節(jié)點可如何為覆蓋層面數(shù)據(jù)存儲授權(quán)驗證覆蓋網(wǎng)絡(luò)中的資源ID 的示例的框圖。圖10是圖解發(fā)布節(jié)點可如何為用途層面數(shù)據(jù)存儲授權(quán)生成覆蓋網(wǎng)絡(luò)中的資源ID 的替換示例的框圖。圖11是圖解存儲節(jié)點可如何為用途層面數(shù)據(jù)存儲授權(quán)驗證覆蓋網(wǎng)絡(luò)中的資源ID 的示例的框圖。圖12圖解被適配成在覆蓋網(wǎng)絡(luò)中請求數(shù)據(jù)存儲的發(fā)布設(shè)備或節(jié)點的示例。圖13是圖解在發(fā)布節(jié)點中操作的用于幫助實現(xiàn)覆蓋層面處的獨立存儲授權(quán)的方法的示例的流程圖。圖14圖解用于在執(zhí)行數(shù)據(jù)存儲授權(quán)的同時在覆蓋網(wǎng)絡(luò)中存儲數(shù)據(jù)的示例存儲節(jié)
點ο圖15(包括圖15A和15B)圖解在存儲節(jié)點中操作的用于在覆蓋層面處執(zhí)行獨立存儲授權(quán)的方法的示例。
圖16(包括圖16A和16B)圖解在存儲節(jié)點中操作的用于在用途層面處執(zhí)行獨立存儲授權(quán)的方法的示例。詳細(xì)描述在以下說明中,給出了具體細(xì)節(jié)以提供對諸實施例的透徹理解。但是,本領(lǐng)域普通技術(shù)人員將可理解,沒有這些具體細(xì)節(jié)也可實踐這些實施例。例如,可以用框圖示出電路以免使這些實施例混淆在不必要的細(xì)節(jié)中。在其他實例中,公知的電路、結(jié)構(gòu)、和技術(shù)可能不被具體示出以免與這些實施例相混淆。如本文中所使用的,術(shù)語“節(jié)點”可指在網(wǎng)絡(luò)內(nèi)可尋址的任何設(shè)備、計算機(jī)、處理單元、等等。術(shù)語“標(biāo)識”、“標(biāo)識符”、和“ID”可以互換地被用來指用于標(biāo)識網(wǎng)絡(luò)內(nèi)特定節(jié)點的值?!鞍l(fā)布節(jié)點”可指尋求在網(wǎng)絡(luò)中的另一節(jié)點上存儲信息的節(jié)點?!按鎯?jié)點”可指為網(wǎng)絡(luò)中的發(fā)布節(jié)點存儲信息的節(jié)點。術(shù)語“數(shù)據(jù)”(例如,所存儲的數(shù)據(jù))可以包括諸如音頻和/或視頻內(nèi)容、文本、圖像等的任何類型的信息。概覽
在對等覆蓋網(wǎng)絡(luò)中,所存儲的數(shù)據(jù)或信息可能與使此類數(shù)據(jù)或信息潛在地可由覆蓋網(wǎng)絡(luò)中的其他節(jié)點訪問的特定用途(例如,覆蓋服務(wù)、功能或應(yīng)用)相關(guān)聯(lián)。為了在覆蓋網(wǎng)絡(luò)中標(biāo)識并存儲數(shù)據(jù),特定的資源標(biāo)識符(例如,資源ID)被生成并且與數(shù)據(jù)或信息相關(guān)聯(lián)。提供了幫助實現(xiàn)對等覆蓋網(wǎng)絡(luò)中的數(shù)據(jù)存儲授權(quán)的各種特征。根據(jù)第一實現(xiàn),在包括多個節(jié)點的對等覆蓋網(wǎng)絡(luò)內(nèi),發(fā)布節(jié)點被允許在多個不同的存儲節(jié)點上存儲數(shù)據(jù)或信息同時仍然允許對此類所存儲的數(shù)據(jù)的授權(quán)控制。在此實現(xiàn)中,對數(shù)據(jù)存儲和/或訪問的授權(quán)控制可以在協(xié)議階層的覆蓋層面處執(zhí)行,其中該覆蓋層面低于協(xié)議階層中的用途層面。即,可以實現(xiàn)對存儲在存儲節(jié)點中的數(shù)據(jù)的訪問、修改和/ 或刪除的授權(quán)同時仍然允許數(shù)據(jù)跨覆蓋網(wǎng)絡(luò)中的多個節(jié)點位置散布。一種實現(xiàn)此類授權(quán)的方法是通過第一字符串與第二字符串的組合的函數(shù)所計算出的資源標(biāo)識符(資源ID)來標(biāo)識或關(guān)聯(lián)要被存儲的數(shù)據(jù),其中第一字符串可由存儲節(jié)點獨立認(rèn)證,而資源標(biāo)識符可由該存儲節(jié)點驗證。例如,第一字符串可以是發(fā)布節(jié)點標(biāo)識符,而第二字符串可以是指示用途類型的任意的或預(yù)定義的字符串。在一個實例中,發(fā)布節(jié)點標(biāo)識符(和/或發(fā)布節(jié)點的公鑰) 可以與被用來簽署正由發(fā)布節(jié)點存儲的數(shù)據(jù)的私人證書相關(guān)聯(lián)。這允許存儲節(jié)點查明提交改變或修改所存儲的數(shù)據(jù)的請求的節(jié)點是否知道這樣的私人證書。因為特定的發(fā)布節(jié)點可能使用相同的第一字符串但不同的第二字符串(例如,針對不同類型的數(shù)據(jù)或用途),不同的資源ID將被生成并且因此此類數(shù)據(jù)將可能被存儲在對等網(wǎng)絡(luò)上的不同存儲節(jié)點處以達(dá)成數(shù)據(jù)負(fù)載散布。存儲節(jié)點可確定特定節(jié)點是否可以修改或刪除與特定資源ID相關(guān)聯(lián)的所存儲的數(shù)據(jù)。即,數(shù)據(jù)訪問和/或修改請求僅在請求節(jié)點能夠證明對資源標(biāo)識符、第一字符串(例如,發(fā)布節(jié)點標(biāo)識符)和/或與發(fā)布節(jié)點相關(guān)聯(lián)的私人證書的知識的場合才可得到允許。此類授權(quán)可在協(xié)議階層的覆蓋層面處執(zhí)行,其中該覆蓋層面低于協(xié)議階層中的用途層面。在替換的實現(xiàn)中,在某些用途中,通過使用資源ID來搜尋某些類型的數(shù)據(jù)的方式來允許節(jié)點訪問所存儲的數(shù)據(jù)可以是合乎需要的。然而,當(dāng)資源ID基于第一字符串(例如,與發(fā)布節(jié)點相關(guān)聯(lián))和第二字符串兩者的時候,此類搜尋是不切實際的,因為搜尋節(jié)點可能不知道與所存儲的數(shù)據(jù)相關(guān)聯(lián)的第一字符串(例如,發(fā)布節(jié)點標(biāo)識符)。因此,在替換的實現(xiàn)中,所存儲的數(shù)據(jù)的資源ID可以僅基于第二字符串。這樣的“第二”字符串可以是預(yù)定的、已知的、和/或可知的字符串(例如,通過每種類型的用途、應(yīng)用、或服務(wù))。因為這樣的字符串可以由每一用途來預(yù)定義,所以搜尋與該用途相關(guān)聯(lián)的數(shù)據(jù)的其他節(jié)點可以重新生成資源ID(例如,基于已知的字符串)并且在覆蓋網(wǎng)絡(luò)中搜尋該資源ID。此方案不僅允許多個節(jié)點僅使用資源ID來搜尋特定類型的數(shù)據(jù),還允許多個不同的發(fā)布節(jié)點使用相同資源ID來存儲數(shù)據(jù)。在此實現(xiàn)中,對數(shù)據(jù)存儲和/或訪問的授權(quán)控制可以在協(xié)議階層的用途層面處執(zhí)行,其中該用途層面低于協(xié)議階層中的覆蓋層面。為了在使用相同資源ID的所存儲的數(shù)據(jù)的不同實例之間進(jìn)行區(qū)分(例如,因為它們可基于相同的字符串),所存儲的數(shù)據(jù)的每個實例還可與可在用途層面處被驗證的“第一”字符串(例如,發(fā)布節(jié)點的標(biāo)識符) 相關(guān)聯(lián)。存儲節(jié)點也可使用與所存儲的數(shù)據(jù)的實例相關(guān)聯(lián)的“第一”字符串(例如,發(fā)布節(jié)點ID)以查明請求修改或刪除該所存儲的數(shù)據(jù)的實例的節(jié)點是否具有與發(fā)布節(jié)點ID相關(guān)聯(lián)的正確的私人證書。 DHT覆蓋網(wǎng)絡(luò)覆蓋網(wǎng)絡(luò)是建立在另一網(wǎng)絡(luò)之上的通信或數(shù)據(jù)網(wǎng)絡(luò)。覆蓋中的節(jié)點可被認(rèn)為是通過虛擬或邏輯鏈接的方式連接的,其中每個虛擬或邏輯鏈接或許通過許多物理鏈接對應(yīng)于底層網(wǎng)絡(luò)中的路徑。在通信網(wǎng)絡(luò)內(nèi),每個網(wǎng)絡(luò)節(jié)點可以具有被用來路由去往和/或來自該節(jié)點的消息的網(wǎng)際協(xié)議(IP)地址。在此類網(wǎng)絡(luò)IP層之上,實現(xiàn)使用每個節(jié)點的節(jié)點標(biāo)識符(即,節(jié)點ID)的覆蓋網(wǎng)絡(luò)是可能的。因此,即使節(jié)點的IP地址發(fā)生了變化,但是其節(jié)點 ID對于覆蓋網(wǎng)絡(luò)而言仍保持不變。因此,覆蓋網(wǎng)絡(luò)不依賴于IP層基礎(chǔ)設(shè)施但取而代之使用節(jié)點ID在其節(jié)點之間進(jìn)行對等通信。補充地,此類覆蓋網(wǎng)絡(luò)可跨其節(jié)點實現(xiàn)分布式散列表 (DHT),以使得覆蓋網(wǎng)絡(luò)不會因任何單點故障而癱瘓。在一個示例中,P2PSIP覆蓋網(wǎng)絡(luò)可以是使用P2P網(wǎng)絡(luò)來提供SIP注冊、SIP消息傳輸以及類似功能的節(jié)點的關(guān)聯(lián)、集合和/或聯(lián)合。會話發(fā)起協(xié)議(SIP)是廣泛用于建立和撤銷諸如因特網(wǎng)和其他網(wǎng)絡(luò)上的視頻和語音呼叫之類的多媒體通信會話的信令協(xié)議。SIP 協(xié)議已針對對等(P2P)網(wǎng)絡(luò)進(jìn)行了適應(yīng)性調(diào)整(即,P2PSIP)以解析SIP請求的目標(biāo)、提供 SIP消息傳輸、以及提供其他與SIP相關(guān)的功能。本文中所描述的各種方面可以在集中式和/或分布式對等覆蓋網(wǎng)絡(luò)架構(gòu)中得到實現(xiàn)。圖1和2分別圖解了分布式和集中式覆蓋網(wǎng)絡(luò)的示例。圖1是圖解了 DHT可如何操作以幫助實現(xiàn)對等覆蓋網(wǎng)絡(luò)的操作的圖示。雖然此示例將覆蓋網(wǎng)絡(luò)圖解為環(huán),但是這僅是為了簡單化并且其他覆蓋網(wǎng)絡(luò)架構(gòu)也是可能和設(shè)想了的。對等覆蓋網(wǎng)絡(luò)A 100可由多個節(jié)點A 102、B 104、C 106、D 108、E 110和/或F 112 形成。每個節(jié)點可維護(hù)覆蓋網(wǎng)絡(luò)A 100的DHT的一部分(例如,節(jié)點名稱、節(jié)點標(biāo)識符)。 每個節(jié)點在覆蓋網(wǎng)絡(luò)100的DHT 114中具有選自標(biāo)識符空間的唯一性節(jié)點標(biāo)識符(節(jié)點 ID)。同樣,存儲在網(wǎng)絡(luò)100中的每一服務(wù)或?qū)ο罂删哂型瑯舆x自標(biāo)識符空間的唯一性標(biāo)識符。所有這些節(jié)點ID都是相同標(biāo)識符空間的一部分,該標(biāo)識符空間通常是非常大的以避免沖突。按參與節(jié)點的集合的改變致使最小量的破壞的方式將維護(hù)這些節(jié)點ID(從節(jié)點名稱映射到節(jié)點標(biāo)識符)的責(zé)任分布在這些節(jié)點中。每個節(jié)點可以負(fù)責(zé)標(biāo)識符空間的一部分, 通常從其自己的節(jié)點ID開始直至其鄰節(jié)點中的一個或更多個的節(jié)點ID。節(jié)點可以負(fù)責(zé)存儲對象和/或響應(yīng)對映射到其所負(fù)責(zé)的范圍內(nèi)的任何位置的對象的查詢。每個節(jié)點可以維護(hù)至其他節(jié)點的鏈接的集合(其鄰節(jié)點或者路由表)。這些鏈接一起形成覆蓋網(wǎng)絡(luò)。節(jié)點根據(jù)被稱為網(wǎng)絡(luò)拓?fù)涞哪撤N結(jié)構(gòu)挑選其鄰節(jié)點。密碼學(xué)散列函數(shù)可被用來將標(biāo)識符(ID)指派給覆蓋網(wǎng)絡(luò)100內(nèi)的節(jié)點、對象以及服務(wù)實例。大多數(shù)DHT使用一致散列的某種變形以將散列密鑰(即,標(biāo)識符)映射到節(jié)點和/或服務(wù)。此技術(shù)采用定義了從密鑰Ic1到密鑰k2的距離的抽象概念的函數(shù)δ (ki; k2), 該距離與節(jié)點之間的地理距離或網(wǎng)絡(luò)等待時間無關(guān)。每個節(jié)點被指派稱為其標(biāo)識符(即, 節(jié)點ID)的單個密鑰。具有標(biāo)識符值(節(jié)點ID) i的節(jié)點擁有(或者負(fù)責(zé))對于其而言標(biāo)識符i是根據(jù)δ所測得的最接近的ID的所有密鑰(或標(biāo)識符)。DHT網(wǎng)絡(luò)拓?fù)涔蚕砣缦滦再|(zhì)的某種變形對于任何密鑰k而言,節(jié)點或者擁有k或者根據(jù)上面定義的密鑰空間距離具有到更接近k的節(jié)點的鏈路。那么,使用貪婪算法將消息路由至任何密鑰k ( S卩,標(biāo)識符) 的所有者就會相對簡單。例如,在每個節(jié)點處,消息被轉(zhuǎn)發(fā)給其節(jié)點ID最接近密鑰k的鄰節(jié)點。當(dāng)沒有這樣的鄰節(jié)點時(即,沒有其他鄰節(jié)點具有更接近的節(jié)點ID),那么就假定消息已到達(dá)最接近的節(jié)點,該最接近的節(jié)點是如上面所定義的密鑰k的所有者。這種路由樣式有時被稱為基于密鑰的路由。在一個實例中,DHT可以將密鑰作為圓圈上的點來對待(如圖1中所圖解的),而δ (k1 k2)是環(huán)繞圓圈從&到1^2按順時針方向行進(jìn)的距離。因此,圓形密鑰空間被分割成毗連的分段,這些分段的端點是節(jié)點標(biāo)識符(節(jié)點ID)。如果I1和i2 是兩個毗鄰的ID,那么具有ID i2的節(jié)點擁有落Ai1與12之間的所有密鑰。由于實現(xiàn)此網(wǎng)絡(luò)拓?fù)涞男士紤],保證任何路由中的跳躍的最大數(shù)目(路由長度)較小以使得請求快速完成、并且保證任何節(jié)點的鄰節(jié)點的最大數(shù)目(最大節(jié)點度)較小以使得維護(hù)開銷不過度可能是明智的。注意,一種權(quán)衡在于,較短的路由需要每個節(jié)點有數(shù)個鄰節(jié)點(即,較高的最大節(jié)點度)。在一個示例中,節(jié)點C 106可以維護(hù)在其中保存了一個或更多個前驅(qū)節(jié)點和一個或更多個后繼節(jié)點 的節(jié)點ID的DHT 114。DTH 114可以僅是所有節(jié)點ID的子集,S卩,這些節(jié)點ID鄰近節(jié)點C 106的節(jié)點ID。例如,節(jié)點C 106的DHT 114可以維護(hù)節(jié)點A 102和B 104的在前節(jié)點ID以及節(jié)點D 108、E 110和F 112的后繼節(jié)點ID。DHT可擴(kuò)大到非常多的節(jié)點(例如,網(wǎng)絡(luò)100中的216個節(jié)點)并且能夠處置連續(xù)的節(jié)點到達(dá)、離開和故障。在一個示例中,DHT可將節(jié)點ID作為圓圈上的點來對待,并且δ (節(jié)點IDi1,節(jié)點IDi2)是繞著圓圈(例如,從節(jié)點C到某個節(jié)點IDx)按順時針方向行進(jìn)的距離。因此,圓形標(biāo)識符空間被分割成毗連的分段,這些分段的端點是節(jié)點標(biāo)識符(節(jié)點ID)。如果I1和i2是兩個毗鄰的節(jié)點ID,那么具有ID i2的節(jié)點擁有落Ai1與12之間的所有密鑰。因此,諸DHT可形成用來構(gòu)建更復(fù)雜的服務(wù)(例如,分布式文件系統(tǒng)、對等文件共享和內(nèi)容分發(fā)系統(tǒng)、協(xié)作式 web高速緩存、多播、任播、域名服務(wù)和即時消息接發(fā))的基礎(chǔ)設(shè)施,其中每個這樣的服務(wù)可以與圓形標(biāo)識符空間中的標(biāo)識符相關(guān)聯(lián)。具有在值上最接近特定服務(wù)標(biāo)識符的節(jié)點ID的節(jié)點可以被假定成主存此類服務(wù)(例如,存儲特定的文件或者提供由“服務(wù)”標(biāo)識符所標(biāo)識的服務(wù)、等等)。例如,參照DHT 114,如果服務(wù)具有“79”的標(biāo)識符值,那么該服務(wù)最接近于與節(jié)點C 106相關(guān)聯(lián)的節(jié)點ID“73”并且因此,任何對此類服務(wù)的請求將最終在節(jié)點C 106 處結(jié)束。圖2是圖解了集中式注冊器(可信授權(quán))可如何用于將節(jié)點ID指派給覆蓋網(wǎng)絡(luò)內(nèi)的多個節(jié)點的框圖。對于覆蓋網(wǎng)絡(luò)100,集中式注冊器202可用于向多個網(wǎng)絡(luò)節(jié)點102、104、106、108、110、112、116和/或118提供節(jié)點ID以形成DHT 204。網(wǎng)絡(luò)節(jié)點每次尋求獲得節(jié)點ID時會向集中式注冊器202發(fā)送請求指派節(jié)點標(biāo)識符的消息。集中式注冊器202 隨后為請求節(jié)點計算節(jié)點ID、將該節(jié)點ID指派給請求節(jié)點并且將其發(fā)送給請求節(jié)點。在某一些實現(xiàn)中,集中式注冊器202可能不參與任何覆蓋網(wǎng)絡(luò)操作并且由此可能對于節(jié)點ID驗證而言甚至是其他節(jié)點不可到達(dá)的。此類集中式注冊器202的一個示例可以包括接收來自請求節(jié)點的公鑰、指派節(jié)點ID并且斷言將這些節(jié)點ID的映射至節(jié)點的證書授權(quán)機(jī)構(gòu)(CA)。例如,CA可以使用請求節(jié)點的公鑰來簽署節(jié)點ID的映射。請求節(jié)點可隨后向其他節(jié)點呈現(xiàn)經(jīng)證明的節(jié)點ID并且證明對包括在證書中的公鑰的擁有權(quán)。節(jié)點可通過用其私鑰來簽署某些所傳送的內(nèi)容的方式證明這種擁有權(quán)。其他節(jié)點可使用通過節(jié)點的證書證明的公鑰來驗證結(jié)果得到的經(jīng)簽署的內(nèi)容。覆蓋網(wǎng)絡(luò)專有的集中式注冊器可以由給定覆蓋網(wǎng)絡(luò)的創(chuàng)建者或者對促進(jìn)此類覆蓋網(wǎng)絡(luò)的采用感興趣的實體來部署,或者還可以由網(wǎng)絡(luò)運營商來提供。使用集中式注冊器的一個缺點在于,要對等覆蓋網(wǎng)絡(luò)的所有潛在成員(例如,節(jié)點)信任擁有和操作該集中式注冊器的單個授權(quán)機(jī)構(gòu)可能是困難的。在某一些實現(xiàn)中,集中式注冊器202可向散列函數(shù)提供隨機(jī)輸入而節(jié)點本身向散列函數(shù)提供另一隨機(jī)輸入,而不是覆蓋網(wǎng)絡(luò)節(jié)點完全依賴于外部授權(quán)機(jī)構(gòu)(即,集中式注冊器)進(jìn)行節(jié)點ID指派。這兩個輸入中的每一個將由驗證器節(jié)點用來驗證節(jié)點ID屬于宣稱該節(jié)點ID的節(jié)點。集中式注冊器可能限制單個實體或節(jié)點可獲得的節(jié)點ID的數(shù)目。例如,在運營商擁有的集中式注冊器情形中,節(jié)點ID可能與服務(wù)訂閱捆綁在一起。
圖3是圖解了可在網(wǎng)絡(luò)內(nèi)實現(xiàn)的協(xié)議階層的一個示例的框圖。在此示例中,覆蓋網(wǎng)絡(luò)可被建立在包括傳輸層306、網(wǎng)絡(luò)層308、鏈路層310和/或物理層312的協(xié)議棧上。在這些基礎(chǔ)層之上可實現(xiàn)可包括P2P和/或SIP協(xié)議的覆蓋層304。在覆蓋層304之上可建立用途層302,通過該用途層302來支持諸服務(wù)。用途層302也可被稱為應(yīng)用層或數(shù)據(jù)層。 “層”也可被稱為“層面”。注意,其他所設(shè)想的實現(xiàn)可包括其他或等效的層和/或可以省去某一些層。在一些意義上,用途層302可被認(rèn)為是相對于其他層304-312的頂層或最高層。 同樣,物理層312可被認(rèn)為是相對于其他層302-310的底層或最低層。對等計算的本質(zhì)在于,每個對等體向其他對等體提供服務(wù)以允許覆蓋共同提供更大的功能。在P2PSIP中,對等體節(jié)點提供存儲和傳輸服務(wù)以使得能實現(xiàn)分布式數(shù)據(jù)庫功能和分布式傳輸功能。可構(gòu)想的是,各個對等體也可提供其他服務(wù)。這些外加服務(wù)中的一些 (例如,經(jīng)NAT的UDP簡單穿越(STUN)服務(wù)器服務(wù))可被要求允許形成和操作覆蓋網(wǎng)絡(luò),而其他一些(例如,語音郵件服務(wù))可以是對基本P2PSIP功能性的增強。覆蓋網(wǎng)絡(luò)的節(jié)點可能需要存儲關(guān)于哪些對等體節(jié)點提供哪些服務(wù)以及或許每個對等體節(jié)點具有何種用于投放每個所列服務(wù)的能力的信息。圖1和2中所圖解的節(jié)點可以實現(xiàn)經(jīng)認(rèn)證的數(shù)據(jù)存儲。例如,發(fā)布節(jié)點A102可以生成資源ID并且使其與要被存儲的數(shù)據(jù)相關(guān)聯(lián)。資源ID可以例如映射到充當(dāng)存儲節(jié)點的節(jié)點F 112。此處所描述的各種特征可以實現(xiàn)在圖1和2的覆蓋網(wǎng)絡(luò)中以及其他類型的覆蓋網(wǎng)絡(luò)中。分布式P2P網(wǎng)絡(luò)中的數(shù)據(jù)存儲和授權(quán)對等(P2P)覆蓋網(wǎng)絡(luò)的示例是由IETF(因特網(wǎng)工程任務(wù)組)標(biāo)準(zhǔn)化的P2PSIP(會話發(fā)起協(xié)議)。本文中所描述的各種數(shù)據(jù)存儲授權(quán)特征可實現(xiàn)在遵從P2PSIP的網(wǎng)絡(luò)中。作為P2PSIP的一部分,可以考慮可允許在覆蓋實例化之上定義用途的資源分配。用途可以定義各種數(shù)據(jù),每種數(shù)據(jù)對應(yīng)一個數(shù)據(jù)模型。為了在覆蓋中的特定節(jié)點上存儲數(shù)據(jù),可以標(biāo)識要被存儲的數(shù)據(jù)的類型或種類并且可使用經(jīng)證明的用戶名或節(jié)點ID來計算資源ID,其中, 感興趣的證書以及資源ID演算機(jī)制可由用途來定義。出 于這些原因,覆蓋網(wǎng)絡(luò)中的所有節(jié)點都支持可在該覆蓋網(wǎng)絡(luò)上提供的所有用途可能是必需的。另外,當(dāng)用途演進(jìn)至更新的版本時,所有節(jié)點都支持所有用途的相同版本可能是必需的。在分布式網(wǎng)絡(luò)中(例如,其中沒有集中式節(jié)點授權(quán)機(jī)構(gòu)是可用的),這可能需要“η天”來更新所有節(jié)點。然而,獲得更新日是繁瑣的并且對于實際的網(wǎng)絡(luò)實現(xiàn)而言通常是不現(xiàn)實的。因此,需要保持存儲和覆蓋層面數(shù)據(jù)授權(quán)用途為不可知(例如,不依賴特定用途、 數(shù)據(jù)類型、等等)。通過這樣做,覆蓋網(wǎng)絡(luò)可支持不同種類的用途以及允許更新隨著時間演進(jìn)。因此,在覆蓋層處所提供的性質(zhì)和原始功能可不依賴于用途層地得到維護(hù)或保持。在一個示例中,術(shù)語“覆蓋層”(或覆蓋層面)可被用來指協(xié)議階層中用途層以下且傳輸層以上的諸層處的操作。術(shù)語“應(yīng)用層”和/或“用途層”可被用來指協(xié)議階層的用途層處的操作。圖4是圖解了可在一個示例中用于覆蓋網(wǎng)絡(luò)中的數(shù)據(jù)存儲請求的消息報頭架構(gòu)的示例的圖示。然而,可以使用其他類型的消息報頭。消息的正文(未示出)可緊隨消息報頭架構(gòu)。該架構(gòu)是以四字節(jié)行的形式示出的,因為這些結(jié)構(gòu)中的許多在長度上是四個字節(jié)的倍數(shù)。字節(jié)是橫軸上較大的散列標(biāo)記。位是橫向上較小的散列標(biāo)記??v向上示出了每個消息或行的起始字節(jié)(從0開始數(shù))。前四個字節(jié)402 (第零到第三字節(jié))可被用來標(biāo)識消息類型或種類。第四字節(jié)410是生存時間(TTL)字段,其指示消息在被丟棄之前可經(jīng)歷的反復(fù)或跳躍的數(shù)目。TTL字段按每次跳躍遞減,并且如果TTL等于0,那么消息不應(yīng)該再被跳躍轉(zhuǎn)發(fā)。第五字節(jié)412是路由并且指示要遵循的路由類型。路由可以例如是代理或重定向。FRAG字段414是第六字節(jié)418中被用來指示該消息是否是片段的1位字段。LFRG字段416是第六字節(jié)中被用來指定此片段是否是完整消息中的最后一個片段的1位字段。14 位(來自第六字節(jié)418的6位加上第七字節(jié)420的全部8位)被保留以指示片段偏移和總長度。EXP字段422是指定正在使用的協(xié)議是否是實驗性的1位字段。版本字段424是指示正在使用的P2PSIP協(xié)議的版本的7位字段。DHT字段426是指定正在使用的DHT算法的8位字段。Chord DHT算法可被使用。其他DHT算法也是可能的。散列字段428是指定正在被用來生成ID的散列算法的8位字段。所有用于覆蓋的ID應(yīng)該或者必須使用相同的算法來演算。示例算法是產(chǎn)生160位散列值的SHA-I算法, 盡管其他散列算法也可被使用。安全性430是指示正由覆蓋中的參與者使用的安全性機(jī)制的8位字段。R/r位432是被用來指定這是請求還是響應(yīng)的1位字段。方法字段434是指示消息方法的7位字段。有至少四種方法類型對等體專有的、資源專有的、傳送專有的以及DHT專有的。該方法類型由方法434的前兩位來指定。其余5位被用來指定特定的方法。示例方法是“對等體_加入”、“對等體_搜尋”、“資源_獲得”、“資源_安放”、“資源_傳輸”、“傳送_打開”以及“傳送_隧道”。注意,術(shù)語“對等體”可以指覆蓋網(wǎng)絡(luò)中的節(jié)點。長度字段435是不包括報頭在內(nèi)的消息大小的字節(jié)計數(shù)。目的地ID字段436是唯一性地標(biāo)識目的地節(jié)點或資源的160位標(biāo)識符(例如,節(jié)點ID或者資源ID)。源ID字段 438是唯一性地標(biāo)識發(fā)送者的160位標(biāo)識符(例如,節(jié)點ID或者資源ID)。交易ID字段440是標(biāo)識交易并且還充當(dāng)鹽值或種子以使請求和響應(yīng)隨機(jī)化的唯一性的64位數(shù)字。響應(yīng)可與它們所對應(yīng)的請求使用相同的交易ID。覆蓋ID字段442是正在使用的覆蓋的32位校驗和或散列。該校驗和必須或者應(yīng)該被用來將代表覆蓋名稱的可變長度字符串轉(zhuǎn)換成32位值。該32位覆蓋字段提供完整性檢查。該32位覆蓋字段可提供代表覆蓋名稱的數(shù)字簽名,以使得諸節(jié)點可驗證它們正在與期望的覆蓋網(wǎng)絡(luò)交互。
不可知的覆蓋行為在非?;A(chǔ)的層面處,DHT提供基于密鑰的路由,在該路由之上可以存在若干應(yīng)用。覆蓋協(xié)議通常提供存儲和檢索語義并且允許諸節(jié)點的對等連通性。這些語義是可由寬范圍的應(yīng)用使用的非?;镜脑Z。即使對于P2PSIP工作組范圍內(nèi)的基于SIP的應(yīng)用分類而言,也有可存在于覆蓋中的各個節(jié)點上的若干應(yīng)用。無需使覆蓋中的所有節(jié)點都支持相同的應(yīng)用。另外,給定的應(yīng)用可以隨著時間演進(jìn),而更新的版本潛在地定義在覆蓋上要被存儲和檢索的數(shù)據(jù)的新的種類。諸如不依賴用途的存儲機(jī)能之類的覆蓋原語的優(yōu)點在于,它們不要求覆蓋網(wǎng)絡(luò)中的所有節(jié)點都支持給定的用途才能存儲與該用途相對應(yīng)的數(shù)據(jù)。諸用途當(dāng)然可以在用途層面處提供可由的確支持那些用途的節(jié)點解讀的外加機(jī)制,但這并不依賴覆蓋原語。在給定不同種類的用途以及甚至相同用途的潛在演進(jìn)的情況下,如果覆蓋原語上的操作被允許由這些用途來定義,那么覆蓋網(wǎng)絡(luò)可能需要標(biāo)志日(或者同步周期)以更新所有節(jié)點。當(dāng)在各個節(jié)點上存在不兼容的用途時,覆蓋將隨后被呈現(xiàn)為不可用或者將導(dǎo)致不可預(yù)測的行為。因此,雖然諸用途應(yīng)該被允許與覆蓋層交互以提供某些輸入,但是覆蓋原語上的諸如存儲之類的操作應(yīng)該被定義并且包含在覆蓋層內(nèi)。示例-頂層數(shù)據(jù)授權(quán)方案根據(jù)對等覆蓋網(wǎng)絡(luò)中的數(shù)據(jù)授權(quán)的第一示例,資源標(biāo)識符可基于第一字符串與第二字符串的組合來生成,其中第一字符串可由存儲節(jié)點獨立認(rèn)證并且資源標(biāo)識符可由該存儲節(jié)點驗證。例如,第一字符串可以是發(fā)布節(jié)點ID或其等效物。第二字符串可以是任意字符串或者預(yù)定義字符串。發(fā)布節(jié)點可以生成包括資源標(biāo)識符和要被存儲的數(shù)據(jù)的存儲請求。該存儲請求可在覆蓋網(wǎng)絡(luò)上發(fā)送以被存儲在存儲節(jié)點處,其中該存儲節(jié)點負(fù)責(zé)包括資源標(biāo)識符的標(biāo)識符空間。存儲節(jié)點可以在協(xié)議階層的覆蓋層面處通過驗證資源標(biāo)識符來執(zhí)行獨立的存儲授權(quán)。圖5是圖解了可如何在對等覆蓋網(wǎng)絡(luò)中執(zhí)行分布式數(shù)據(jù)存儲和授權(quán)的示例的框圖。發(fā)布節(jié)點A 502可以尋求在覆蓋網(wǎng)絡(luò)中存儲可由數(shù)據(jù)名稱標(biāo)識的數(shù)據(jù)(即,數(shù)據(jù)值)。 發(fā)布節(jié)點A 502可以具有發(fā)布節(jié)點ID以及(帶有相應(yīng)私鑰Prv-A的)公鑰Pk_A。證書 Cert-A可由發(fā)布節(jié)點A 502從證明實體508獲得,其中證書Cert-A是其公鑰Pk-A的函數(shù)。當(dāng)發(fā)布節(jié)點A 502希望在覆蓋網(wǎng)絡(luò)中存儲數(shù)據(jù)時,其可以作為第一字符串和第二字符串的函數(shù)生成相關(guān)聯(lián)資源ID。在一個示例中,第一字符串可以是發(fā)布節(jié)點ID。第二字符串可以是預(yù)定字符串(例如,描述數(shù)據(jù)、用途、或者數(shù)據(jù)類型的字符串)或者可以是任意字符串。在第二字符串是預(yù)定的字符串的情況下,其可以是階層結(jié)構(gòu)的一部分或者可以是字符串分量的級聯(lián)。在各種示例中,第一和/或第二字符串中的每一個可以是字母、字母數(shù)字和/或數(shù)字的符號序列。發(fā)布節(jié)點A 502還可以根據(jù)Cert-A以及要被存儲的數(shù)據(jù)(例如,通過用Cert-A來簽署數(shù)據(jù)值)來生成簽名Sig-A。 存儲請求504可以隨后由發(fā)布節(jié)點A 502生成并發(fā)送。存儲請求504可以包括資源ID、數(shù)據(jù)名稱、數(shù)據(jù)值、第一字符串、第二字符串、公鑰Pk-A以及簽名Sig-A。在此示例中,資源ID可以映射到節(jié)點B 506負(fù)責(zé)的資源空間。一旦接收到存儲請求504,存儲節(jié)點B 506就可以認(rèn)證請求節(jié)點實際上是發(fā)布節(jié)點A502。在一個示例中,此認(rèn)證可以通過向證明實體508發(fā)送可包括公鑰Pk-A的證書請求510來達(dá)成。作為響應(yīng),存儲節(jié)點B 506可接收具有驗證證書Ver. Cert-A的證書響應(yīng)512,該驗證證書Ver. Cert-A是公鑰Pk-A的函數(shù)。如果收到簽名Sig-A與所接收到的用Ver. Cert-A簽署的數(shù)據(jù)值的本地生成的簽名相匹配,那么存儲節(jié)點B 506就已經(jīng)成功驗證了存儲請求504的真實性。否則,如果收到簽名Sig-A與本地生成的簽名不匹配,那么存儲請求504可被拒絕或忽略。一旦成功驗證了 Sig-A,存儲節(jié)點B 506就可以存儲收到數(shù)據(jù)。在此示例中,利用了包括資源ID字段516以及包含數(shù)據(jù)名稱、數(shù)據(jù)值和第一字符串的第二字段518的數(shù)據(jù)結(jié)構(gòu) 514。注意,圖5中所圖解的方案提供了用于在對等覆蓋網(wǎng)絡(luò)中實現(xiàn)數(shù)據(jù)存儲授權(quán)和訪問的各種合意特征。首先,數(shù)據(jù)授權(quán)可以允許存儲節(jié)點B 506驗證數(shù)據(jù)所有者(發(fā)布節(jié)點A 502)實際上得到授權(quán)以在該特定資源ID處進(jìn)行存儲。在一個示例中,這可以由存儲節(jié)點B 506通過用本地生成的資源ID來驗證接收到的資源ID來達(dá)成。由于存儲節(jié)點B 506知道或者能獲得第一字符串(例如,發(fā)布節(jié)點標(biāo)識符)和第二字符串,因此該存儲節(jié)點B 506能夠重新計算本地資源ID以與收到資源ID相比較。由發(fā)布節(jié)點A 502使用的第二字符串對于存儲節(jié)點B 506而言可以是已知的。例如,第二字符串可以是(在存儲請求504中接收到的)用途類型或者可以是數(shù)據(jù)名稱。因此,存儲節(jié)點B 506可將在存儲請求504中接收到的第一字符串和第二字符串用于計算資源ID的本地版本并且將該本地版本與收到資源ID相比較。 這允許覆蓋網(wǎng)絡(luò)限制可由給定節(jié)點存儲數(shù)據(jù)的存儲位置的數(shù)目,并且因此限制單個節(jié)點對覆蓋中可用的分布式配額的影響。在一般意義上,資源ID驗證可基于提供對第一字符串的可認(rèn)證的證明(例如,對發(fā)布節(jié)點標(biāo)識符的所有權(quán)的證明)并且隨后驗證第一字符串和第二字符串(例如,用途類型)的公知(或商定的)函數(shù)映射到存儲的ID空間。對第一字符串的可認(rèn)證的證明可以例如基于不對稱的密鑰操作(例如,使用公鑰/私鑰對)。有幾種達(dá)成驗證資源標(biāo)識符的潛在獨立的方法。第一種方法可以是期望接受服務(wù)發(fā)布存儲請求的存儲節(jié)點知道特定類型的服務(wù)/用途(即,第二字符串)得到授權(quán)。即,這些服務(wù)/用途可以是預(yù)定義的并且是覆蓋網(wǎng)絡(luò)的公知節(jié)點。第二種方法可以是期望“第二字符串”的所有組合被存儲節(jié)點接受。第三種方法可以是使第二字符串由被所有節(jié)點承認(rèn)的授權(quán)機(jī)構(gòu)獨立簽署。然而,將來自發(fā)布節(jié)點A 502的數(shù)據(jù)圍繞覆蓋網(wǎng)絡(luò)中的不同存儲節(jié)點散布的能力也是合意的。若沒有在多個存儲節(jié)點之間散布數(shù)據(jù)存儲的能力,那么給定存儲節(jié)點可能負(fù)擔(dān)來自重負(fù)載的發(fā)布節(jié)點的所有數(shù)據(jù)。通過利用圖5中的其中資源ID至少部分地基于第二字符串的方案,來自發(fā)布節(jié)點A 502的不同數(shù)據(jù)可具有不同的第二字符串,藉此導(dǎo)致不同的資源ID。即,第二字符串可以隨不同類型的數(shù)據(jù)或用途而變化或者每次可以是任意的。 因此,可以生成映射到不 同存儲節(jié)點并且在不同存儲節(jié)點之間散布數(shù)據(jù)的不同的資源ID。其次,數(shù)據(jù)授權(quán)允許數(shù)據(jù)所有者控制哪些節(jié)點被允許向該特定的資源ID寫入。 艮口,存儲節(jié)點B 506可以認(rèn)證存儲請求504以驗證僅得到授權(quán)的節(jié)點才能夠作出此類請求。 例如,在圖5中,僅發(fā)布節(jié)點必須具有正確的證書Cert-A才能夠生成正確的簽名Sig-Α。存儲節(jié)點B 506能夠驗證該正確的簽名已被使用(通過使用證明實體508)。若不進(jìn)行驗證, 任何節(jié)點都可能潛在地覆寫給定資源ID的內(nèi)容。這些數(shù)據(jù)授權(quán)性質(zhì)可以是不依賴于用途的。即,對覆蓋存儲的數(shù)據(jù)授權(quán)可以按用途不可知的方式來提供。因此,覆蓋網(wǎng)絡(luò)中的存儲節(jié)點能夠驗證對來自另一節(jié)點的存儲請求的授權(quán),而不必支持要被存儲的數(shù)據(jù)所屬的特定用途/服務(wù)/應(yīng)用。即,無論存儲節(jié)點是否支持特定類型的服務(wù)或應(yīng)用,其都能實現(xiàn)對要被存儲的任何類型的數(shù)據(jù)的授權(quán)驗證。如圖5中所圖解的,數(shù)據(jù)授權(quán)可以允許數(shù)據(jù)所有者(例如,發(fā)布節(jié)點A 502)確保未經(jīng)授權(quán)的節(jié)點不能寫或修改其已存儲在存儲節(jié)點B 506中的資源ID中的特定項的內(nèi)容 (例如,數(shù)據(jù)值)。此數(shù)據(jù)授權(quán)特征的保證可以取決于實施此類數(shù)據(jù)授權(quán)特征的存儲節(jié)點 (例如,存儲節(jié)點B 506)的協(xié)作。得到授權(quán)的存儲請求可以由覆蓋網(wǎng)絡(luò)中的任何節(jié)點獨立驗證。換言之,檢索資源 ID的內(nèi)容(例如,數(shù)據(jù)名稱、數(shù)據(jù)值)的節(jié)點可以能夠驗證數(shù)據(jù)所有者(例如,發(fā)布節(jié)點A) 得到授權(quán)以在該資源ID處進(jìn)行存儲。如圖5中所圖解的,給定的發(fā)布節(jié)點(例如,節(jié)點A 502)可以能夠在覆蓋網(wǎng)絡(luò)中的多個節(jié)點位置處存儲信息或數(shù)據(jù)。這允許節(jié)點跨覆蓋網(wǎng)絡(luò)中的多個存儲節(jié)點散布其數(shù)據(jù)而不依賴于單個節(jié)點,藉此在不同用途要被存儲時達(dá)成負(fù)載平衡。固有地提供此類數(shù)據(jù)存儲散布的覆蓋存儲原語在處置查詢和存儲本身方面本質(zhì)上是有用的。在覆蓋層面處的數(shù)據(jù)授權(quán)必須或者可以基于由覆蓋網(wǎng)絡(luò)認(rèn)同的覆蓋層面憑證 (例如,由證明實體508提供的證書Cert-A或者自簽署的證書)。用途專有的證書不能得到不支持那些用途的節(jié)點的認(rèn)同并且因此不是覆蓋層面數(shù)據(jù)授權(quán)的可行候選。其中用字符串和認(rèn)證者名稱兩者來生成資源ID的這種頂層授權(quán)方案幫助實現(xiàn)了覆蓋層面處的存儲授權(quán)。通過利用字符串(例如,用途專有的字符串)來生成資源ID,這導(dǎo)致來自特定節(jié)點的不同數(shù)據(jù)在諸存儲節(jié)點之間分發(fā)或散布,藉此達(dá)成負(fù)載平衡功能。示例-較低層數(shù)據(jù)授權(quán)方案覆蓋網(wǎng)絡(luò)可以提供用于在不具有關(guān)于供應(yīng)服務(wù)的實體的節(jié)點ID(或用戶名)的先驗知識的情況下供搜尋節(jié)點查找服務(wù)(例如,與用途、服務(wù)或應(yīng)用相關(guān)聯(lián)的所存儲的數(shù)據(jù)) 的能力。例如,實際上不能期望尋找使用中繼NAT的穿越(TURN)服務(wù)的節(jié)點知道相應(yīng)的用戶名或節(jié)點ID。資源ID計算可以按用途不可知的方式來執(zhí)行,以使得資源ID可被用來標(biāo)識任何類型的用途、服務(wù)和/或應(yīng)用。在某一些實例中,諸用途可以被允許將用途專有的輸入提供到資源ID計算中去。即,資源ID可以(至少部分地)基于由用途提供的信息(例如,每種特定類型的功能、服務(wù)、和/或應(yīng)用)來計算。為了幫助實現(xiàn)這些特征中的某一些,在生成資源ID時可以使用改良的辦法。在此改良的辦法中,資源ID可以僅基于“第二”字符串而并不基于“第一”字符串(例如,發(fā)布節(jié)點ID)。然而,數(shù)據(jù)授權(quán)可以仍然通過將“第一”字符串(例如,發(fā)布節(jié)點ID)與存儲節(jié)點數(shù)據(jù)結(jié)構(gòu)處的資源ID相關(guān)聯(lián)的方式來執(zhí)行。例如,此類授權(quán)可以在協(xié)議階層的用途層面處而不是在覆蓋層面處執(zhí)行。圖6是圖解了可如何在對等覆蓋網(wǎng)絡(luò)中執(zhí)行分布式數(shù)據(jù)存儲和授權(quán)的替換示例的框圖。發(fā)布節(jié)點A 602可以尋求在覆蓋網(wǎng)絡(luò)中存儲可由數(shù)據(jù)名稱標(biāo)識的數(shù)據(jù)(即,數(shù)據(jù)值)。發(fā)布節(jié)點A 602可以具有發(fā)布節(jié)點ID以及(帶有相應(yīng)私鑰Prv-A的)公鑰Pk_A。 證書Cert-A可由發(fā)布節(jié)點A 602從證明實體608獲得,其中證書Cert-A是其公鑰Pk-A的函數(shù)。當(dāng)發(fā)布節(jié)點A 602希望在覆蓋網(wǎng)絡(luò)中存儲數(shù)據(jù)時,其可以作為字符串的函數(shù)生成相關(guān)聯(lián)資源ID。該“字符串”可以是預(yù)定字符串(例如,描述數(shù)據(jù)、用途或數(shù)據(jù)類型的字符串)。在各種示例中,該字符串可以是字母、字母數(shù)字、和/或數(shù)字的符號序列。該字符串還可以是階層結(jié)構(gòu)或者可以是字符串分量的級聯(lián)。發(fā)布節(jié)點A 502還可以根據(jù)Cert-A以及要被存儲的數(shù)據(jù)(例如,通過用Cert-A來簽署數(shù)據(jù)值)來生成簽名Sig-A。存儲請求604可以隨后由發(fā)布節(jié)點A 602生成并發(fā)送。存儲請求604可以包括資源ID、數(shù)據(jù)名稱、數(shù)據(jù)值、發(fā)布節(jié)點ID、公鑰Pk-A以及簽名Sig-A。在此示例中,資源ID可以映射到節(jié)點B 606負(fù)責(zé)的資源空間。一旦接收到存儲請求604,存儲節(jié)點B 606就可以認(rèn)證請求節(jié)點以確定該請求節(jié)點實際上是否是發(fā)布節(jié)點 A 602。這可以通過驗證正確的證書Cert-A對于請求節(jié)點而言是已知的并且是與發(fā)布節(jié)點 ID相關(guān)聯(lián)的方式來達(dá)成。一旦成功驗證了該證書(例如,通過驗證簽名Sig-A),存儲節(jié)點 B 606就可以存儲收到數(shù)據(jù)。在此示例中,利用了數(shù)據(jù)結(jié)構(gòu)614,其包括資源ID字段616、包含數(shù)據(jù)名稱和數(shù)據(jù)值的第二字段618、以及包含發(fā)布節(jié)點ID的第三字段620。在圖6的這個示例中,僅“字符串”被用來生成資源ID。所使用的“字符串”可以與覆蓋網(wǎng)絡(luò)上的數(shù)據(jù)類型或用途相關(guān)聯(lián)。因此,覆蓋網(wǎng)絡(luò)中的任何節(jié)點可以通過生成資源 ID(例如,通過使用合意的字符串)以及搜尋在覆蓋網(wǎng)絡(luò)中具有相同資源ID的所存儲的實例來搜尋和/或?qū)ふ矣糜诖祟愑猛镜乃鎯Φ臄?shù)據(jù)。注意,存儲節(jié)點B 606維持發(fā)布節(jié)點ID 620與資源ID 616和數(shù)據(jù)618分開或者維持發(fā)布節(jié)點ID 620對于資源ID 616和數(shù)據(jù)618而言是私有的。因此,在存儲節(jié)點B 606 可以向請求資源ID 616的搜尋節(jié)點提供對數(shù)據(jù)618的訪問的同時,該存儲節(jié)點B 616還可以防止那些節(jié)點刪除或修改數(shù)據(jù)618,除非那些節(jié)點能夠證明它們知道相關(guān)聯(lián)的發(fā)布節(jié)點 ID和/或經(jīng)認(rèn)證的證書Cert-A。其中認(rèn)證者名稱AuthName不是資源ID的一部分而是取而代之被追加至數(shù)據(jù)部分的這種較低層授權(quán)方案具有允許多個節(jié)點在相同資源ID下存儲數(shù)據(jù)的優(yōu)點。這進(jìn)而使得搜尋節(jié)點更容易在覆蓋網(wǎng)絡(luò)中找到此所存儲的數(shù)據(jù),藉此幫助實現(xiàn)各種類型的服務(wù)。補充地,通過利用用途專有的字符串來生成資源ID,這導(dǎo)致來自特定節(jié)點的不同數(shù)據(jù)在諸存儲節(jié)點之間分發(fā)或散布,藉此達(dá)成負(fù)載平衡功能。然而,作為允許其他節(jié)點容易地搜尋與特定用途相關(guān)聯(lián)的特定類型的數(shù)據(jù)的靈活性的交換,數(shù)據(jù)訪問、存儲和/或移除的授權(quán)是在較低層面(例如,數(shù)據(jù)層面)處而不是在覆蓋層面處執(zhí)行的。示例-與數(shù)據(jù)授權(quán)方案共享資源ID在圖6中所圖解的示例中,由于資源ID可以基于代表用途的預(yù)定義的“字符串”, 因而不同節(jié)點可生成相同資源ID以存儲不同數(shù)據(jù)是可能的。由于諸資源ID映射到特定ID 空間并且此類ID空間被分配在覆蓋網(wǎng)絡(luò)節(jié)點之中,因而相同節(jié)點可能扮演用于相同資源 ID的多個實例的存儲節(jié)點的角色。圖7是圖解了兩個不同的發(fā)布節(jié)點可如何使用對等覆蓋網(wǎng)絡(luò)中的相同資源ID來尋求存儲數(shù)據(jù)的示例的框圖。與圖5和6中的示例類似,第一發(fā)布節(jié)點A 702可以尋求在覆蓋網(wǎng)絡(luò)中存儲數(shù)據(jù)(即,數(shù)據(jù)名稱1和數(shù)據(jù)值1)。發(fā)布節(jié)點A 702可以具有發(fā)布節(jié)點ID1、 (帶有相應(yīng)私鑰Prv-A的)公鑰Pk-A、以及證書Cert-A (該證書Cert-A可以是公鑰Pk-A 的函數(shù)并且與發(fā)布節(jié)點IDl相關(guān)聯(lián))。當(dāng)發(fā)布節(jié)點A 702希望在覆蓋網(wǎng)絡(luò)中存儲數(shù)據(jù)時,其可以作為字符串X的函數(shù)生成相關(guān)聯(lián)資源ID。該“字符串X”可以是預(yù)定字符串(例如,描述用途或數(shù)據(jù)類型的字符串)。在各種示例中,該字符串X可以是字母、字母數(shù)字、和/或數(shù)字的符號序列。該字符串X還可以是階層結(jié)構(gòu)或者可以是字符串分量的級聯(lián)。發(fā)布節(jié)點A 702還可以根據(jù)Cert-A以及要被存儲的數(shù)據(jù)(例如,通過用Cert-A來簽署數(shù)據(jù)值1)來生成簽名Sig-A。第一存儲請求706可以隨后由發(fā)布節(jié)點A 702生成并發(fā)送。存儲請求706 可以包括資源ID、數(shù)據(jù)名稱1、數(shù)據(jù)值1、發(fā)布節(jié)點ID1、公鑰沖-A以及簽名Sig-A。以類似的方式,第二發(fā)布節(jié)點C 704可以具有發(fā)布節(jié)點ID2、(帶有相應(yīng)私鑰
的)公鑰Pk-c、以及證書Cert-C(該證書Cert-C可以是公鑰沖-C的函數(shù)并且與發(fā)布節(jié)點 ID2相關(guān)聯(lián))。當(dāng)發(fā)布節(jié)點C 704希望在覆蓋網(wǎng)絡(luò)中存儲數(shù)據(jù)時,其可以作為字符串X的函數(shù)生成相關(guān)聯(lián)資源ID。注意,因為第二發(fā)布節(jié)點C 704與第一發(fā)布節(jié)點A 702使用相同的字符串X,所以它們的資源ID是相同的。發(fā)布節(jié)點C 704還可以根據(jù)Cert-C以及要被存儲的數(shù)據(jù)(例如,通過用Cert-C來簽署數(shù)據(jù)值1)來生成簽名Sig-C。第二存儲請求708可以隨后由發(fā)布節(jié)點A 702生成并發(fā)送。第二存儲請求708可以包括資源ID、數(shù)據(jù)名稱2、數(shù)據(jù)值2、發(fā)布節(jié)點ID2、公鑰Hi-C以及簽名Sig-C。存儲節(jié)點B 710接收存儲請求706和708兩者并且可以認(rèn)證發(fā)布節(jié)點702和704。 一旦得到認(rèn)證,存儲節(jié)點B 710就可將收到數(shù)據(jù)存儲在可以存儲具有相同資源ID 714的不同數(shù)據(jù)716和720的數(shù)據(jù)結(jié)構(gòu)712中。在此示例中,資源ID 714的每個數(shù)據(jù)實例716和720 具有指示擁有該數(shù)據(jù)實例的節(jié)點的相關(guān)聯(lián)發(fā)布節(jié)點718和722。因此,在存儲節(jié)點B 710可以向請求資源ID 714的搜尋節(jié)點提供對數(shù)據(jù)實例716和720的訪問的同時,該存儲節(jié)點B 720還可以防止節(jié)點刪除或修改數(shù)據(jù)716和720,除非這些節(jié)點可以證明它們知道(關(guān)于數(shù)據(jù)實例716的)發(fā)布節(jié)點IDl 718和/或(關(guān)于數(shù)據(jù)實例720的)發(fā)布節(jié)點ID2 722。增強型數(shù)據(jù)授權(quán)在各種實現(xiàn)中,用來生成資源ID的“字符串”可以基于特定的用途定義的字符串和/或節(jié)點/用戶名或標(biāo)識符。在一個示例中,資源ID可以至少部分地是資源名稱的函數(shù)。圖8是圖解了發(fā)布節(jié)點可如何為覆蓋層面數(shù)據(jù)存儲授權(quán)生成覆蓋網(wǎng)絡(luò)中的資源 ID的示例的框圖。在一個示例中,數(shù)據(jù)授權(quán)可以基于要被用來計算資源名稱的經(jīng)證明的用戶名或者節(jié)點ID。實質(zhì)上,此類用于生成資源ID的機(jī)制的使用允許存儲節(jié)點驗證數(shù)據(jù)所有者(即,發(fā)布節(jié)點)得到授權(quán)以在該位置處進(jìn)行存儲。另外,每個用途也可被允許定義其自
19己的用于數(shù)據(jù)授權(quán)的規(guī)則。這使得數(shù)據(jù)授權(quán)模型取決于用途,從而導(dǎo)致其自身需要同類用途支持以及關(guān)于覆蓋網(wǎng)絡(luò)的用途更新標(biāo)志日。在一個實現(xiàn)中,數(shù)據(jù)授權(quán)可以按允許覆蓋層面處的獨立存儲授權(quán)操作的方式來達(dá)成。首先,諸如經(jīng)證明的用戶名或者發(fā)布節(jié)點的節(jié)點ID之類的第一字符串被定義(802)。接下來,第二字符串(例如,用途專有的字符串(用途字符串(UsageMring)))被獲得(804)。 在一個示例中,第二字符串可以由給定用途來提供或者默認(rèn)為用途ID??呻S意任選地,隨后可獲得資源名稱(806),其中該資源名稱包括兩個部分——第一字符串和第二字符串。在一個示例中,這兩個部分可以由分隔符“”分隔開或者以其他方式組合。隨后作為資源名稱的散列生成(808)資源ID,以使得資源ID =散列(資源名稱)=散列(第一字符串第二字符串)。作為示例,資源ID可以是散列(aliceOexample. dht. org: sip),其中第一字符串(例如,發(fā)布節(jié)點標(biāo)識符)^"aliceiexample. dht. org”,而第二字符串為“sip”(例如,用途類型)。發(fā)布節(jié)點還可以生成第一字符串的、第一字符串和第二字符串的、或者第一字符串和第二字符串以及其他值的數(shù)字簽名Sig-D 810。發(fā)布節(jié)點可以隨后生成包括資源ID、要被存儲的數(shù)據(jù)、第一字符串以及數(shù)字簽名 Sig-D的存儲請求812。注意,其他信息也可被包括為存儲請求的一部分。此存儲請求可被發(fā)送給覆蓋網(wǎng)絡(luò)中負(fù)責(zé)該資源ID的ID空間的存儲節(jié)點或者由該存儲節(jié)點接收。圖9是圖解了存儲節(jié)點可如何為覆蓋層面數(shù)據(jù)存儲授權(quán)驗證覆蓋網(wǎng)絡(luò)中的資源 ID的示例的框圖。存儲節(jié)點可接收包括資源ID、數(shù)據(jù)、第一字符串以及簽名Sig-D的存儲請求902。注意,其他信息也可被包括為存儲請求的一部分。存儲請求902可以如圖8中所圖解的那樣被生成。為了驗證收到資源ID是有效地生成的,接收存儲節(jié)點可以通過獲得 (可在存儲請求中接收到的)第一字符串902以及與要被存儲的數(shù)據(jù)相關(guān)聯(lián)的第二字符串 (例如,用途專有的字符串)906來驗證該資源ID。隨后,使用所獲得的第一字符串和第二字符串來生成資源名稱的本地實例908。隨后,從資源名稱的散列生成資源ID的本地實例 910。為了驗證收到資源ID 912,將資源ID的本地計算出的實例與在存儲請求中接收到的資源ID相比較(914)。如果它們匹配,那么該存儲請求被接受并且收到數(shù)據(jù)被存儲(916), 否則該存儲請求被拒絕(918)。注意,使用這種形式的資源ID生成的數(shù)據(jù)訪問授權(quán)(其依賴于AuthName和^ageString兩者)可被稱為頂層授權(quán),因為認(rèn)證數(shù)據(jù)存儲所需要的信息被包括為資源ID的一部分。在某一些實例中,用途可能對于在不具有關(guān)于用戶名或節(jié)點ID的先驗知識的情況下允許查詢或者搜尋其數(shù)據(jù)是感興趣的。因為搜尋節(jié)點可能不知道發(fā)布節(jié)點的第一字符串(例如,用戶名和/或節(jié)點ID),所以生成不將第一字符串包括為資源ID或資源名稱的一部分的資源ID是合乎需要的。圖10是圖解了發(fā)布節(jié)點可如何為用途層面數(shù)據(jù)存儲授權(quán)生成覆蓋網(wǎng)絡(luò)中的資源 ID的替換示例的框圖。在此示例中,可在較低層面處提供數(shù)據(jù)授權(quán)。即,雖然發(fā)布節(jié)點可以定義認(rèn)證者名稱AuthName 1002以及用途專有的字符串UsageMring 1004,但是資源名稱1006僅是作為UsageMring的函數(shù)而生成的。隨后,可作為資源名稱1006的函數(shù)生成資源ID 1008。在此示例中,數(shù)字簽名Sig-D可以通過簽署AuthName和/或^ageString 和/或其他值來生成。發(fā)布節(jié)點可以隨后生成包括資源ID、要被存儲的數(shù)據(jù)、認(rèn)證者的名稱 AuthName以及數(shù)字簽名Sig-D的存儲請求1012。注意,其他信息也可被包括為存儲請求的一部分。此存儲請求1012可被發(fā)送給覆蓋網(wǎng)絡(luò)中負(fù)責(zé)該資源ID的ID空間的存儲節(jié)點或者由該存儲節(jié)點接收。圖11是圖解了存儲節(jié)點可如何為用途層面數(shù)據(jù)存儲授權(quán)驗證覆蓋網(wǎng)絡(luò)中的資源 ID的示例的框圖。存儲節(jié)點可接收包括資源ID、數(shù)據(jù)、認(rèn)證者名稱AuthName以及簽名Sig-D 的存儲請求1102。注意,其他信息也可被包括為存儲請求的一部分。存儲請求1102可以如圖10中所圖解的那樣被生成。為了驗證收到資源ID是有效地生成的,接收存儲節(jié)點可通過獲得與要被存儲的數(shù)據(jù)的用途相關(guān)聯(lián)的用戶專有的字符串UsageMring 1104來驗證該資源ID。隨后,使用用途字符串Usag必tring來生成資源名稱的本地實例1106。隨后,從資源名稱的散列生成資源ID的本地實例1108。為了驗證收到資源ID 1110,將資源ID的本地計算出的實例與在存儲請求中接收到的資源ID相比較(1114)。如果它們不匹配,那么該存儲請求被拒絕(1118)。
在存儲請求嘗試覆寫、刪除或者修改當(dāng)前所存儲的并且與相同資源ID相關(guān)聯(lián)的數(shù)據(jù)的情形中,存儲節(jié)點可以進(jìn)一步驗證認(rèn)證者的名稱AuthName 1112。即,存儲節(jié)點可以驗證收到存儲請求來自得到授權(quán)以替換這樣的數(shù)據(jù)的一方(例如,知道AuthName或者相關(guān)聯(lián)的經(jīng)證明的證書的一方)。如果確定當(dāng)前存儲請求來自與相同資源ID下先前所存儲的數(shù)據(jù)相同的發(fā)布節(jié)點,那么新接收到的數(shù)據(jù)可被存儲(1116),以使得該數(shù)據(jù)替換或者被添加至先前所存儲的數(shù)據(jù)。否則,如果確定當(dāng)前存儲請求來自(與相同資源ID下先前所存儲的數(shù)據(jù))不同的發(fā)布節(jié)點,那么該存儲請求可以被接受但是將不替換、修改或者刪除先前所存儲的數(shù)據(jù)。取而代之,可在相同的資源ID下但是用與該存儲請求相關(guān)聯(lián)的不同的 AuthName來存儲(1120)新的數(shù)據(jù)(如圖7中所圖解的那樣,數(shù)據(jù)結(jié)構(gòu)712)。注意,使用這種形式的資源ID生成的數(shù)據(jù)訪問授權(quán)(其依賴于^ageString)可被稱為低層面(例如, 用途層面、數(shù)據(jù)層面或值層面)授權(quán),因為授權(quán)數(shù)據(jù)存儲所需要的信息沒有包括為資源ID 的一部分。利用此低層面(或值層面)數(shù)據(jù)授權(quán),覆蓋網(wǎng)絡(luò)中的數(shù)據(jù)搜尋可以在不知道用戶名或節(jié)點ID的情況下執(zhí)行,藉此幫助實現(xiàn)數(shù)據(jù)發(fā)現(xiàn)。為了支持此雙層面授權(quán)(即,在較高層面處對基于用途的資源ID的授權(quán)以及在較低層面處對認(rèn)證者的名稱的授權(quán)),協(xié)議(例如,存儲請求或數(shù)據(jù)訪問請求)可以允許用信號通知使用中的恰適授權(quán)類型的能力。覆蓋網(wǎng)絡(luò)中的存儲語義的改進(jìn)存儲和移除請求處理某一些覆蓋網(wǎng)絡(luò)服務(wù)可能要求接收存儲/移除請求的存儲節(jié)點驗證種類ID (該ID 是該請求中的一部分)對于該存儲節(jié)點而言是已知的并且相應(yīng)的數(shù)據(jù)模型是正確的。這假定該存儲節(jié)點支持與該存儲請求的數(shù)據(jù)相關(guān)聯(lián)的完全相同的用途,這可能未必如此。為了容適本文中所描述的數(shù)據(jù)存儲授權(quán)技術(shù)(其中存儲節(jié)點不需要支持特定的用途),存儲節(jié)點可以忽略存儲請求中的種類ID檢查。存儲節(jié)點可以基于本地策略來提供對與其支持的用途相對應(yīng)的數(shù)據(jù)的偏好。然而,這樣的本地決定可能落在覆蓋協(xié)議本身的范圍之外。相關(guān)數(shù)據(jù)的存儲和檢索使用本文中所描述的資源ID計算,與給定用途以及給定用戶/節(jié)點相對應(yīng)的數(shù)據(jù)可以與特定的資源ID相關(guān)聯(lián)并且被存儲在負(fù)責(zé)此類資源ID的存儲節(jié)點處。諸用途可以通過向資源名稱中的用途專有的數(shù)據(jù)提供不同的語義的方式在多個存儲節(jié)點之間平均散布數(shù)據(jù)存儲。例如,替代將“sip:aliCe@example. dht.org”用作資源名稱,發(fā)布節(jié)點可以將 "sipaor:aliceiexample. dht. org”等用作資源名稱。在此示例中,用途專有的語義“sip” 被改成“sipaor”。某一些覆蓋網(wǎng)絡(luò)可以允許在與用戶名和/或節(jié)點ID的散列相對應(yīng)的資源ID處存儲與該用戶名或節(jié)點ID相對應(yīng)的證書。這本身是有用的;然而,如果證書可被存儲在與SIP記錄地址(AOR)相同的地方,那也是有用的。有兩種可達(dá)成這一點的方法。SIP 用途可指定也可被存儲在資源ID處的證書種類。替換地,該SIP用途可被建模為資源ID 以及相應(yīng)值在可能不擁有該資源ID的節(jié)點處的目標(biāo)存儲。這將允許在相同資源ID處存儲與多個用途相對應(yīng)的數(shù)據(jù)的節(jié)點(或者是因為該節(jié)點選擇不進(jìn)行授權(quán)或者是因為該節(jié)點簡單地作為其節(jié)點標(biāo)識符或認(rèn)證者名稱的散列來計算其資源ID)僅存儲證書的一個實例, 即使多個用途使用該證書亦然。然而,在此時此刻,期望每個用途均定義所有需要的相關(guān)數(shù)據(jù)種類以使得那些對象可相對容易地被存儲在相同的資源ID處看來是合理的。被適配成生成和發(fā)送存儲請求的發(fā)布節(jié)點的示例圖12圖解了被適配成請求在覆蓋網(wǎng)絡(luò)中進(jìn)行數(shù)據(jù)存儲的發(fā)布設(shè)備或節(jié)點1200的示例。發(fā)布節(jié)點1200可以例如是圖1的覆蓋網(wǎng)絡(luò)中的節(jié)點104。發(fā)布節(jié)點1200可以包括耦合至存儲設(shè)備1250和網(wǎng)絡(luò)通信接口 1220的存儲授權(quán)處理器1230。在一個示例中,發(fā)布節(jié)點1200可以生成允許覆蓋層面處的獨立授權(quán)的數(shù)據(jù)存儲請求。在另一示例中,發(fā)布節(jié)點 1200可以生成允許用途層面處的獨立授權(quán)的數(shù)據(jù)存儲請求。發(fā)布節(jié)點1200可以希望在覆蓋網(wǎng)絡(luò)上存儲來自數(shù)據(jù)存儲設(shè)備1250的數(shù)據(jù)。對數(shù)據(jù)存儲的請求可以由存儲授權(quán)處理器 1230來生成并且經(jīng)由網(wǎng)絡(luò)通信接口 1220在覆蓋網(wǎng)絡(luò)上發(fā)送。存儲授權(quán)處理器1230可包括資源ID生成器1234、簽名生成器1M0、認(rèn)證者名稱生成器1M2、以及授權(quán)類型模塊1232。 在某一些實現(xiàn)中,存儲授權(quán)處理器1230可以由一個或更多個處理器、處理電路、和/或模塊來實現(xiàn)。授權(quán)類型模塊1232可以確定哪種類型的授權(quán)對于特定的存儲請求(或者數(shù)據(jù)訪問請求)而言是恰適的并且為該恰適類型的授權(quán)選擇規(guī)程。例如,特定用途可能要求覆蓋層面授權(quán)(例如,頂層授權(quán)),而其他一些用途可能要求用途層面授權(quán)(例如諸如值層面或數(shù)據(jù)層面授權(quán)之類的較低層授權(quán))。在使用覆蓋層面授權(quán)的情形中,授權(quán)類型模塊1232可以使資源ID生成器1234基于第一字符串1238(例如,發(fā)布節(jié)點ID或者認(rèn)證者名稱)和第二字符串1236(例如,用途字符串)來生成資源ID。所生成的資源ID被用來標(biāo)識要通過存儲請求被存儲的數(shù)據(jù)。該資源ID還可用于確定覆蓋網(wǎng)絡(luò)中的哪個存儲節(jié)點將存儲存儲請求中的數(shù)據(jù)。簽名生成器 1240可用于基于第一 /第二字符串和/或要藉由存儲請求被存儲的數(shù)據(jù)生成簽名;所生成的簽名可被包括為該存儲請求的一部分。補充地,節(jié)點證明模塊12M可用于生成唯一性地標(biāo)識或者認(rèn)證發(fā)布節(jié)點1200的證書。在各種示例中,節(jié)點證明模塊12M可通過自認(rèn)證的方式或者經(jīng)由采用證明實體的外部認(rèn)證過程來生成該證書。此類證書可用于保護(hù)并且隨后認(rèn)證存儲請求中的資源標(biāo)識符。在使用用途層面授權(quán)(例如,數(shù)據(jù)層面或值層面授權(quán))的情形中,授權(quán)類型模塊 1232可使資源ID生成器1234僅基于第二字符串1236 (例如,用途字符串)而不使用第一字符串1238(例如,發(fā)布節(jié)點標(biāo)識符或認(rèn)證者名稱)來生成資源ID。所生成的資源ID被用來標(biāo)識要通過存儲請求被存儲的數(shù)據(jù)。在此示例中,第一字符串1238(例如,發(fā)布節(jié)點標(biāo)識符或授權(quán)名稱)可被追加為數(shù)據(jù)的一部分。在這兩個示例中,或者與存儲請求一起或者單獨地將(指示經(jīng)證明的發(fā)布節(jié)點正授權(quán)存儲請求的)授權(quán)戳記發(fā)送給存儲節(jié)點。例如,存儲請求中使用的證書的公鑰或者驗證可由該存儲節(jié)點獲得。圖13是圖解了在發(fā)布節(jié)點中操作的用于幫助實現(xiàn)覆蓋層面處的獨立存儲授權(quán)的方法的示例的流程圖。在一個實施例中,本文中所描述的步驟可由圖12中所圖解的模塊或設(shè)備中的一個或更多個來執(zhí)行。發(fā)布節(jié)點可以獲得與該發(fā)布節(jié)點相關(guān)聯(lián)的經(jīng)證明的第一字符串(例如,節(jié)點標(biāo)識符或者認(rèn)證者名稱)(130 。發(fā)布節(jié)點還可以獲得第二字符串(例如,任意字符串或者與要被存儲的用途類型或數(shù)據(jù)類型相關(guān)聯(lián)的字符串)(1304)。在一個示例中,第二字符串可以是關(guān)于覆蓋網(wǎng)絡(luò)內(nèi)的服務(wù)的預(yù)定義字符串。如果實現(xiàn)覆蓋層面授權(quán), 那么可以作為第一字符串和第二字符串的函數(shù)生成資源標(biāo)識符(1306),其中第一字符串可由存儲節(jié)點獨立認(rèn)證并且該資源標(biāo)識符可由該存儲節(jié)點驗證。對存儲請求的授權(quán)可在協(xié)議階層的覆蓋層面處驗證,其中該覆蓋層面低于協(xié)議階層中的用途層面。替換地,如果實現(xiàn)用途層面授權(quán),那么可以作為第二字符串的函數(shù)生成資源標(biāo)識符(1308)。在此情形中,存儲節(jié)點可以在覆蓋層面處驗證資源標(biāo)識符,但是對存儲請求的授權(quán)可以在協(xié)議階層的用途層面處來驗證,其中該用途層面高于協(xié)議階層中的覆蓋層面。即,如果資源標(biāo)識符僅是第二字符串的函數(shù),那么多個發(fā)布節(jié)點可以為要被存儲的不同數(shù)據(jù)生成相同的資源標(biāo)識符。因此,存儲節(jié)點可以(在覆蓋層面處)驗證資源標(biāo)識符是基于正確的第二字符串有效地生成的,但是可以在用途層面處使用與所存儲的數(shù)據(jù)相關(guān)聯(lián)的(標(biāo)識發(fā)布節(jié)點的)第一字符串來執(zhí)行存儲授權(quán)(以區(qū)分由不同的發(fā)布節(jié)點使用相同的資源標(biāo)識符存儲的數(shù)據(jù))。在一個示例中,用來生成資源標(biāo)識符的函數(shù)可以是散列函數(shù)。發(fā)布節(jié)點還可以基于用經(jīng)認(rèn)證的關(guān)于發(fā)布節(jié)點的密鑰(例如,證書或私鑰)簽署了的第一字符串、第二字符串、和/或要被存儲的數(shù)據(jù)來生成簽名(1310)。在一個示例中,經(jīng)認(rèn)證的密鑰可以是私鑰、 自生成的證書、或者認(rèn)證發(fā)布節(jié)點的第三方證書。隨后,可以生成包括資源標(biāo)識符以及要被存儲的數(shù)據(jù)的存儲請求(131 。該存儲請求還可以包括第一字符串、第二字符串、和/或簽名。隨后,可在覆蓋網(wǎng)絡(luò)上將該存儲請求發(fā)送給存儲節(jié)點,其中該存儲節(jié)點負(fù)責(zé)包括該資源標(biāo)識符的標(biāo)識符空間(1314)。補充地,發(fā)布節(jié)點可以生成多個不同的資源標(biāo)識符,其中該多個不同的資源標(biāo)識符中的每一個(在覆蓋層面授權(quán)的情形中)是第一字符串與不同的第二字符串的組合的函數(shù)或者(在用途層面授權(quán)的情形中)僅是這些第二字符串的函數(shù)。通過使用第二字符串來生成不同的資源標(biāo)識符,在其中不同的存儲節(jié)點負(fù)責(zé)不同的標(biāo)識符空間的覆蓋網(wǎng)絡(luò)內(nèi)達(dá)成了數(shù)據(jù)存儲負(fù)載擴(kuò)展。被適配成接收和授權(quán)存儲請求的存儲節(jié)點的示例圖14圖解了用于在覆蓋網(wǎng)絡(luò)中存儲數(shù)據(jù)同時執(zhí)行數(shù)據(jù)存儲授權(quán)的存儲節(jié)點的示例。存儲節(jié)點1400可以允許在覆蓋層面處對數(shù)據(jù)存儲進(jìn)行獨立授權(quán)。存儲節(jié)點1400可以包括存儲授權(quán)處理器1430、網(wǎng)絡(luò)通信接口 1420、以及存儲設(shè)備1450。對數(shù)據(jù)存儲的存儲請求可以經(jīng)由網(wǎng)絡(luò)通信接口 1420從覆蓋網(wǎng)絡(luò)中的發(fā)布節(jié)點接收。在一個示例中,該存儲請求可以包括資源ID、數(shù)據(jù)、認(rèn)證者名稱以及簽名。網(wǎng)絡(luò)通信接口將該請求傳達(dá)給存儲授權(quán)處理器1430,該存儲授權(quán)處理器1430審閱該請求以確定發(fā)送該存儲請求的發(fā)布節(jié)點是否得到授權(quán)以在存儲節(jié)點1400處存儲數(shù)據(jù)。存儲授權(quán)處理器1430尤其可以包括授權(quán)類型模塊 1432、資源ID驗證器1434、簽名驗證器1440以及認(rèn)證者名稱驗證器1442。授權(quán)類型模塊1432可以確定哪種類型的授權(quán)對于特定的存儲請求而言是恰適的。例如,存儲請求可以發(fā)信號通知要被用于要存儲的數(shù)據(jù)的授權(quán)類型。至少有兩種可使用的授權(quán)類型——覆蓋層面授權(quán)以及數(shù)據(jù)層面或值層面授權(quán)。在覆蓋層面授權(quán)中,資源ID可以與第一字符串(例如,發(fā)布節(jié)點標(biāo)識符、認(rèn)證者名稱、等等)和第二字符串(例如,任意字符串、預(yù)定義字符串、等等)相關(guān)聯(lián)或者是該第一和第二字符串的函數(shù)。因此,資源ID驗證器1434可以利用第一字符串1438和/或第二字符串1436(兩者都可以在存儲請求中接收或者以其他方式被提供或指示給存儲節(jié)點1400)來確定該請求是否得到授權(quán)。在此情形中,“授權(quán)”表示檢查資源ID是有效地生成的并且第一字符串(例如,發(fā)布節(jié)點標(biāo)識符或者認(rèn)證者名稱)是經(jīng)認(rèn)證的(例如,以使得所存儲的數(shù)據(jù)可以唯一性地與發(fā)布節(jié)點相關(guān)聯(lián))。在用途層面授權(quán)(例如,數(shù)據(jù)層面或值層面授權(quán))中,資源ID可以與(可與要被存儲的用途類型或數(shù)據(jù)類型相關(guān)聯(lián)的)第二字符串1436相關(guān)聯(lián)或者是第二字符串1436的函數(shù)。因此,資源ID驗證器1434可以利用第二字符串1436來確定資源ID是否是有效地生成的。補充地,對于用途層面處的存儲授權(quán)而言,認(rèn)證者名稱驗證器1442可以驗證存儲請求的第一字符串(發(fā)布節(jié)點標(biāo)識符或者認(rèn)證者名稱)。注意,第一字符串可被用來確定與先前所存儲的數(shù)據(jù)具有相同資源ID的存儲請求是否應(yīng)該替換先前所存儲的數(shù)據(jù)或者其是否應(yīng)該分開存儲。類似地,簽名驗證器1440可驗證存儲請求的簽名。圖15 (包括圖15A和15B)圖解了在存儲節(jié)點中操作的用于在覆蓋層面處執(zhí)行獨立存儲授權(quán)的方法的示例。存儲節(jié)點接收要在對等覆蓋網(wǎng)絡(luò)中存儲數(shù)據(jù)的第一存儲請求, 該第一存儲請求包括第一資源標(biāo)識符和要被存儲的第一數(shù)據(jù),其中,第一資源標(biāo)識符是第二字符串與可被認(rèn)證的第一字符串的組合的函數(shù)(150 。該存儲請求可以例如包括資源標(biāo)識符、要被存儲的數(shù)據(jù)、第一字符串(例如,發(fā)布節(jié)點標(biāo)識符、認(rèn)證者名稱)、第二字符串、 和/或?qū)Φ谝?第二字符串和/或要被存儲的數(shù)據(jù)的簽名。取決于正被使用的授權(quán)類型, 資源標(biāo)識符可以是第一字符串和/或第二字符串的函數(shù)。在一個示例中,第一字符串可以是發(fā)布節(jié)點標(biāo)識符,而第二字符串是任意字符串。在另一示例中,第一字符串是發(fā)布節(jié)點標(biāo)識符,而第二字符串是關(guān)于覆蓋網(wǎng)絡(luò)內(nèi)的服務(wù)的預(yù)定義字符串。在覆蓋層面授權(quán)中,驗證資源標(biāo)識符是第一字符串和第二字符串的函數(shù)(1506)。 即,存儲節(jié)點可以計算資源標(biāo)識符的本地版本以驗證收到資源標(biāo)識符。如果該資源標(biāo)識符被成功驗證,那么第一數(shù)據(jù)被存儲并且與第一資源標(biāo)識符相關(guān)聯(lián)(1508)。否則,該請求被拒絕。在一個示例中,在覆蓋層面處執(zhí)行獨立的存儲授權(quán)可包括(a)認(rèn)證第一字符串,和/ 或(b)確定第一資源標(biāo)識符是否是第一字符串與第二字符串的組合的函數(shù)。存儲節(jié)點可隨后接收對所存儲的第一數(shù)據(jù)的數(shù)據(jù)訪問請求(1510)。對第一數(shù)據(jù)的訪問等級可隨后被確定(1512)。如果該數(shù)據(jù)訪問請求證明知道第一資源標(biāo)識符和第一字符串,那么對所存儲的第一數(shù)據(jù)的訪問可被準(zhǔn)予(1516)。這樣的訪問可包括對第一數(shù)據(jù)的寫訪問、修改訪問和/或刪除訪問。準(zhǔn)予對所存儲的第一數(shù)據(jù)的訪問還可包括允許用第二數(shù)據(jù)來替換第一數(shù)據(jù)。如果該數(shù)據(jù)訪問請求證明知道第一資源標(biāo)識符但是不能證明知道第一字符串,那么對所存儲的第一數(shù)據(jù)的只讀訪問可被準(zhǔn)予(1514)。注意,如果該訪問請求既不能證明知道資源標(biāo)識符又不能證明知道第一字符串,那么對第一數(shù)據(jù)的訪問可被拒絕。圖16 (包括圖16A和16B)圖解了在存儲節(jié)點中操作的用于在用途層面處執(zhí)行獨立存儲授權(quán)的方法的示例。存儲節(jié)點接收要在對等覆蓋網(wǎng)絡(luò)中存儲數(shù)據(jù)的第一存儲請求, 該第一存儲請求包括第一資源標(biāo)識符、要被存儲的第一數(shù)據(jù)、以及第一發(fā)布節(jié)點標(biāo)識符,其中存儲節(jié)點負(fù)責(zé)包括第一資源標(biāo)識符的標(biāo)識符空間(1602)。第一資源標(biāo)識符可以是與要被存儲的數(shù)據(jù)的類型相關(guān)聯(lián)的用途字符串的函數(shù)。例如,第一資源標(biāo)識符可以是關(guān)于覆蓋網(wǎng)絡(luò)內(nèi)的服務(wù)的預(yù)定義字符串的函數(shù)。補充地,存儲節(jié)點還可以接收要在對等覆蓋網(wǎng)絡(luò)中存儲數(shù)據(jù)的第二存儲請求, 該第二存儲請求包括第一資源標(biāo)識符、要被存儲的第二數(shù)據(jù)、以及第二發(fā)布節(jié)點標(biāo)識符 (1604)。獨立的存儲授權(quán)可在協(xié)議階層的用途層面處執(zhí)行,其中該用途層面高于協(xié)議階層中的覆蓋層面(1606)。第一數(shù)據(jù)和第一發(fā)布節(jié)點標(biāo)識符可被存儲并且與第一資源標(biāo)識符相關(guān)聯(lián)(1608)。第二數(shù)據(jù)和第二發(fā)布節(jié)點標(biāo)識符也可被存儲并且與第一資源標(biāo)識符相關(guān)聯(lián) (1610)。隨后,存儲節(jié)點可接收對與第一資源標(biāo)識符相關(guān)聯(lián)的數(shù)據(jù)的數(shù)據(jù)訪問請求 (1612)。可為該數(shù)據(jù)訪問請求確定對所存儲的數(shù)據(jù)的訪問等級(1614)。缺省情況下,可準(zhǔn)予對所存儲的第一數(shù)據(jù)和第二數(shù)據(jù)的只讀訪問(1616)。然而,如果該數(shù)據(jù)訪問請求證明知道第一發(fā)布節(jié)點標(biāo)識符,那么對所存儲的第一數(shù)據(jù)的寫訪問可被準(zhǔn)予(1618)。類似地,如果該數(shù)據(jù)訪問請求證明知道第二發(fā)布節(jié)點標(biāo)識符,那么對所存儲的第二數(shù)據(jù)的寫訪問可被準(zhǔn)予(1620)。應(yīng)認(rèn)識到,一般而言,本公開中所描述的絕大多數(shù)處理可以用類似的方式來實現(xiàn)。 (諸)電路或電路工段中的任何哪個可單獨或組合實現(xiàn)為具有一個或更多個處理器的集成電路的一部分。這些電路中的一個或更多個可以在集成電路、先進(jìn)RISC機(jī)(ARM)處理器、 數(shù)字信號處理器(DSP)、通用處理器等上實現(xiàn)。還應(yīng)注意,這些實施例可能是作為被描繪為流程圖、流圖、結(jié)構(gòu)圖、或框圖的過程來描述的。盡管流程圖可能會把諸操作描述為順序過程,但是這些操作中有許多能夠并行或并發(fā)執(zhí)行。另外,這些操作的次序可以被重新安排。過程在其操作完成時終止。過程可以對應(yīng)于方法、函數(shù)、規(guī)程、子例程、子程序等。當(dāng)過程對應(yīng)于函數(shù)時,其終止對應(yīng)于該函數(shù)返回到調(diào)用方函數(shù)或主函數(shù)。如在本申請中所使用的,術(shù)語“組件”、“模塊”、“系統(tǒng)”等旨在指示計算機(jī)相關(guān)實體,任其是硬件、固件、軟硬件組合、軟件,還是執(zhí)行中的軟件。例如,組件可以是但不被限定于在處理器上運行的進(jìn)程、處理器、對象、可執(zhí)行件、執(zhí)行的線程、程序、和/或計算機(jī)。作為解說,在計算設(shè)備上運行的應(yīng)用和該計算設(shè)備兩者皆可以是組件。一個或更多個組件可駐留在進(jìn)程和/或執(zhí)行的線程中,且組件可以局部化在一臺計算機(jī)上和/或分布在兩臺或更多臺計算機(jī)之間。此外,這些組件能從其上存儲著各種數(shù)據(jù)結(jié)構(gòu)的各種計算機(jī)可讀介質(zhì)來執(zhí)行。各組件可借助于本地和/或遠(yuǎn)程過程來通信,諸如根據(jù)具有一個或更多個數(shù)據(jù)分組的信號(例如,來自借助于該信號與本地系統(tǒng)、分布式系統(tǒng)中的另一組件交互、和/或跨諸如因特網(wǎng)等網(wǎng)絡(luò)上與其它系統(tǒng)交互的一個組件的數(shù)據(jù))。不僅如此,存儲介質(zhì)可以代表用于存儲數(shù)據(jù)的一個或更多個設(shè)備,包括只讀存儲
25器(ROM)、隨機(jī)存取存儲器(RAM)、磁盤存儲介質(zhì)、光學(xué)存儲介質(zhì)、閃存設(shè)備、和/或其他用于存儲信息的機(jī)器可讀介質(zhì)。術(shù)語“機(jī)器可讀介質(zhì)”包括,但不被限定于,便攜或固定的存儲設(shè)備、光學(xué)存儲設(shè)備、無線信道以及能夠存儲、包含或承載指令和/或數(shù)據(jù)的各種其它介質(zhì)。此外,諸實施例可以由硬件、軟件、固件、中間件、微代碼、或其任何組合來實現(xiàn)。當(dāng)在軟件、固件、中間件或微碼中實現(xiàn)時,執(zhí)行必要任務(wù)的程序代碼或代碼段可被存儲在諸如存儲介質(zhì)或其它存儲之類的機(jī)器可讀介質(zhì)中。處理器可以執(zhí)行這些必要的任務(wù)。代碼段可表示規(guī)程、函數(shù)、子程序、程序、例程、子例程、模塊、軟件包、類,或是指令、數(shù)據(jù)結(jié)構(gòu)、或程序語句的任何組合。通過傳遞和/或接收信息、數(shù)據(jù)、自變量、參數(shù)、或存儲器內(nèi)容,一代碼段可被耦合到另一代碼段或硬件電路。信息、自變量、參數(shù)、數(shù)據(jù)等可以經(jīng)由包括存儲器共享、 消息傳遞、令牌傳遞、網(wǎng)絡(luò)傳輸?shù)热魏魏线m的手段被傳遞、轉(zhuǎn)發(fā)、或傳輸。附圖中所圖解的組件、步驟、和/或功能中的一個或更多個可以被重新編排和/或組合成單個組件、步驟、或功能,或可以實施在數(shù)個組件、步驟、或功能中而不會影響偽隨機(jī)數(shù)生成的操作。還可添加更多的元件、組件、步驟、和/或功能而不會脫離本發(fā)明。附圖中所圖解的裝置、設(shè)備和/或組件可以被配置成執(zhí)行在這些附圖中所描述的方法、特征、或步驟中的一個或更多個。本文中描述的新穎算法可以在軟件和/或嵌入式硬件中高效率地實現(xiàn)。本領(lǐng)域技術(shù)人員將可進(jìn)一步領(lǐng)會,結(jié)合本文中公開的實施例描述的各種解說性邏輯框、模塊、電路、和算法步驟可被實現(xiàn)為電子硬件、計算機(jī)軟件、或兩者的組合。為清楚地解說硬件和軟件的這種可互換性,各種解說性組件、塊、模塊、電路、和步驟在上文中以其功能性的形式進(jìn)行了一般化描述。這樣的功能性是實現(xiàn)成硬件還是軟件取決于具體應(yīng)用和加諸整體系統(tǒng)上的設(shè)計約束。本文中所描述的本發(fā)明的各方面可實現(xiàn)于不同系統(tǒng)中而不背離本發(fā)明。例如,本發(fā)明的一些實現(xiàn)可用移動或靜態(tài)通信設(shè)備(例如,接入終端)和多個移動或靜態(tài)基站(例如,接入點)執(zhí)行。應(yīng)注意,以上實施例僅是示例,且并不被解釋成限定本發(fā)明。這些實施例的描述旨在解說,而并非旨在限定權(quán)利要求的范圍。由此,本發(fā)明的教導(dǎo)能現(xiàn)成地應(yīng)用于其他類型的裝置,并且許多替換、改動、和變形對于本領(lǐng)域技術(shù)人員將是明顯的。
權(quán)利要求
1.一種在對等覆蓋網(wǎng)絡(luò)中的發(fā)布節(jié)點處操作以存儲數(shù)據(jù)的方法,包括作為第一字符串與第二字符串的組合的函數(shù)生成資源標(biāo)識符,其中所述第一字符串可由存儲節(jié)點獨立認(rèn)證并且所述資源標(biāo)識符可由所述存儲節(jié)點驗證;生成包括所述資源標(biāo)識符以及要被存儲的數(shù)據(jù)的存儲請求;以及在覆蓋網(wǎng)絡(luò)上發(fā)送所述存儲請求以被存儲在所述存儲節(jié)點處,其中所述存儲節(jié)點負(fù)責(zé)包括所述資源標(biāo)識符的標(biāo)識符空間。
2.如權(quán)利要求1所述的方法,其特征在于,所述第一字符串是發(fā)布節(jié)點標(biāo)識符并且所述第二字符串是任意的字符串。
3.如權(quán)利要求1所述的方法,其特征在于,所述第一字符串是發(fā)布節(jié)點標(biāo)識符并且所述第二字符串是關(guān)于所述覆蓋網(wǎng)絡(luò)內(nèi)的服務(wù)的預(yù)定義字符串。
4.如權(quán)利要求1所述的方法,其特征在于,對所述存儲請求的授權(quán)可在協(xié)議階層的覆蓋層面處驗證,其中所述覆蓋層面低于所述協(xié)議階層中的用途層面。
5.如權(quán)利要求1所述的方法,其特征在于,還包括生成多個不同的資源標(biāo)識符,其中所述多個不同的資源標(biāo)識符中的每一個是所述第一字符串與不同的第二字符串的組合的函數(shù)。
6.如權(quán)利要求5所述的方法,其特征在于,生成所述不同的資源標(biāo)識符導(dǎo)致數(shù)據(jù)存儲負(fù)載散布在其中不同的存儲節(jié)點負(fù)責(zé)不同的標(biāo)識符空間的覆蓋網(wǎng)絡(luò)內(nèi)。
7.如權(quán)利要求1所述的方法,其特征在于,所述存儲請求還包括所述第一字符串的指示符。
8.如權(quán)利要求1所述的方法,其特征在于,所述存儲請求還包括所述第二字符串的指示符。
9.一種發(fā)布節(jié)點設(shè)備,包括通信接口,用于在對等覆蓋網(wǎng)絡(luò)上進(jìn)行通信;耦合至所述通信接口的處理器,其中所述處理器被適配成作為第一字符串與第二字符串的組合的函數(shù)生成資源標(biāo)識符,其中所述第一字符串可由存儲節(jié)點獨立認(rèn)證并且所述資源標(biāo)識符可由所述存儲節(jié)點驗證;生成包括所述資源標(biāo)識符以及要被存儲的數(shù)據(jù)的存儲請求;以及在覆蓋網(wǎng)絡(luò)上發(fā)送所述存儲請求以被存儲在所述存儲節(jié)點處,其中所述存儲節(jié)點負(fù)責(zé)包括所述資源標(biāo)識符的標(biāo)識符空間。
10.如權(quán)利要求9所述的發(fā)布節(jié)點設(shè)備,其特征在于,所述第一字符串是發(fā)布節(jié)點標(biāo)識符并且所述第二字符串是任意的字符串。
11.如權(quán)利要求9所述的發(fā)布節(jié)點設(shè)備,其特征在于,所述第一字符串是發(fā)布節(jié)點標(biāo)識符并且所述第二字符串是關(guān)于所述覆蓋網(wǎng)絡(luò)內(nèi)的服務(wù)的預(yù)定義字符串。
12.如權(quán)利要求9所述的發(fā)布節(jié)點設(shè)備,其特征在于,對所述存儲請求的授權(quán)可在協(xié)議階層的覆蓋層面處驗證,其中所述覆蓋層面低于所述協(xié)議階層中的用途層面。
13.如權(quán)利要求10所述的發(fā)布節(jié)點設(shè)備,其特征在于,所述處理器還被適配成生成多個不同的資源標(biāo)識符,其中所述多個不同的資源標(biāo)識符中的每一個是所述第一字符串與不同的第二字符串的組合的函數(shù)。
14.如權(quán)利要求13所述的方法,其特征在于,生成所述不同的資源標(biāo)識符導(dǎo)致數(shù)據(jù)存儲負(fù)載散布在其中不同的存儲節(jié)點負(fù)責(zé)不同的標(biāo)識符空間的覆蓋網(wǎng)絡(luò)內(nèi)。
15.一種發(fā)布節(jié)點設(shè)備,包括用于作為第一字符串與第二字符串的組合的函數(shù)生成資源標(biāo)識符的裝置,其中所述第一字符串可由存儲節(jié)點獨立認(rèn)證并且所述資源標(biāo)識符可由所述存儲節(jié)點驗證; 用于生成包括所述資源標(biāo)識符以及要被存儲的數(shù)據(jù)的存儲請求的裝置;以及用于在覆蓋網(wǎng)絡(luò)上發(fā)送所述存儲請求以被存儲在所述存儲節(jié)點處的裝置,其中所述存儲節(jié)點負(fù)責(zé)包括所述資源標(biāo)識符的標(biāo)識符空間。
16.如權(quán)利要求15所述的發(fā)布節(jié)點設(shè)備,其特征在于,對所述存儲請求的授權(quán)可在覆蓋層面處驗證并且不依賴于用途類型。作為第一字符串與第二字符串的組合的函數(shù)生成資源標(biāo)識符,其中所述第一字符串可由存儲節(jié)點獨立認(rèn)證并且所述資源標(biāo)識符可由所述存儲節(jié)點驗證; 生成包括所述資源標(biāo)識符以及要被存儲的數(shù)據(jù)的存儲請求;以及在覆蓋網(wǎng)絡(luò)上發(fā)送所述存儲請求以被存儲在所述存儲節(jié)點處,其中所述存儲節(jié)點負(fù)責(zé)包括所述資源標(biāo)識符的標(biāo)識符空間。
17.一種在存儲節(jié)點上操作的方法,包括接收要在對等覆蓋網(wǎng)絡(luò)中存儲數(shù)據(jù)的第一存儲請求,所述第一存儲請求包括第一資源標(biāo)識符和要被存儲的第一數(shù)據(jù),其中所述第一資源標(biāo)識符是第二字符串與可被認(rèn)證的第一字符串的組合的函數(shù);在協(xié)議階層的覆蓋層面處通過驗證所述第一資源標(biāo)識符來執(zhí)行獨立的存儲授權(quán);以及如果所述第一資源標(biāo)識符被成功驗證,則存儲所述第一數(shù)據(jù)并將其與所述第一資源標(biāo)識符相關(guān)聯(lián)。
18.如權(quán)利要求17所述的方法,其特征在于,在所述覆蓋層面處執(zhí)行獨立的存儲授權(quán)包括認(rèn)證所述第一字符串;以及確定所述第一資源標(biāo)識符是否是所述第一字符串與所述第二字符串的組合的函數(shù)。
19.如權(quán)利要求17所述的方法,其特征在于,所述第一字符串是發(fā)布節(jié)點標(biāo)識符并且所述第二字符串是任意的字符串。
20.如權(quán)利要求17所述的方法,其特征在于,所述第一字符串是發(fā)布節(jié)點標(biāo)識符并且所述第二字符串是關(guān)于所述覆蓋網(wǎng)絡(luò)內(nèi)的服務(wù)的預(yù)定義字符串。
21.如權(quán)利要求17所述的方法,其特征在于,所述覆蓋層面低于所述協(xié)議階層中的用途層面。
22.如權(quán)利要求17所述的方法,其特征在于,還包括 接收對所存儲的第一數(shù)據(jù)的數(shù)據(jù)訪問請求;以及如果所述數(shù)據(jù)訪問請求證明知道所述第一資源標(biāo)識符以及所述第一字符串,則準(zhǔn)予對所存儲的第一數(shù)據(jù)的訪問。
23.如權(quán)利要求22所述的方法,其特征在于,還包括如果所述數(shù)據(jù)訪問請求證明知道所述第一資源標(biāo)識符但是不能證明知道所述第一字符串,則準(zhǔn)予對所存儲的第一數(shù)據(jù)的只讀訪問。
24.如權(quán)利要求22所述的方法,其特征在于,準(zhǔn)予對所存儲的第一數(shù)據(jù)的訪問包括允許用第二數(shù)據(jù)來替代所述第一數(shù)據(jù)。
25.一種存儲節(jié)點設(shè)備,包括通信接口,用于在對等覆蓋網(wǎng)絡(luò)上進(jìn)行通信; 耦合至所述通信接口的處理器,其中所述處理器被適配成接收要在對等覆蓋網(wǎng)絡(luò)中存儲數(shù)據(jù)的第一存儲請求,所述第一存儲請求包括第一資源標(biāo)識符和要被存儲的第一數(shù)據(jù),其中所述第一資源標(biāo)識符是第二字符串與可被認(rèn)證的第一字符串的組合的函數(shù);在協(xié)議階層的覆蓋層面處通過驗證所述第一資源標(biāo)識符來執(zhí)行獨立的存儲授權(quán);以及如果所述第一資源標(biāo)識符被成功驗證,則存儲所述第一數(shù)據(jù)并將其與所述第一資源標(biāo)識符相關(guān)聯(lián)。
26.如權(quán)利要求25所述的存儲節(jié)點設(shè)備,其特征在于,在所述覆蓋層面處執(zhí)行獨立的存儲授權(quán)包括認(rèn)證所述第一字符串;以及確定所述第一資源標(biāo)識符是否是所述第一字符串與所述第二字符串的組合的函數(shù)。
27.如權(quán)利要求25所述的存儲節(jié)點設(shè)備,其特征在于,所述處理器還被適配成 接收對所存儲的第一數(shù)據(jù)的數(shù)據(jù)訪問請求;以及如果所述數(shù)據(jù)訪問請求證明知道所述第一資源標(biāo)識符以及所述第一字符串,則準(zhǔn)予對所存儲的第一數(shù)據(jù)的訪問。
28.如權(quán)利要求27所述的存儲節(jié)點設(shè)備,其特征在于,所述處理器還被適配成 如果所述數(shù)據(jù)訪問請求證明知道所述第一資源標(biāo)識符但是不能證明知道所述第一字符串,則準(zhǔn)予對所存儲的第一數(shù)據(jù)的只讀訪問。
29.一種存儲節(jié)點設(shè)備,包括用于接收要在對等覆蓋網(wǎng)絡(luò)中存儲數(shù)據(jù)的第一存儲請求的裝置,所述第一存儲請求包括第一資源標(biāo)識符和要被存儲的第一數(shù)據(jù),其中所述第一資源標(biāo)識符是第二字符串與可被認(rèn)證的第一字符串的組合的函數(shù);用于在協(xié)議階層的覆蓋層面處通過驗證所述第一資源標(biāo)識符來執(zhí)行獨立的存儲授權(quán)的裝置;以及用于如果所述第一資源標(biāo)識符被成功驗證則存儲所述第一數(shù)據(jù)并將其與所述第一資源標(biāo)識符相關(guān)聯(lián)的裝置。
30.一種在對等覆蓋網(wǎng)絡(luò)中的發(fā)布節(jié)點處操作以存儲數(shù)據(jù)的方法,包括 作為第二字符串的函數(shù)生成資源標(biāo)識符,其中所述資源標(biāo)識符可由存儲節(jié)點驗證;生成存儲請求,所述存儲請求包括所述資源標(biāo)識符、要被存儲的數(shù)據(jù)、以及可由所述存儲節(jié)點獨立認(rèn)證的第一字符串;以及在覆蓋網(wǎng)絡(luò)上發(fā)送所述存儲請求以被存儲在所述存儲節(jié)點處,其中所述存儲節(jié)點負(fù)責(zé)包括所述資源標(biāo)識符的標(biāo)識符空間。
31.如權(quán)利要求30所述的方法,其特征在于,所述第一字符串是發(fā)布節(jié)點標(biāo)識符并且所述第二字符串是任意的字符串。
32.如權(quán)利要求30所述的方法,其特征在于,所述第一字符串是發(fā)布節(jié)點標(biāo)識符并且所述第二字符串是關(guān)于所述覆蓋網(wǎng)絡(luò)內(nèi)的服務(wù)的預(yù)定義字符串。
33.如權(quán)利要求30所述的方法,其特征在于,對所述存儲請求的授權(quán)可在協(xié)議階層的用途層面處使用所述第一字符串來驗證,其中所述用途層面高于所述協(xié)議階層中的覆蓋層面。
34.如權(quán)利要求30所述的方法,其特征在于,所述覆蓋網(wǎng)絡(luò)內(nèi)不同的發(fā)布節(jié)點生成具有相同的資源標(biāo)識符但具有不同的第一字符串的數(shù)據(jù)存儲請求,所述不同的數(shù)據(jù)存儲請求可基于使用所述不同的第一字符串的用途層面授權(quán)來區(qū)分。
35.一種存儲節(jié)點設(shè)備,包括通信接口,用于在對等覆蓋網(wǎng)絡(luò)上進(jìn)行通信;以及耦合至所述通信接口的處理器,其中所述處理器被適配成 作為第二字符串的函數(shù)生成資源標(biāo)識符,其中所述資源標(biāo)識符可由存儲節(jié)點驗證; 生成存儲請求,所述存儲請求包括所述資源標(biāo)識符、要被存儲的數(shù)據(jù)、以及可由所述存儲節(jié)點獨立認(rèn)證的第一字符串;以及在覆蓋網(wǎng)絡(luò)上發(fā)送所述存儲請求以被存儲在所述存儲節(jié)點處,其中所述存儲節(jié)點負(fù)責(zé)包括所述資源標(biāo)識符的標(biāo)識符空間。
36.一種在發(fā)布節(jié)點上操作的方法,包括接收要在對等覆蓋網(wǎng)絡(luò)中存儲數(shù)據(jù)的第一存儲請求,所述第一存儲請求包括第一資源標(biāo)識符、要被存儲的第一數(shù)據(jù)、以及第一發(fā)布節(jié)點標(biāo)識符,其中所述存儲節(jié)點負(fù)責(zé)包括所述第一資源標(biāo)識符的標(biāo)識符空間;接收要在對等覆蓋網(wǎng)絡(luò)中存儲數(shù)據(jù)的第二存儲請求,所述第二存儲請求包括所述第一資源標(biāo)識符、要被存儲的第二數(shù)據(jù)、以及第二發(fā)布節(jié)點標(biāo)識符;存儲所述第一數(shù)據(jù)和所述第一發(fā)布節(jié)點標(biāo)識符并將它們與所述第一資源標(biāo)識符相關(guān)聯(lián);以及存儲所述第二數(shù)據(jù)和所述第二發(fā)布節(jié)點標(biāo)識符并將它們與所述第一資源標(biāo)識符相關(guān)聯(lián)。
37.如權(quán)利要求36所述的方法,其特征在于,所述第一資源標(biāo)識符是與要被存儲的數(shù)據(jù)類型相關(guān)聯(lián)的用途字符串的函數(shù)。
38.如權(quán)利要求36所述的方法,其特征在于,所述第一資源標(biāo)識符是關(guān)于所述覆蓋網(wǎng)絡(luò)內(nèi)的服務(wù)的預(yù)定義字符串的函數(shù)。
39.如權(quán)利要求36所述的方法,其特征在于,還包括在協(xié)議階層的用途層面處執(zhí)行獨立的存儲授權(quán),其中所述用途層面高于所述協(xié)議階層中的覆蓋層面。
40.如權(quán)利要求36所述的方法,其特征在于,還包括接收對與所述第一資源標(biāo)識符相關(guān)聯(lián)的數(shù)據(jù)的數(shù)據(jù)訪問請求;以及準(zhǔn)予對所存儲的第一數(shù)據(jù)和第二數(shù)據(jù)的只讀訪問。
41.如權(quán)利要求40所述的方法,其特征在于,還包括如果所述數(shù)據(jù)訪問請求證明知道所述第一發(fā)布節(jié)點識符,則準(zhǔn)予對所存儲的第一數(shù)據(jù)的寫訪問;以及如果所述數(shù)據(jù)訪問請求證明知道所述第二發(fā)布節(jié)點識符,則準(zhǔn)予對所存儲的第二數(shù)據(jù)的寫訪問。
42. 一種存儲節(jié)點設(shè)備,包括 通信接口,用于在對等覆蓋網(wǎng)絡(luò)上進(jìn)行通信;以及耦合至所述通信接口的處理器,其中所述處理器被適配成接收要在對等覆蓋網(wǎng)絡(luò)中存儲數(shù)據(jù)的第一存儲請求,所述第一存儲請求包括第一資源標(biāo)識符、要被存儲的第一數(shù)據(jù)、以及第一發(fā)布節(jié)點標(biāo)識符,其中所述存儲節(jié)點負(fù)責(zé)包括所述第一資源標(biāo)識符的標(biāo)識符空間;接收要在對等覆蓋網(wǎng)絡(luò)中存儲數(shù)據(jù)的第二存儲請求,所述第二存儲請求包括所述第一資源標(biāo)識符、要被存儲的第二數(shù)據(jù)、以及第二發(fā)布節(jié)點標(biāo)識符;存儲所述第一數(shù)據(jù)和所述第一發(fā)布節(jié)點標(biāo)識符并將它們與所述第一資源標(biāo)識符相關(guān)聯(lián);以及存儲所述第二數(shù)據(jù)和所述第二發(fā)布節(jié)點標(biāo)識符并將它們與所述第一資源標(biāo)識符相關(guān)聯(lián)。
全文摘要
提供了存儲授權(quán)和對存儲在對等覆蓋網(wǎng)絡(luò)上的數(shù)據(jù)的訪問控制。發(fā)布節(jié)點(502)將數(shù)據(jù)存儲在覆蓋網(wǎng)絡(luò)中的存儲節(jié)點(506)上。該發(fā)布節(jié)點(502)被適配成通過作為與要被存儲的數(shù)據(jù)類型相關(guān)聯(lián)的用途字符串的函數(shù)生成資源標(biāo)識符(516)來幫助實現(xiàn)數(shù)據(jù)存儲授權(quán)。生成存儲請求(504),其包括資源標(biāo)識符(516)以及要被存儲的數(shù)據(jù)(518)。該存儲請求可被發(fā)送給存儲節(jié)點(506)。存儲設(shè)備(506)接收由發(fā)布節(jié)點發(fā)送的包括資源標(biāo)識符(516)以及要被存儲的數(shù)據(jù)(518)的存儲請求(504)。存儲節(jié)點(506)在覆蓋層面處通過驗證(510,512)資源標(biāo)識符來執(zhí)行獨立的存儲授權(quán)。如果該資源標(biāo)識符被成功驗證,則存儲請求中的數(shù)據(jù)被存儲在存儲節(jié)點處。
文檔編號H04L29/06GK102217274SQ200980145867
公開日2011年10月12日 申請日期2009年11月13日 優(yōu)先權(quán)日2008年11月14日
發(fā)明者L·R·唐達(dá)蒂, R·S·賈雅拉曼, V·納拉亞南 申請人:高通股份有限公司