對(duì)等網(wǎng)絡(luò)中的通信量本地化的制作方法
【專利摘要】本發(fā)明提供了一種用于本地化對(duì)等通信量的方法。所述方法包括:由對(duì)等網(wǎng)絡(luò)的第一節(jié)點(diǎn)向與該對(duì)等網(wǎng)絡(luò)相關(guān)聯(lián)的一個(gè)或多個(gè)其他節(jié)點(diǎn)傳送第一消息。所述消息包括針對(duì)內(nèi)容的請(qǐng)求以及關(guān)于何時(shí)將由第一節(jié)點(diǎn)接收到內(nèi)容的絕限。
【專利說明】對(duì)等網(wǎng)絡(luò)中的通信量本地化
【技術(shù)領(lǐng)域】
[0001]本發(fā)明的實(shí)施例涉及對(duì)等文件共享網(wǎng)絡(luò)以及一種用于本地化對(duì)等通信量的方法。 【背景技術(shù)】
[0002]某些版本的對(duì)等文件共享網(wǎng)絡(luò)依賴于由各個(gè)網(wǎng)絡(luò)元件構(gòu)成的集中式計(jì)算機(jī)或網(wǎng) 絡(luò)來列出網(wǎng)絡(luò)中的所有可用內(nèi)容。其他對(duì)等文件共享網(wǎng)絡(luò)不依賴于集中式組件來列出網(wǎng)絡(luò) 上的所有可用內(nèi)容。相反,由于內(nèi)容本身是分布式的,因此目錄也是分布式的。被用來把目 錄數(shù)據(jù)庫(kù)分布在所有參與客戶端上的技術(shù)有時(shí)被稱作分布式散列表(DHT)。
[0003]不管網(wǎng)絡(luò)是集中式網(wǎng)絡(luò)還是利用DHT的網(wǎng)絡(luò),各個(gè)對(duì)等方都從彼此處下載內(nèi)容而 不管從中共享內(nèi)容的對(duì)等方的本地性。其結(jié)果是,如果某一對(duì)等方請(qǐng)求包含在另一對(duì)等方 的計(jì)算機(jī)上的文件,則包含文件的計(jì)算機(jī)的位置可能遠(yuǎn)離請(qǐng)求文件的對(duì)等方。這樣不僅會(huì) 導(dǎo)致文件傳送延遲,而且還會(huì)增加成本,這是因?yàn)閷?duì)等方之間的鏈路必須經(jīng)過一個(gè)或多個(gè) 互聯(lián)網(wǎng)服務(wù)提供商(ISP)。因此,這樣的對(duì)等類型連接可能會(huì)在將各個(gè)ISP鏈接在一起的轉(zhuǎn) 遞鏈路上產(chǎn)生大量通信量,從而增加網(wǎng)絡(luò)運(yùn)營(yíng)商的成本。
[0004]舉例來說,假設(shè)有一個(gè)受歡迎的內(nèi)容文件,并且在全世界范圍內(nèi)有10000個(gè)用戶 在其計(jì)算機(jī)上具有該文件。假設(shè)這10000個(gè)用戶當(dāng)中的50個(gè)可能位于給定的ISP “A”內(nèi)。 假設(shè)ISPA”內(nèi)的某一對(duì)等方對(duì)所述受歡迎的文件感興趣并且請(qǐng)求目錄,所述目錄是對(duì)應(yīng)于 要從中下載文件的50個(gè)隨機(jī)對(duì)等方的集中式或DHT類型目錄。在這種情況下,找到ISPA” 內(nèi)的單個(gè)對(duì)等方的幾率是0.5%。如果為發(fā)出請(qǐng)求的對(duì)等方隨機(jī)識(shí)別出50個(gè)具有所述文件 的對(duì)等方,則所有這50個(gè)對(duì)等方都將處在ISP “A”內(nèi)部的幾率接近于零。
[0005]在這種情形下,雖然在與請(qǐng)求文件的對(duì)等方所屬的同一 ISP內(nèi)存在大量對(duì)等方, 但是很可能出現(xiàn)的情況是該對(duì)等方最終將從位于發(fā)出請(qǐng)求的對(duì)等方的ISP外部的某一對(duì) 等方接收文件。這樣就需要ISP之間的轉(zhuǎn)接鏈路上的不必要的通信量。
[0006]圖1示出了集中式對(duì)等系統(tǒng)10的示意圖。集中式對(duì)等系統(tǒng)10包括也被稱作對(duì)等 方和/或節(jié)點(diǎn)12的計(jì)算機(jī)12以及中央計(jì)算機(jī)14。對(duì)等方和/或節(jié)點(diǎn)12通過連接16連接 到中央計(jì)算機(jī)14。連接16可以是任何適當(dāng)?shù)倪B接,比如無(wú)線連接、以太網(wǎng)連接或者任何適 當(dāng)?shù)倪B接硬件或方法的組合。
[0007]雖然對(duì)等系統(tǒng)10僅僅示出了四個(gè)對(duì)等方和/或節(jié)點(diǎn)12以及單個(gè)中央計(jì)算機(jī)14, 但是應(yīng)當(dāng)理解的是,對(duì)等系統(tǒng)不受限于所示出的對(duì)等方和/或節(jié)點(diǎn)12的數(shù)目以及單個(gè)中央 計(jì)算機(jī)14的中央網(wǎng)絡(luò)組件。實(shí)際上,對(duì)等系統(tǒng)10可以包括多得多的對(duì)等方和/或節(jié)點(diǎn)12, 并且可以由許多計(jì)算機(jī)、服務(wù)器或其他組件實(shí)現(xiàn)所示出的中央計(jì)算機(jī)14的任務(wù)。
[0008]在如圖1所示的集中式對(duì)等系統(tǒng)10中,當(dāng)對(duì)等方和/或節(jié)點(diǎn)12請(qǐng)求內(nèi)容或文件 時(shí),通過連接16將所述請(qǐng)求發(fā)送到集中式計(jì)算機(jī)14。在對(duì)等網(wǎng)絡(luò)中,發(fā)送請(qǐng)求是眾所周知 的。
[0009]集中式計(jì)算機(jī)14確定哪些對(duì)等方和/或節(jié)點(diǎn)12具有所請(qǐng)求的內(nèi)容,并且可以利 用關(guān)于哪些對(duì)等方和/或節(jié)點(diǎn)12具有所請(qǐng)求內(nèi)容的信息對(duì)所述請(qǐng)求做出響應(yīng)。集中式計(jì)算機(jī)14可以識(shí)別出具有所請(qǐng)求內(nèi)容的幾個(gè)對(duì)等方和/或節(jié)點(diǎn)12,并且利用關(guān)于多個(gè)識(shí)別出 的對(duì)等方和/或節(jié)點(diǎn)12的信息做出響應(yīng)。一旦識(shí)別出一個(gè)或多個(gè)對(duì)等方和/或節(jié)點(diǎn)12,發(fā) 出請(qǐng)求的對(duì)等方于是就可以從其中一個(gè)識(shí)別出的對(duì)等方接收所請(qǐng)求的文件。
[0010]集中式計(jì)算機(jī)14可以確定應(yīng)當(dāng)為發(fā)出請(qǐng)求的對(duì)等方識(shí)別出可能包含所請(qǐng)求內(nèi)容 的許多對(duì)等方和/或節(jié)點(diǎn)12當(dāng)中的哪些對(duì)等方和/或節(jié)點(diǎn)12,以便減少通過轉(zhuǎn)遞鏈路傳送 的大量數(shù)據(jù)??梢宰龀鲞@些決定以便本地化對(duì)等通信量。后面將更加詳細(xì)地描述該確定。
[0011]舉例來說,用于對(duì)等網(wǎng)絡(luò)的一種眾所周知的文件共享系統(tǒng)被稱作BITT0RRENT TM, 其被注冊(cè)到BitTorrent Inc.。BITT0RRENT文件共享系統(tǒng)使用以發(fā)現(xiàn)對(duì)等方的機(jī)制會(huì)影響 P2P網(wǎng)絡(luò)的結(jié)構(gòu)從而影響數(shù)據(jù)播散。因此,關(guān)于BITT0RRENT文件共享系統(tǒng)中的對(duì)等方發(fā)現(xiàn) 的知識(shí)是清楚地理解通信量本地化的基礎(chǔ)。BITT0RRENT文件共享系統(tǒng)采用跟蹤器或中央服 務(wù)器(例如集中式計(jì)算機(jī)14)來發(fā)現(xiàn)對(duì)等方并且協(xié)調(diào)文件交換。各個(gè)對(duì)等方在其從網(wǎng)上下 載的種子(torrent)內(nèi)獲取跟蹤器的地址。torrent”是包含針對(duì)文件交換的有用信息的 元數(shù)據(jù)文件。
[0012]首先,某一對(duì)等方聯(lián)系跟蹤器以便獲取保有所述文件或其一部分的對(duì)等方列表。 跟蹤器利用對(duì)等方列表做出應(yīng)答,所述對(duì)等方列表是通常由50個(gè)對(duì)等方構(gòu)成的一個(gè)活躍 對(duì)等方隨機(jī)子集。隨后,一個(gè)對(duì)等方與跟蹤器定期交互,以便發(fā)送關(guān)于該對(duì)等方已經(jīng)下載或 上傳的字節(jié)數(shù)量的信息。作為響應(yīng),跟蹤器向該對(duì)等方發(fā)送新的對(duì)等方列表。跟蹤器通過 包含在跟蹤器答復(fù)中的最小間隔字段來管制客戶端與跟蹤器之間的通信頻度。其通常被設(shè) 定到15分鐘。
[0013]如前所述,所述對(duì)等方列表是一個(gè)活躍對(duì)等方隨機(jī)子集。所述對(duì)等方列表絕不會(huì) 包括某一網(wǎng)絡(luò)(例如一個(gè)互聯(lián)網(wǎng)服務(wù)提供商網(wǎng)絡(luò)(ISP)網(wǎng)絡(luò))內(nèi)的對(duì)等方的本地化。已經(jīng)做 出了一些努力來利用跟蹤器或中央服務(wù)器(例如集中式計(jì)算機(jī)14)進(jìn)行本地化。但是這些 努力不在本公開內(nèi)容的范圍內(nèi)。
【發(fā)明內(nèi)容】
[0014]一個(gè)實(shí)施例包括一種用于在對(duì)等網(wǎng)絡(luò)中本地化內(nèi)容的方法。所述方法包括:由對(duì) 等網(wǎng)絡(luò)的第一節(jié)點(diǎn)向與該對(duì)等網(wǎng)絡(luò)相關(guān)聯(lián)的一個(gè)或多個(gè)其他節(jié)點(diǎn)傳送第一消息。所述消息 包括針對(duì)內(nèi)容的請(qǐng)求以及關(guān)于何時(shí)將由第一節(jié)點(diǎn)接收到內(nèi)容的絕限。
[0015]另一個(gè)實(shí)施例包括一種用于在對(duì)等網(wǎng)絡(luò)中本地化內(nèi)容的方法。所述方法包括:由 對(duì)等網(wǎng)絡(luò)的第一節(jié)點(diǎn)接收來自與該對(duì)等網(wǎng)絡(luò)相關(guān)聯(lián)的第二節(jié)點(diǎn)的第一消息。所述第一消 息包括針對(duì)內(nèi)容的請(qǐng)求以及關(guān)于何時(shí)將接收到內(nèi)容的絕限。所述方法包括:如果所述絕限 尚未到期并且第一節(jié)點(diǎn)具有與所述內(nèi)容有關(guān)的信息,則由第一節(jié)點(diǎn)向第二節(jié)點(diǎn)傳送第二消 息。所述第二消息表明第一節(jié)點(diǎn)具有與所述內(nèi)容有關(guān)的信息。所述方法包括:如果所述絕 限已經(jīng)到期,則由第一節(jié)點(diǎn)向第二節(jié)點(diǎn)傳送第三消息。所述第三消息包括一個(gè)節(jié)點(diǎn)列表,其 中具有與所述對(duì)等網(wǎng)絡(luò)相關(guān)聯(lián)的一個(gè)或多個(gè)其他節(jié)點(diǎn)。
【專利附圖】
【附圖說明】
[0016]通過后面給出的詳細(xì)描述和附圖將會(huì)更加全面地理解本發(fā)明,其中相同的元件由 相同的附圖標(biāo)記表示,其僅僅是為了進(jìn)行說明而給出的,因此不對(duì)本發(fā)明構(gòu)成限制,其中:[0017]圖1示出了具有集中式組件的對(duì)等文件共享網(wǎng)絡(luò)的相關(guān)技術(shù)示意圖。
[0018]圖2示出了根據(jù)一些示例性實(shí)施例的利用分布式散列表(DHT)的對(duì)等文件共享網(wǎng) 絡(luò)的不意圖。
[0019]圖3示出了根據(jù)一些示例性實(shí)施例的文件共享網(wǎng)絡(luò)的示意圖,并且示出了與該文 件共享網(wǎng)絡(luò)通信的計(jì)算機(jī)的各個(gè)組件。
[0020]圖4A和4B示出了根據(jù)一些示例性實(shí)施例的數(shù)據(jù)分組。
[0021]圖5A-?示出了根據(jù)一個(gè)示例性實(shí)施例的用于在對(duì)等網(wǎng)絡(luò)中本地化通信量的一 種方法的流程圖。
[0022]圖6A和6B示出了根據(jù)一個(gè)示例性實(shí)施例的用于在對(duì)等網(wǎng)絡(luò)中本地化通信量的另 一種方法的流程圖。
[0023]應(yīng)當(dāng)提到的是,這些附圖意圖說明在特定示例性實(shí)施例中所利用的方法、結(jié)構(gòu)和/ 或材料的一般特性并且對(duì)后面提供的書面描述做出補(bǔ)充。但是這些附圖并非按比例繪制 的,并且可能沒有精確地反映出任何給定實(shí)施例的精確的結(jié)構(gòu)或性能特性,并且不應(yīng)當(dāng)被 解釋為限定或限制由示例性實(shí)施例所涵蓋的數(shù)值或?qū)傩苑秶Ee例來說,為了清楚起見可 能縮小或夸大了各個(gè)分子、層、區(qū)段和/或結(jié)構(gòu)元件的相對(duì)厚度和定位。在各圖中使用類似 的或完全相同的附圖標(biāo)記是為了表明類似的或完全相同的元件或特征的存在。
【具體實(shí)施方式】
[0024]雖然各個(gè)示例性實(shí)施例可以有各種修改和替換形式,但是在附圖中通過舉例的方 式示出了其中一些實(shí)施例并且將在這里詳細(xì)進(jìn)行描述。但是應(yīng)當(dāng)理解的是,并不意圖把示 例性實(shí)施例限制到所公開的具體形式,相反,示例性實(shí)施例應(yīng)當(dāng)涵蓋落在權(quán)利要求書范圍 內(nèi)的所有修改、等效方案和替換方案。在對(duì)于各圖的描述中,相同的附圖標(biāo)記始終指代相同 的元件。
[0025]在更加詳細(xì)地討論示例性實(shí)施例之前應(yīng)當(dāng)提到的是,一些示例性實(shí)施例被描述為 作為流程圖描繪出的處理或方法。雖然流程圖把各項(xiàng)操作描述為順序處理,但是許多操作 可以并行、并發(fā)或同時(shí)施行。此外還可以重新安排各項(xiàng)操作的順序。所述處理在其操作完 成時(shí)可以被終止,但是也可以具有未包括在圖中的附加步驟。所述處理可以對(duì)應(yīng)于各種方 法、功能、規(guī)程、子例程、子程序等等。
[0026]后面所討論的方法(其中一些通過流程圖示出)可以通過硬件、軟件、固件、中間 件、微代碼、硬件描述語(yǔ)言或者其任意組合來實(shí)施。當(dāng)用軟件、固件、中間件或微代碼實(shí)施 時(shí),用以施行必要任務(wù)的程序代碼或代碼段被存儲(chǔ)在例如存儲(chǔ)介質(zhì)之類的機(jī)器或計(jì)算機(jī)可 讀介質(zhì)中。由(多個(gè))處理器施行必要的任務(wù)。
[0027]這里所公開的具體結(jié)構(gòu)和功能細(xì)節(jié)僅僅是代表性的以用于描述本發(fā)明的示例性 實(shí)施例。但是本發(fā)明可以通過許多替換形式來具體實(shí)現(xiàn),并且不應(yīng)當(dāng)被理解成僅僅被限制 到這里所闡述的實(shí)施例。
[0028]應(yīng)當(dāng)理解的是,雖然在這里可能使用了第一、第二等術(shù)語(yǔ)來描述各個(gè)元件,但是這 些元件不應(yīng)當(dāng)受限于這些術(shù)語(yǔ)。使用這些術(shù)語(yǔ)僅僅是為了將一個(gè)元件與另一個(gè)元件進(jìn)行區(qū) 分。舉例來說,第一元件可以被稱作第二元件并且類似地第二元件可以被稱作第一元件而 不會(huì)背離示例性實(shí)施例的范圍。這里所使用的術(shù)語(yǔ)“和/或”包括所列出的其中一個(gè)或多個(gè)相關(guān)聯(lián)的項(xiàng)目的任意和所有組合。
[0029]應(yīng)當(dāng)理解的是,當(dāng)提到一個(gè)元件“連接”或“耦合”到另一個(gè)元件時(shí),其可以直接連 接或耦合到該另一個(gè)元件,或者可以存在中間元件。與此相對(duì),當(dāng)提到一個(gè)元件“直接連接” 或“直接耦合”到另一個(gè)元件時(shí),則不存在中間元件。被用來描述元件之間的關(guān)系的其他措 辭應(yīng)當(dāng)按照相同的方式來解釋(例如“處于...之間”與“直接處于...之間”,“相鄰”與“直 接相鄰”等等)。
[0030]這里所使用的術(shù)語(yǔ)僅僅是為了描述特定實(shí)施例,而不意圖限制示例性實(shí)施例。除 非上下文明確地另有所指,否則這里所使用的單數(shù)形式“一個(gè)”、“某一”和“該”意圖也包 括復(fù)數(shù)形式。還應(yīng)當(dāng)理解的是,這里所使用的術(shù)語(yǔ)“包括”、“包含”表明所述特征、整數(shù)、步 驟、操作、元件和/或組件的存在,而不排除存在或添加一個(gè)或多個(gè)其他特征、整數(shù)、步驟、 操作、元件、組件和/或其組合。
[0031]還應(yīng)當(dāng)提到的是,在一些替換實(shí)現(xiàn)方式中,所提到的功能/步驟可以按照不同于 附圖中所提到的順序發(fā)生。舉例來說,取決于所涉及的功能/步驟,相繼示出的兩幅圖實(shí)際 上可以并發(fā)地執(zhí)行或者有時(shí)可以按照相反的順序執(zhí)行。
[0032]除非另行定義,否則這里所使用的所有術(shù)語(yǔ)(包括技術(shù)和科學(xué)術(shù)語(yǔ))都具有示例性 實(shí)施例所屬領(lǐng)域技術(shù)人員通常所理解的相同含義。還應(yīng)當(dāng)理解的是,除非在這里明確定義, 否則例如在常用字典中定義的那些術(shù)語(yǔ)應(yīng)當(dāng)被解釋為具有與其在相關(guān)領(lǐng)域情境中的含義 相一致的含義,而不應(yīng)當(dāng)按照理想化或者過于正式的意義來解釋。
[0033]所述示例性實(shí)施例的一些部分和相應(yīng)的詳細(xì)描述是通過軟件或算法以及對(duì)于計(jì) 算機(jī)存儲(chǔ)器內(nèi)的數(shù)據(jù)比特的操作的符號(hào)表示給出的。這些描述和表示由本領(lǐng)域技術(shù)人員用 來向本領(lǐng)域其他技術(shù)人員有效地傳達(dá)其工作的要旨。與其通常的使用情況一樣,這里所使 用的術(shù)語(yǔ)“算法”被設(shè)想為導(dǎo)致所期望的結(jié)果的自相一致的步驟序列。所述步驟是需要對(duì) 物理量進(jìn)行物理操縱的那些步驟。這些量通常(而非必須)采取光學(xué)、電或磁信號(hào)的形式,其 能夠被存儲(chǔ)、傳送、組合、比較以及以其他方式進(jìn)行操縱。主要出于通常使用的原因,已經(jīng)證 明有時(shí)把這些信號(hào)稱作比特、數(shù)值、元素、符號(hào)、字符、項(xiàng)、數(shù)字等等是方便的。
[0034]在后面的描述中將參照各項(xiàng)操作的步驟和符號(hào)表示(其例如具有流程圖的形式) 來描述一些說明性實(shí)施例,所述操作可以被實(shí)施為包括例程、程序、對(duì)象、組件、數(shù)據(jù)結(jié)構(gòu)等 在內(nèi)的程序模塊或功能處理,其施行特定任務(wù)或?qū)嵤┨囟ǔ橄髷?shù)據(jù)類型,并且將利用現(xiàn)有 網(wǎng)絡(luò)元件中的現(xiàn)有硬件來實(shí)施。這樣的現(xiàn)有硬件可以包括一個(gè)或多個(gè)中央處理單元(CPU)、 數(shù)字信號(hào)處理器(DSP)、專用集成電路、現(xiàn)場(chǎng)可編程門陣列(FPGA)、計(jì)算機(jī)等等。
[0035]但是應(yīng)當(dāng)記住的是,所有前述和類似術(shù)語(yǔ)應(yīng)當(dāng)與適當(dāng)?shù)奈锢砹肯嚓P(guān)聯(lián),并且僅僅 是應(yīng)用于這些量的便利標(biāo)簽。除非明確地另行聲明或者從討論中可以明顯看出,否則例如 “處理”、“運(yùn)算”、“計(jì)算”、“確定”或“顯示”等術(shù)語(yǔ)指的是計(jì)算機(jī)系統(tǒng)或類似電子計(jì)算器件的 動(dòng)作和處理,其把計(jì)算機(jī)系統(tǒng)的寄存器和存儲(chǔ)器內(nèi)的被表示為物理、電子量的數(shù)據(jù)操縱并 變換成計(jì)算機(jī)系統(tǒng)存儲(chǔ)器或寄存器或者其他此類信息存儲(chǔ)、傳送或顯示器件內(nèi)的被類似地 表示為物理量的其他數(shù)據(jù)。
[0036]還應(yīng)當(dāng)提到的是,示例性實(shí)施例的軟件實(shí)施方面通常被編碼在某種形式的程序存 儲(chǔ)介質(zhì)上或者被實(shí)施在某種類型的傳送介質(zhì)上。所述程序存儲(chǔ)介質(zhì)可以是磁性(例如軟盤 或硬盤驅(qū)動(dòng)器)或光學(xué)(例如緊致盤只讀存儲(chǔ)器或“CD ROM”)介質(zhì),并且可以是只讀或隨機(jī)存取介質(zhì)。類似地,所述傳送介質(zhì)可以是雙絞線、同軸電纜、光纖或者本領(lǐng)域內(nèi)已知的某種 其他適當(dāng)?shù)膫魉徒橘|(zhì)。示例性實(shí)施例不限于任何給定實(shí)現(xiàn)方式的這些方面。
[0037]在本公開內(nèi)容中,術(shù)語(yǔ)“對(duì)等方”和“節(jié)點(diǎn)”可以互換使用。一般來說,對(duì)等方指的 是對(duì)等網(wǎng)絡(luò)內(nèi)的物理硬件。對(duì)等方也可以是節(jié)點(diǎn)。但是節(jié)點(diǎn)還可以更一般地指代例如對(duì)等 網(wǎng)絡(luò)內(nèi)的文件位置(例如地址或表中的索引)的邏輯實(shí)例。
[0038]圖2是根據(jù)一個(gè)示例性實(shí)施例的對(duì)等網(wǎng)絡(luò)18的示意圖。在圖2所示的對(duì)等網(wǎng)絡(luò) 18中沒有中央計(jì)算機(jī)14。雖然沒有示出,但是應(yīng)當(dāng)理解的是,各個(gè)對(duì)等方40通過去到彼此 的連接相連。
[0039]圖2示出了對(duì)等文件共享網(wǎng)絡(luò)18。圖2的網(wǎng)絡(luò)18不依賴于集中式組件來列出網(wǎng) 絡(luò)內(nèi)容,而是使用分布式散列表(DHT)19來把目錄數(shù)據(jù)庫(kù)分布到所有參與客戶端。DHT19在 圖2中被表示為把網(wǎng)絡(luò)18的所有方面連接在一起的虛線。
[0040]文件共享網(wǎng)絡(luò)18包括第一互聯(lián)網(wǎng)服務(wù)提供商(ISP)24和第二 ISP26。在ISP24內(nèi) 存在可以被稱作對(duì)等方、節(jié)點(diǎn)或用戶40的各個(gè)客戶端。將通過在附圖標(biāo)記之后添加一個(gè)字 母將相同ISP上的各個(gè)客戶端、對(duì)等方或用戶與其他對(duì)等方進(jìn)行區(qū)分。
[0041]第二 ISP26也被顯示為具有各個(gè)對(duì)等方42。第一 ISP24和第二 ISP26可以通過對(duì) 等鏈路28連接在一起。
[0042]在圖2中示出了總體因特網(wǎng)(internet at large) 22。ISP24可以通過轉(zhuǎn)遞鏈路 30連接到總體因特網(wǎng)22。轉(zhuǎn)遞鏈路30還可以把ISP26連接到總體因特網(wǎng)22。位于總體因 特網(wǎng)22上的各個(gè)對(duì)等方由附圖標(biāo)記44標(biāo)識(shí)。與對(duì)等方40和42 —樣,總體因特網(wǎng)22上的 對(duì)等方44與至少一個(gè)ISP相關(guān)聯(lián)。但是沒有示出與總體因特網(wǎng)22上的對(duì)等方44相關(guān)聯(lián) 的 ISP。
[0043]由于在與不同ISP24、26相關(guān)聯(lián)的對(duì)等方40、42、44之間共享文件所需的資源數(shù)量 (例如對(duì)等鏈路28或轉(zhuǎn)遞鏈路30),可能優(yōu)選的是每當(dāng)在可能的情況下令特定ISP內(nèi)的對(duì)等 方彼此間共享文件,而不是在位于不同ISP上的對(duì)等方之間共享文件。
[0044]箭頭32示出了文件共享的一種優(yōu)選方式,其中對(duì)等方40a、40b和40d彼此共享文 件。對(duì)等方40a、40b和40d都位于ISP24上??赡軙?huì)出現(xiàn)這樣一些情況,其中位于ISP24 內(nèi)的對(duì)等方40所請(qǐng)求的文件未被包含在同樣位于ISP24上的任何對(duì)等方中。因此,為了獲 得所請(qǐng)求的內(nèi)容,對(duì)等方40必須從位于ISP26或總體因特網(wǎng)22中的某一用戶獲得內(nèi)容。
[0045]圖3是示出了各個(gè)ISP24、26、總體因特網(wǎng)22以及網(wǎng)絡(luò)組件(其也可以被稱作計(jì)算 機(jī)或網(wǎng)絡(luò)元件)的示意圖。網(wǎng)絡(luò)元件45可以分布在整個(gè)網(wǎng)絡(luò)中,正如前面關(guān)于圖2所示出 的那樣。舉例來說,在對(duì)等文件共享網(wǎng)絡(luò)中,這樣的文件共享網(wǎng)絡(luò)18不具有集中式計(jì)算機(jī) 14而是使用DHT19,其中計(jì)算機(jī)或網(wǎng)絡(luò)元件45可以分布在整個(gè)文件共享網(wǎng)絡(luò)中。或者網(wǎng)絡(luò) 元件45可以僅僅是通過連接26與各個(gè)ISP24、26和總體因特網(wǎng)22相連。
[0046]如圖3中所示,網(wǎng)絡(luò)元件45可以包括通過連接50連接到數(shù)據(jù)庫(kù)52的一個(gè)或多個(gè) 微處理器48。網(wǎng)絡(luò)元件45還可以適于通過連接55連接到另一個(gè)數(shù)據(jù)庫(kù)53。數(shù)據(jù)庫(kù)53可 以是可搜索的,并且可以能夠?yàn)榫W(wǎng)絡(luò)元件45提供例如哪一個(gè)ISP與給定對(duì)等方相關(guān)聯(lián)之類 的信息,正如后面更加詳細(xì)地解釋的那樣。
[0047]在本發(fā)明的一些實(shí)施例中,網(wǎng)絡(luò)元件45可以是連接到網(wǎng)絡(luò)的已有系統(tǒng)組件?,F(xiàn)有 網(wǎng)絡(luò)元件45可以被編程來施行這里所描述的功能。舉例來說,現(xiàn)有網(wǎng)絡(luò)可以包括被編程來施行這里所描述的功能的網(wǎng)絡(luò)組件。在其他實(shí)施例中,網(wǎng)絡(luò)元件45可以被添加到網(wǎng)絡(luò)中 (而不是現(xiàn)有網(wǎng)絡(luò)組件)并且被配置成施行這里所描述的功能。
[0048]術(shù)語(yǔ)對(duì)等方和節(jié)點(diǎn)在后面可以互換使用。術(shù)語(yǔ)對(duì)等方通常指代對(duì)等網(wǎng)絡(luò)中的物理 實(shí)體(例如計(jì)算器件)。術(shù)語(yǔ)節(jié)點(diǎn)通常既指代對(duì)等網(wǎng)絡(luò)中的邏輯實(shí)體(例如所存儲(chǔ)的內(nèi)容)也 指代對(duì)等網(wǎng)絡(luò)中的物理實(shí)體(例如計(jì)算器件)。術(shù)語(yǔ)邏輯身份、鍵和/或受控對(duì)等方通常指 代DHT (例如DHT19)中的邏輯條目。
[0049]DHT可以把各個(gè)條目存儲(chǔ)為〈鍵,值〉配對(duì),其中鍵是散列函數(shù)的結(jié)果,值是關(guān)于 DHT19中的該條目的某種信息。舉例來說,所述值可以是節(jié)點(diǎn)標(biāo)識(shí)或名稱、關(guān)于網(wǎng)絡(luò)的信息 或者關(guān)于內(nèi)容的信息。關(guān)于文件或內(nèi)容的信息例如可以是托管該文件或內(nèi)容的對(duì)等方的地 址,所述值還可以包括文件名稱、指向文件在存儲(chǔ)該文件的對(duì)等方上的存儲(chǔ)器位置的指針 或者文件類型(例如視頻、音頻、程序)。
[0050]例如可以對(duì)與節(jié)點(diǎn)和/或內(nèi)容相關(guān)聯(lián)的信息施行散列函數(shù)。在一些示例性實(shí)施例 中,節(jié)點(diǎn)或?qū)Φ确?例如對(duì)等方40a)可以具有唯一標(biāo)識(shí)符或鍵,并且文件或內(nèi)容可以具有唯 一標(biāo)識(shí)符或鍵。
[0051]已經(jīng)知道,在利用DHT (例如DHT19)的傳統(tǒng)對(duì)等網(wǎng)絡(luò)中,具有某項(xiàng)內(nèi)容并且希望共 享該內(nèi)容的對(duì)等方簡(jiǎn)單地向DHT中的其標(biāo)識(shí)符(例如與該對(duì)等方相關(guān)聯(lián)的邏輯身份或鍵)與 該對(duì)等方的標(biāo)識(shí)符最接近的k個(gè)(通常是10個(gè))對(duì)等方聲明所述內(nèi)容。
[0052]希望下載內(nèi)容的對(duì)等方向所述最接近的已知對(duì)等方(其例如被存儲(chǔ)在DHT19中)請(qǐng) 求具有該內(nèi)容的對(duì)等方。所述最接近的已知對(duì)等方向希望下載內(nèi)容的對(duì)等方返回具有該內(nèi) 容的對(duì)等方的地址。隨后,希望下載內(nèi)容的對(duì)等方開始從具有該內(nèi)容的對(duì)等方下載內(nèi)容。
[0053]舉例來說,正如前面所描述的那樣,一種用于對(duì)等網(wǎng)絡(luò)的眾所周知的文件共享系 統(tǒng)被稱作BITTORRENT。BITT0RRENT文件共享系統(tǒng)使用get_peer (獲得對(duì)等方)對(duì)象來發(fā) 出內(nèi)容請(qǐng)求。一個(gè)對(duì)等方向該對(duì)等方已知其節(jié)點(diǎn)標(biāo)識(shí)的k個(gè)對(duì)等方發(fā)送get_peer消息。
[0054]已經(jīng)知道,BITTORRENT文件共享系統(tǒng)中的對(duì)等方利用其他已知對(duì)等方的消息做出 響應(yīng)。舉例來說,如果響應(yīng)對(duì)等方不知道包括所述內(nèi)容的任何對(duì)等方,則響應(yīng)對(duì)等方利用一 個(gè)已知對(duì)等方列表做出答復(fù),發(fā)出請(qǐng)求的對(duì)等方可以在下一次迭代中向所述已知對(duì)等方發(fā) 送消息,并且所述已知對(duì)等方是其標(biāo)識(shí)符更接近所請(qǐng)求文件的標(biāo)識(shí)符的對(duì)等方。已經(jīng)知道, 這一迭代處理持續(xù)到利用保有所請(qǐng)求內(nèi)容的一份拷貝或一部分的對(duì)等方列表對(duì)get_peer 消息做出答復(fù)為止。所述對(duì)等方列表例如可以包括該對(duì)等方的地址以及借以訪問所述內(nèi)容 的端口號(hào)。
[0055]本領(lǐng)域技術(shù)人員將認(rèn)識(shí)到,前面的BITTORRENT實(shí)例沒有考慮到發(fā)出請(qǐng)求的對(duì)等 方與具有內(nèi)容的對(duì)等方之間的任何網(wǎng)絡(luò)關(guān)系。發(fā)出請(qǐng)求的對(duì)等方從由于具有所述內(nèi)容而被 該發(fā)出請(qǐng)求的對(duì)等方所知曉的第一個(gè)對(duì)等方下載內(nèi)容。因此,對(duì)等方可以從任何其他對(duì)等 方下載內(nèi)容而不管其在網(wǎng)絡(luò)中的物理位置。其結(jié)果是,對(duì)等網(wǎng)絡(luò)在轉(zhuǎn)遞鏈路上生成大量通 信量,從而增加了網(wǎng)絡(luò)運(yùn)營(yíng)商的成本。
[0056]如果對(duì)等網(wǎng)絡(luò)實(shí)施通信量本地化,則針對(duì)內(nèi)容請(qǐng)求而返回的地址根據(jù)其與請(qǐng)求者 的網(wǎng)絡(luò)距離而被排序。來自與請(qǐng)求者相同的ISP的IP地址處于列表頂部。
[0057]為了減少對(duì)等應(yīng)用當(dāng)前所生成的大量轉(zhuǎn)遞通信量,一些示例性實(shí)施例在對(duì)等應(yīng)用 中引入了“延遲容限”。延遲容限定義了用戶在獲取文件時(shí)所能容忍的特定延遲。舉例來說,用戶可能在夜間很晚時(shí)開始下載一部電影并且預(yù)期會(huì)在第二天想要欣賞這部電影時(shí)已 完成下載。
[0058]一些示例性實(shí)施例使用該延遲容限來改進(jìn)對(duì)等網(wǎng)絡(luò)中的通信量本地化。如果文件 在本地不可用,則可以延遲文件下載(直到用戶可以容忍的延遲)。這樣就提高了請(qǐng)求者的 ISP內(nèi)的另一個(gè)對(duì)等方確實(shí)具有所請(qǐng)求內(nèi)容的概率。
[0059]圖4A和4B示出了根據(jù)一些示例性實(shí)施例的數(shù)據(jù)分組。如圖4A中所示,數(shù)據(jù)分組 可以包括報(bào)頭,所述報(bào)頭包括協(xié)議、大小和類型字段。數(shù)據(jù)分組還可以包括數(shù)據(jù)部分,所述 數(shù)據(jù)部分包括絕限和已解析搜索串字段。圖4A的數(shù)據(jù)分組例如可以是TCP消息數(shù)據(jù)分組。
[0060]協(xié)議字段的大小可以是一個(gè)字節(jié),并且包括針對(duì)文件共享所使用的協(xié)議的指示。 舉例來說,所述指示符可以表明例如注冊(cè)到MetaMachine, Inc.的eMule或eDonkey TM之 類的協(xié)議。
[0061]大小字段的大小可以是四個(gè)字節(jié),并且包括以字節(jié)計(jì)的關(guān)于數(shù)據(jù)分組/消息的大 小的指示。類型字段的大小可以是一個(gè)字節(jié),并且包括關(guān)于數(shù)據(jù)分組/消息的類型的指示。 舉例來說,所述指示符可以表明例如搜索請(qǐng)求、搜索結(jié)果、登錄、服務(wù)器或ID改變之類的類型。
[0062]絕限字段的大小可以是四個(gè)字節(jié),并且包括關(guān)于要求內(nèi)容的截止時(shí)間的指示。舉 例來說,所述絕限可以表明一個(gè)延遲容限(如前所述),其定義了用戶在獲取文件時(shí)所能容 忍的特定延遲。
[0063]已解析搜索串字段的大小可以變化,并且包括關(guān)于所請(qǐng)求內(nèi)容的指示。例如已經(jīng) 知道,已解析搜索串可以包括關(guān)于所請(qǐng)求內(nèi)容的指示。已解析搜索串可以包括例如“與”、 “或”和“非”之類的布爾條件,以便排除或擴(kuò)展針對(duì)內(nèi)容的搜索。用戶可以指定所要求的 文件類型和大小并且還設(shè)定可用性閾值(例如顯示出可以從至少5個(gè)其他客戶端獲得的結(jié) 果)。
[0064]如圖4B中所示,數(shù)據(jù)分組可以包括報(bào)頭,所述報(bào)頭包括協(xié)議和類型字段。數(shù)據(jù)分 組還可以包括數(shù)據(jù)部分,所述數(shù)據(jù)部分包括絕限和文件ID列表字段。圖4B的數(shù)據(jù)分組例 如可以是UDP消息數(shù)據(jù)分組。
[0065]協(xié)議字段的大小可以是一個(gè)字節(jié),并且包括針對(duì)文件共享所使用的協(xié)議的指示。 舉例來說,所述指示符可以表明例如eMule或eDonkey之類的協(xié)議。類型字段的大小可以 是一個(gè)字節(jié),并且包括關(guān)于數(shù)據(jù)分組/消息的類型的指示。舉例來說,所述指示符可以表明 例如搜索請(qǐng)求、搜索結(jié)果、獲得資源或找到資源之類的類型。
[0066]絕限字段的大小可以是四個(gè)字節(jié),并且包括關(guān)于要求內(nèi)容的截止時(shí)間的指示。舉 例來說,所述絕限可以表明一個(gè)延遲容限(如前所述),其定義了用戶在獲取文件時(shí)所能容 忍的特定延遲。
[0067]文件ID列表字段的大小可以變化,并且包括關(guān)于所請(qǐng)求內(nèi)容的指示。舉例來說, 文件ID列表可以包括關(guān)于一項(xiàng)或多項(xiàng)所請(qǐng)求內(nèi)容的文件ID的指示。文件ID可以通過對(duì) 文件的數(shù)據(jù)進(jìn)行散列來計(jì)算。
[0068]本領(lǐng)域技術(shù)人員將認(rèn)識(shí)到,例如可以基于消息傳送協(xié)議或文件共享協(xié)議而以許多 方式改變參照?qǐng)D4A和4B描述的數(shù)據(jù)分組。示例性實(shí)施例不限于圖4A和4B的數(shù)據(jù)分組。
[0069]圖5A-?不出了根據(jù)一個(gè)不例性實(shí)施例的用于在對(duì)等網(wǎng)絡(luò)中本地化通信量的一種方法的流程圖。在描述與圖5A和5B相關(guān)聯(lián)的方法的各個(gè)步驟時(shí)將參照?qǐng)D2和圖3的網(wǎng) 絡(luò)以及圖4A和4B中示出的數(shù)據(jù)分組。
[0070]參照?qǐng)D5A,在步驟S502中接收請(qǐng)求消息。舉例來說,所述請(qǐng)求消息可以是后面關(guān) 于圖6A更加詳細(xì)地描述的消息。請(qǐng)求消息可以包括針對(duì)內(nèi)容的請(qǐng)求以及關(guān)于何時(shí)將接收 到內(nèi)容的絕限。舉例來說,請(qǐng)求消息可以具有如前面在圖4A中示出的相關(guān)聯(lián)的數(shù)據(jù)分組。 參照?qǐng)D4A,絕限字段可以包括表明關(guān)于何時(shí)將接收到內(nèi)容的截止絕限的時(shí)間值。所述時(shí)間 值可以表明將接收到內(nèi)容的截止日期和時(shí)間?;蛘咚鰰r(shí)間值可以是被用來計(jì)算將接收到 內(nèi)容的截止日期和時(shí)間的值。
[0071]在步驟S504中,接收節(jié)點(diǎn)基于請(qǐng)求消息確定該接收節(jié)點(diǎn)是否包括所述內(nèi)容。舉例 來說,響應(yīng)消息可以包括表明響應(yīng)節(jié)點(diǎn)包括所述內(nèi)容的至少一部分的字段。并且所傳送的 響應(yīng)消息可以包括表明響應(yīng)節(jié)點(diǎn)將向所述對(duì)等方傳送內(nèi)容的字段。用于確定接收節(jié)點(diǎn)是否 包括內(nèi)容以及用于傳送包括關(guān)于內(nèi)容的指示的響應(yīng)消息的其他處理是本領(lǐng)域技術(shù)人員已 知的,并且為了簡(jiǎn)明起見將不做進(jìn)一步討論。但是由于接收節(jié)點(diǎn)和發(fā)出請(qǐng)求的節(jié)點(diǎn)與同一 網(wǎng)絡(luò)相關(guān)聯(lián),因此通信量根據(jù)示例性實(shí)施例被本地化。
[0072]在步驟S506中,如果接收節(jié)點(diǎn)具有所述內(nèi)容,則處理繼續(xù)到步驟S520。否則,處理 繼續(xù)到步驟S508。
[0073]如果接收節(jié)點(diǎn)在步驟S504中不具有所述內(nèi)容,則在步驟S508中接收節(jié)點(diǎn)確定該 接收節(jié)點(diǎn)是否知道與傳送了包括關(guān)于所述內(nèi)容的信息的消息的節(jié)點(diǎn)所屬的同一網(wǎng)絡(luò)(例如 同一 ISP)相關(guān)聯(lián)的其他節(jié)點(diǎn)。在步驟S510中,如果接收節(jié)點(diǎn)知道與所述網(wǎng)絡(luò)相關(guān)聯(lián)的包 括關(guān)于所請(qǐng)求內(nèi)容的信息的其他節(jié)點(diǎn),則在步驟S512中,接收節(jié)點(diǎn)向發(fā)出請(qǐng)求的節(jié)點(diǎn)傳送 響應(yīng)消息。所述響應(yīng)消息包括具有關(guān)于所述內(nèi)容的信息的節(jié)點(diǎn)列表。否則,處理繼續(xù)到步 驟 S514。
[0074]例如在步驟S508中,基于發(fā)出請(qǐng)求的節(jié)點(diǎn)的ISP對(duì)節(jié)點(diǎn)列表進(jìn)行過濾。經(jīng)過過濾 后的節(jié)點(diǎn)列表可以只包括與發(fā)出請(qǐng)求的節(jié)點(diǎn)所屬的同一 ISP相關(guān)聯(lián)的那些節(jié)點(diǎn)。經(jīng)過過濾 后的節(jié)點(diǎn)列表還可以包括關(guān)于請(qǐng)求者具有相對(duì)良好的質(zhì)量和/或相對(duì)便宜的連接性(例如 對(duì)等設(shè)置)的節(jié)點(diǎn)。在步驟S512中,基于所述經(jīng)過過濾后的節(jié)點(diǎn)列表利用包括對(duì)等方集合 或節(jié)點(diǎn)列表的響應(yīng)消息對(duì)發(fā)出請(qǐng)求的節(jié)點(diǎn)做出答復(fù)。
[0075]例如在步驟S510中,微處理器46可以確定發(fā)出請(qǐng)求的節(jié)點(diǎn)是網(wǎng)絡(luò)24的成員。此 夕卜,微處理器46還可以確定計(jì)算機(jī)3、4和7是網(wǎng)絡(luò)24的成員。根據(jù)一些示例性實(shí)施例,步 驟S508的本地對(duì)等方集合或節(jié)點(diǎn)列表將包括計(jì)算機(jī)3、4和7,并且將不包括其他網(wǎng)絡(luò)的計(jì) 算機(jī)。在步驟S512中,微處理器46可以傳送包括計(jì)算機(jī)3、4和7的列表的響應(yīng)消息。
[0076]在步驟S514中,如果如前所述的絕限已到期,則處理繼續(xù)到步驟S540。否則,處理 返回步驟S508。
[0077]參照?qǐng)D5B,在步驟S520中,接收節(jié)點(diǎn)確定該接收節(jié)點(diǎn)是否與發(fā)出請(qǐng)求的節(jié)點(diǎn)(傳 送了請(qǐng)求消息的節(jié)點(diǎn))所屬的同一網(wǎng)絡(luò)相關(guān)聯(lián)。例如首先可以確定與發(fā)出請(qǐng)求的節(jié)點(diǎn)相關(guān) 聯(lián)的ISP。舉例來說,微處理器46可以把與發(fā)出請(qǐng)求的節(jié)點(diǎn)相關(guān)聯(lián)的地址與從數(shù)據(jù)庫(kù)53獲 取的網(wǎng)絡(luò)信息進(jìn)行比較。替換地和/或附加地,微處理器46可以使用從DHT19讀取的信息。 例如微處理器46可以使用存儲(chǔ)在與發(fā)出請(qǐng)求的節(jié)點(diǎn)相關(guān)聯(lián)的值字段中的信息。
[0078]—旦確定與發(fā)出請(qǐng)求的節(jié)點(diǎn)相關(guān)聯(lián)的網(wǎng)絡(luò),微處理器46就可以把與發(fā)出請(qǐng)求的節(jié)點(diǎn)相關(guān)聯(lián)的網(wǎng)絡(luò)和與接收到請(qǐng)求消息的節(jié)點(diǎn)相關(guān)聯(lián)的網(wǎng)絡(luò)進(jìn)行比較,從而確定這兩個(gè)網(wǎng) 絡(luò)是否相同。舉例來說,如果兩個(gè)網(wǎng)絡(luò)是同一互聯(lián)網(wǎng)服務(wù)提供商(ISP)網(wǎng)絡(luò),則這兩個(gè)網(wǎng)絡(luò) 可以是相同的。
[0079]已解析搜索串可以是表明內(nèi)容的串。如前所述,表明內(nèi)容的已解析搜索串是本領(lǐng) 域技術(shù)人員已知的。舉例來說,請(qǐng)求消息可以是如前所述的BITTORRENT get_peer消息。
[0080]在步驟S522中,如果接收節(jié)點(diǎn)和發(fā)出請(qǐng)求的節(jié)點(diǎn)不與(如在步驟S520中確定的) 同一網(wǎng)絡(luò)相關(guān)聯(lián),則處理移動(dòng)到步驟S530。否則,處理繼續(xù)到步驟S524。
[0081]在步驟S524中,接收節(jié)點(diǎn)向發(fā)出請(qǐng)求的節(jié)點(diǎn)傳送響應(yīng)消息。所述響應(yīng)消息表明接 收節(jié)點(diǎn)具有所述內(nèi)容。舉例來說,響應(yīng)消息可以包括表明響應(yīng)節(jié)點(diǎn)包括所述內(nèi)容的至少一 部分的字段。并且所傳送的響應(yīng)消息可以包括表明響應(yīng)節(jié)點(diǎn)將向所述對(duì)等方傳送內(nèi)容的字 段。用于確定接收節(jié)點(diǎn)是否包括內(nèi)容以及用于傳送包括關(guān)于內(nèi)容的指示的響應(yīng)消息的其他 處理是本領(lǐng)域技術(shù)人員已知的,并且為了簡(jiǎn)明起見將不做進(jìn)一步討論。但是由于接收節(jié)點(diǎn) 和發(fā)出請(qǐng)求的節(jié)點(diǎn)不與同一網(wǎng)絡(luò)相關(guān)聯(lián),因此通信量未被本地化,這是因?yàn)榻邮展?jié)點(diǎn)不與 發(fā)出請(qǐng)求的節(jié)點(diǎn)所屬的同一網(wǎng)絡(luò)相關(guān)聯(lián)。
[0082]參照?qǐng)D5C,在步驟S530中,接收節(jié)點(diǎn)確定該接收節(jié)點(diǎn)是否知道與傳送了包括關(guān)于 所述內(nèi)容的信息的消息的節(jié)點(diǎn)所屬的同一網(wǎng)絡(luò)(例如同一 ISP)相關(guān)聯(lián)的其他節(jié)點(diǎn)。在步驟 S532中,如果接收節(jié)點(diǎn)知道與所述網(wǎng)絡(luò)相關(guān)聯(lián)的包括關(guān)于所請(qǐng)求內(nèi)容的信息的其他節(jié)點(diǎn), 則在步驟S534中,接收節(jié)點(diǎn)向發(fā)出請(qǐng)求的節(jié)點(diǎn)傳送響應(yīng)消息。所述響應(yīng)消息包括具有關(guān)于 所述內(nèi)容的信息的節(jié)點(diǎn)列表。否則,處理繼續(xù)到步驟S536。
[0083]例如在步驟S530中,基于發(fā)出請(qǐng)求的節(jié)點(diǎn)的ISP對(duì)節(jié)點(diǎn)列表進(jìn)行過濾。經(jīng)過過濾 后的節(jié)點(diǎn)列表可以只包括與發(fā)出請(qǐng)求的節(jié)點(diǎn)所屬的同一 ISP相關(guān)聯(lián)的那些節(jié)點(diǎn)。經(jīng)過過濾 后的節(jié)點(diǎn)列表還可以包括關(guān)于請(qǐng)求者具有相對(duì)良好的質(zhì)量和/或相對(duì)便宜的連接性(例如 對(duì)等設(shè)置)的節(jié)點(diǎn)。在步驟S534中,基于所述經(jīng)過過濾后的節(jié)點(diǎn)列表利用包括對(duì)等方集合 或節(jié)點(diǎn)列表的響應(yīng)消息對(duì)發(fā)出請(qǐng)求的節(jié)點(diǎn)做出答復(fù)。
[0084]例如在步驟S532中,微處理器46可以確定發(fā)出請(qǐng)求的節(jié)點(diǎn)是網(wǎng)絡(luò)24的成員。此 夕卜,微處理器46還可以確定計(jì)算機(jī)3、4和7是網(wǎng)絡(luò)24的成員。根據(jù)一些示例性實(shí)施例,步 驟S530的本地對(duì)等方集合或節(jié)點(diǎn)列表將包括計(jì)算機(jī)3、4和7,并且將不包括其他網(wǎng)絡(luò)的計(jì) 算機(jī)。在步驟S534中,微處理器46可以傳送包括計(jì)算機(jī)3、4和7的列表的響應(yīng)消息。
[0085]在步驟S536中,如果如前所述的絕限已到期,則處理繼續(xù)到步驟S540。否則,處理 返回步驟S530。
[0086]參照?qǐng)D5D,在步驟S540中,接收節(jié)點(diǎn)確定該接收節(jié)點(diǎn)是否知道與所述網(wǎng)絡(luò)(例如 所述ISP)相關(guān)聯(lián)的包括關(guān)于所請(qǐng)求內(nèi)容的信息的其他節(jié)點(diǎn)。在步驟S542中,如果接收節(jié) 點(diǎn)知道與所述網(wǎng)絡(luò)相關(guān)聯(lián)的包括關(guān)于所請(qǐng)求內(nèi)容的信息的其他節(jié)點(diǎn),則在步驟S544中,接 收節(jié)點(diǎn)向發(fā)出請(qǐng)求的節(jié)點(diǎn)傳送響應(yīng)消息。所述響應(yīng)消息包括具有關(guān)于所述內(nèi)容的信息的節(jié) 點(diǎn)列表。否則,處理繼續(xù)到步驟S546。
[0087]例如在步驟S540中,所述節(jié)點(diǎn)列表并不像前面關(guān)于步驟S508和S530所描述的那 樣。因此在步驟S544中,利用響應(yīng)消息對(duì)發(fā)出請(qǐng)求的節(jié)點(diǎn)做出答復(fù),所述響應(yīng)消息包括不 具有基于網(wǎng)絡(luò)的區(qū)別的對(duì)等方集合或節(jié)點(diǎn)列表。
[0088]在步驟S546中,基于與所述內(nèi)容的邏輯標(biāo)識(shí)符(鍵)的節(jié)點(diǎn)鄰近性確定一個(gè)節(jié)點(diǎn)列表。所述節(jié)點(diǎn)列表包括與所述內(nèi)容的邏輯身份接近的節(jié)點(diǎn)。在步驟S548中,向請(qǐng)求內(nèi)容的 節(jié)點(diǎn)傳送響應(yīng)消息,所述響應(yīng)消息包括基于與內(nèi)容的邏輯標(biāo)識(shí)符(鍵)的節(jié)點(diǎn)鄰近性的節(jié)點(diǎn) 列表。舉例來說,所述響應(yīng)消息可以包括表明響應(yīng)節(jié)點(diǎn)包括所述內(nèi)容的至少一部分的字段。 并且所傳送的響應(yīng)消息可以包括表明響應(yīng)節(jié)點(diǎn)將向所述對(duì)等方傳送內(nèi)容的字段。用于根據(jù) 與內(nèi)容的邏輯標(biāo)識(shí)符的節(jié)點(diǎn)鄰近性來確定節(jié)點(diǎn)列表以及用于傳送所述列表的其他處理是 本領(lǐng)域技術(shù)人員已知的,并且為了簡(jiǎn)明起見將不做進(jìn)一步討論。
[0089]圖6A和6B示出了根據(jù)一個(gè)示例性實(shí)施例的用于在對(duì)等網(wǎng)絡(luò)中本地化通信量的另 一種方法的流程圖。在描述與圖6A和6B相關(guān)聯(lián)的方法的各個(gè)步驟時(shí)將參照?qǐng)D2和圖3的 網(wǎng)絡(luò)以及圖4A和4B中示出的數(shù)據(jù)分組。
[0090]參照?qǐng)D6A,在步驟S605中,傳送一則消息。所述消息可以包括針對(duì)內(nèi)容的請(qǐng)求以 及關(guān)于何時(shí)將接收到內(nèi)容的截止絕限。所述消息例如可以具有如前面在圖4A中示出的相 關(guān)聯(lián)的數(shù)據(jù)分組。參照?qǐng)D4A,絕限字段可以包括表明關(guān)于何時(shí)將接收到內(nèi)容的截止絕限的 時(shí)間值。所述時(shí)間值可以表明將接收到內(nèi)容的截止日期和時(shí)間。或者所述時(shí)間值可以是被 用來計(jì)算將接收到內(nèi)容的截止日期和時(shí)間的值。
[0091]已解析搜索串可以是表明內(nèi)容的串。如前所述,表明內(nèi)容的已解析搜索串是本領(lǐng) 域技術(shù)人員已知的。舉例來說,所述消息可以是如前所述的BITTORRENT get_peer消息。
[0092]在步驟S610中監(jiān)測(cè)響應(yīng)消息。在步驟S615中確定響應(yīng)消息是否是響應(yīng)于所傳 送的消息而接收到的消息。如果響應(yīng)于所傳送的消息接收到響應(yīng)消息,則處理繼續(xù)到步驟 S620。否則,處理返回步驟S610。監(jiān)測(cè)消息以及確定響應(yīng)消息是否與所傳送的消息相關(guān)聯(lián) 的步驟是本領(lǐng)域技術(shù)人員已知的,并且為了簡(jiǎn)明起見將不做進(jìn)一步討論。
[0093]在步驟S620中,所述對(duì)等方確定響應(yīng)消息是否接收自與該對(duì)等方所屬的同一網(wǎng) 絡(luò)相關(guān)聯(lián)的一個(gè)節(jié)點(diǎn)。例如可以把與響應(yīng)消息相關(guān)聯(lián)的地址和與該對(duì)等方相關(guān)聯(lián)的地址進(jìn) 行比較。如果全部?jī)蓚€(gè)地址都與同一網(wǎng)絡(luò)(例如互聯(lián)網(wǎng)服務(wù)提供商(ISP)網(wǎng)絡(luò))相關(guān)聯(lián),則 可以確定所述節(jié)點(diǎn)和所述對(duì)等方與同一網(wǎng)絡(luò)相關(guān)聯(lián)。如果響應(yīng)消息是接收自與所述對(duì)等方 所屬的同一網(wǎng)絡(luò)相關(guān)聯(lián)的一個(gè)節(jié)點(diǎn),則處理繼續(xù)到步驟S630。否則,處理繼續(xù)到步驟S625, 并且將所述消息排入隊(duì)列或存儲(chǔ)。例如可以在與數(shù)據(jù)庫(kù)52相關(guān)聯(lián)的存儲(chǔ)器位置處把所述 消息排入隊(duì)列或存儲(chǔ)??梢园阉鱿㈥P(guān)于在步驟S605中傳送的消息排入隊(duì)列或存儲(chǔ)。可 以把所述消息排入隊(duì)列或存儲(chǔ)以便施行將來的某種處理。例如可以按照后面關(guān)于圖6B所 描述的那樣對(duì)排入隊(duì)列或存儲(chǔ)的消息進(jìn)行處理。在把消息排入隊(duì)列或存儲(chǔ)之后,處理返回 步驟S610。
[0094]在步驟S630中,所述對(duì)等方確定響應(yīng)消息是否表明響應(yīng)節(jié)點(diǎn)具有所請(qǐng)求的內(nèi)容。 如果在步驟S630中響應(yīng)節(jié)點(diǎn)具有所請(qǐng)求的內(nèi)容,則在步驟S635中向具有所述內(nèi)容的響應(yīng) 節(jié)點(diǎn)傳送一則消息。所述消息可以是針對(duì)傳送內(nèi)容的請(qǐng)求。否則,處理移動(dòng)到步驟S640。 舉例來說,響應(yīng)消息可以包括表明響應(yīng)節(jié)點(diǎn)包括所述內(nèi)容的至少一部分的字段。并且所傳 送的消息可以包括表明響應(yīng)節(jié)點(diǎn)將向所述對(duì)等方傳送內(nèi)容的字段。用于確定響應(yīng)消息是否 表明響應(yīng)節(jié)點(diǎn)具有所請(qǐng)求的內(nèi)容以及用于請(qǐng)求內(nèi)容的其他處理是本領(lǐng)域技術(shù)人員已知的, 并且為了簡(jiǎn)明起見將不做進(jìn)一步討論。
[0095]在步驟S640中,所述對(duì)等方確定響應(yīng)消息是否包括節(jié)點(diǎn)列表。如果響應(yīng)消息包括 節(jié)點(diǎn)列表,則處理繼續(xù)到步驟S645。否則,處理返回步驟S610。在步驟S645中對(duì)所述節(jié)點(diǎn)列表進(jìn)行處理,并且處理返回步驟S605。所述消息例如可以包括表明該消息包括節(jié)點(diǎn)列 表的字段。對(duì)等方可以讀取該節(jié)點(diǎn)列表并且向列表中的節(jié)點(diǎn)傳送消息,正如前面關(guān)于步驟 S605所描述的那樣。用于確定響應(yīng)消息是否包括節(jié)點(diǎn)列表以及用于處理節(jié)點(diǎn)列表的其他處 理是本領(lǐng)域技術(shù)人員已知的,并且為了簡(jiǎn)明起見將不做進(jìn)一步討論。
[0096]圖6B示出了根據(jù)一些示例性實(shí)施例的用于在對(duì)等網(wǎng)絡(luò)中由對(duì)等方處理排入隊(duì)列 或存儲(chǔ)的消息的方法的流程圖。所述排入隊(duì)列或存儲(chǔ)的消息可以是如前所述的在步驟S625 中存儲(chǔ)的消息。
[0097]參照?qǐng)D6B,在步驟S650中,所述對(duì)等方確定如前所述的絕限是否已到期。如果所 述絕限已到期,則處理繼續(xù)到步驟S655。否則,處理在步驟S650處循環(huán)。如前所述,由于接 收節(jié)點(diǎn)和發(fā)出請(qǐng)求的節(jié)點(diǎn)不與同一網(wǎng)絡(luò)相關(guān)聯(lián),因此處理移動(dòng)到步驟S650 (并且循環(huán))。因 此,如果接收節(jié)點(diǎn)和發(fā)出請(qǐng)求的節(jié)點(diǎn)不與同一網(wǎng)絡(luò)相關(guān)聯(lián),則接收節(jié)點(diǎn)不采取行動(dòng)。直到在 步驟S650中所述絕限到期之后為止都不采取行動(dòng)。因此對(duì)等網(wǎng)絡(luò)(例如網(wǎng)絡(luò)24)中的通信 量本地化得到改進(jìn)。
[0098]在步驟S655中,所述對(duì)等方確定是否已找到內(nèi)容。舉例來說,與該對(duì)等方相關(guān)聯(lián) 的客戶端可以存儲(chǔ)向該對(duì)等方通知已經(jīng)找到內(nèi)容的指示符。用于確定是否已找到內(nèi)容的其 他處理是本領(lǐng)域技術(shù)人員已知的,并且為了簡(jiǎn)明起見將不做進(jìn)一步討論。如果尚未找到內(nèi) 容,則處理繼續(xù)到步驟S665。否則,處理移動(dòng)到步驟S660。在步驟S665中,所述對(duì)等方確定 是否將要?jiǎng)h除所有排入隊(duì)列或存儲(chǔ)的消息。舉例來說,客戶端應(yīng)用可以包括用以僅僅找到 與本地網(wǎng)絡(luò)相關(guān)聯(lián)的內(nèi)容的設(shè)定。所述設(shè)定可以與一則內(nèi)容請(qǐng)求相關(guān)聯(lián),或者可以是與所 有內(nèi)容請(qǐng)求相關(guān)聯(lián)的通用設(shè)定。如果所述設(shè)定表明應(yīng)當(dāng)從本地網(wǎng)絡(luò)請(qǐng)求內(nèi)容,則所述對(duì)等 方可以決定刪除所有排入隊(duì)列或存儲(chǔ)的消息。如果將要?jiǎng)h除所有排入隊(duì)列或存儲(chǔ)的消息, 則處理移動(dòng)到步驟S660。否則,處理繼續(xù)到步驟S670。
[0099]在步驟S660中,刪除排入隊(duì)列或存儲(chǔ)的消息。所述消息例如可以在與數(shù)據(jù)庫(kù)52 相關(guān)聯(lián)的存儲(chǔ)器位置處被排入隊(duì)列或存儲(chǔ)。所述消息可以關(guān)于在步驟S605 (如前所述)中 傳送的消息被排入隊(duì)列或存儲(chǔ)。在步驟S660中,可以從數(shù)據(jù)庫(kù)52中刪除與在步驟S605中 傳送的消息相關(guān)聯(lián)的消息。
[0100]在步驟S670中,所述對(duì)等方確定隊(duì)列是否為空。舉例來說,所述對(duì)等方可以對(duì)數(shù) 據(jù)庫(kù)52進(jìn)行查詢以便確定是否存在與在步驟S605中傳送的消息相關(guān)聯(lián)的任何消息。如果 隊(duì)列為空,則處理繼續(xù)到將來的某種其它處理。如果隊(duì)列不為空,則處理繼續(xù)到步驟S675, 其中從隊(duì)列中選擇一則消息。例如從數(shù)據(jù)庫(kù)52的查詢中選擇一則消息。
[0101]在步驟S680中,所述對(duì)等方確定所選擇的消息是否表明響應(yīng)節(jié)點(diǎn)具有所請(qǐng)求的 內(nèi)容。如果在步驟S680中響應(yīng)節(jié)點(diǎn)具有所請(qǐng)求的內(nèi)容,則在步驟S685中向具有所述內(nèi)容 的響應(yīng)節(jié)點(diǎn)傳送消息。所述消息可以是針對(duì)傳送內(nèi)容的請(qǐng)求。否則,處理移動(dòng)到步驟S690。 舉例來說,響應(yīng)消息可以包括表明響應(yīng)節(jié)點(diǎn)包括所述內(nèi)容的至少一部分的字段。并且所傳 送的消息可以包括表明響應(yīng)節(jié)點(diǎn)將向所述對(duì)等方傳送內(nèi)容的字段。用于確定響應(yīng)消息是否 表明響應(yīng)節(jié)點(diǎn)具有所請(qǐng)求的內(nèi)容以及用于請(qǐng)求所述內(nèi)容的其他處理是本領(lǐng)域技術(shù)人員已 知的,并且為了簡(jiǎn)明起見將不做進(jìn)一步討論。
[0102]在步驟S690中,所述對(duì)等方確定所選擇的消息是否包括節(jié)點(diǎn)列表。如果響應(yīng)消息 包括節(jié)點(diǎn)列表,則處理繼續(xù)到步驟S695。否則,處理移動(dòng)到步驟S698。在步驟S695中對(duì)所述節(jié)點(diǎn)列表進(jìn)行處理,并且處理繼續(xù)到步驟S698。所述消息例如可以包括表明該消息包括 節(jié)點(diǎn)列表的字段。所述對(duì)等方可以讀取該節(jié)點(diǎn)列表并且向列表中的節(jié)點(diǎn)傳送消息,正如前 面關(guān)于步驟S605所描述的那樣。用于確定響應(yīng)消息是否包括節(jié)點(diǎn)列表以及用于處理節(jié)點(diǎn) 列表的其他處理是本領(lǐng)域技術(shù)人員已知的,并且為了簡(jiǎn)明起見將不做進(jìn)一步討論。
[0103]在步驟S698中,所述對(duì)等方確定隊(duì)列是否為空。舉例來說,所述對(duì)等方可以對(duì)數(shù) 據(jù)庫(kù)52進(jìn)行查詢以便確定是否存在與在步驟S605中傳送的消息相關(guān)聯(lián)的任何消息。如果 隊(duì)列為空,則處理繼續(xù)到將來的某種其它處理。如果隊(duì)列不為空,則處理返回到步驟S675。
[0104]可以迭代地重復(fù)在圖6A和6B中示出的方法的各個(gè)步驟,直到全部所請(qǐng)求的內(nèi)容 都被請(qǐng)求并下載到發(fā)出請(qǐng)求的對(duì)等方為止。
[0105]可以通過修改施行文件共享的客戶端應(yīng)用(例如BITTORRENT文件共享系統(tǒng))來實(shí) 施基于圖5A、5B、6A和6B的示例性實(shí)施例的對(duì)等網(wǎng)絡(luò)中的通信量本地化。
[0106]本發(fā)明的替換實(shí)施例可以被實(shí)施為與計(jì)算機(jī)系統(tǒng)一起使用的計(jì)算機(jī)程序產(chǎn)品,所 述計(jì)算機(jī)程序產(chǎn)品例如是存儲(chǔ)在例如磁盤、CD-R0M、R0M或固定盤之類的有形或非瞬時(shí)性數(shù) 據(jù)記錄介質(zhì)(計(jì)算機(jī)可讀介質(zhì))上的一系列計(jì)算機(jī)指令、代碼段或程序段,或者被具體實(shí)現(xiàn) 在計(jì)算機(jī)數(shù)據(jù)信號(hào)中,其中通過有形介質(zhì)或者例如微波或紅外之類的無(wú)線介質(zhì)來傳送所述 信號(hào)。所述一系列計(jì)算機(jī)指令、代碼段或程序段可以構(gòu)成前面描述的示例性實(shí)施例的方法 的全部或部分功能,并且還可以被存儲(chǔ)在任何易失性或非易失性存儲(chǔ)器器件中,比如半導(dǎo) 體、磁性、光學(xué)或其他存儲(chǔ)器器件。
[0107]雖然前面具體示出并描述了一些示例性實(shí)施例,但是本領(lǐng)域技術(shù)人員將會(huì)理解 至IJ,在不背離權(quán)利要求書的精神和范圍的情況下可以在其中做出許多形式和細(xì)節(jié)方面的變 化。
[0108]通過如前描述本發(fā)明,將會(huì)明顯看到本發(fā)明可以有許多方面的變化。這樣的變化 不應(yīng)當(dāng)被視為背離本發(fā)明,相反所有這些修改都意圖被包括在本發(fā)明的范圍內(nèi)。
【權(quán)利要求】
1.一種方法,其包括:由對(duì)等網(wǎng)絡(luò)的第一節(jié)點(diǎn)向與所述對(duì)等網(wǎng)絡(luò)相關(guān)聯(lián)的一個(gè)或多個(gè)其他節(jié)點(diǎn)傳送第一消 息,所述消息包括針對(duì)內(nèi)容的請(qǐng)求以及關(guān)于何時(shí)將由第一節(jié)點(diǎn)接收到內(nèi)容的絕限。
2.權(quán)利要求1的方法,其中,第一消息包括數(shù)據(jù)分組,所述數(shù)據(jù)分組具有多個(gè)字段,所 述多個(gè)字段包括表明針對(duì)內(nèi)容的請(qǐng)求的第一字段和表明絕限的第二字段。
3.權(quán)利要求1的方法,其還包括:從第二節(jié)點(diǎn)接收第二消息,所述第二節(jié)點(diǎn)是所述一個(gè)或多個(gè)其他節(jié)點(diǎn)當(dāng)中的一個(gè),所 述第二消息表明第二節(jié)點(diǎn)包括所述內(nèi)容的至少一部分;以及向第二節(jié)點(diǎn)傳送第三消息,所述第三消息請(qǐng)求第二節(jié)點(diǎn)向第一節(jié)點(diǎn)傳送所述內(nèi)容。
4.權(quán)利要求1的方法,其還包括:從第二節(jié)點(diǎn)接收第二消息,所述第二節(jié)點(diǎn)是所述一個(gè)或多個(gè)其他節(jié)點(diǎn)當(dāng)中的一個(gè),所 述第二消息包括節(jié)點(diǎn)列表;以及向與所述節(jié)點(diǎn)列表相關(guān)聯(lián)的一個(gè)或多個(gè)節(jié)點(diǎn)傳送第三消息,所述第三消息包括針對(duì)內(nèi) 容的請(qǐng)求和絕限。
5.一種方法,其包括:由對(duì)等網(wǎng)絡(luò)的第一節(jié)點(diǎn)從與所述對(duì)等網(wǎng)絡(luò)相關(guān)聯(lián)的第二節(jié)點(diǎn)接收第一消息,所述第一 消息包括針對(duì)內(nèi)容的請(qǐng)求以及關(guān)于何時(shí)將接收到內(nèi)容的絕限;如果所述絕限尚未到期并且第一節(jié)點(diǎn)具有與所述內(nèi)容有關(guān)的信息,則由第一節(jié)點(diǎn)向第 二節(jié)點(diǎn)傳送第二消息,所述第二消息表明第一節(jié)點(diǎn)具有與所述內(nèi)容有關(guān)的信息;以及如果所述絕限已經(jīng)到期,則由第一節(jié)點(diǎn)向第二節(jié)點(diǎn)傳送第三消息,所述第三消息包括 具有與所述對(duì)等網(wǎng)絡(luò)相關(guān)聯(lián)的一個(gè)或多個(gè)其他節(jié)點(diǎn)的第一節(jié)點(diǎn)列表。
6.權(quán)利要求5的方法,其中,第一消息包括數(shù)據(jù)分組,所述數(shù)據(jù)分組具有多個(gè)字段,所 述多個(gè)字段包括表明針對(duì)內(nèi)容的請(qǐng)求的第一字段和表明絕限的第二字段。
7.權(quán)利要求5的方法,其中,與所述內(nèi)容有關(guān)的信息包括表明第一節(jié)點(diǎn)具有所述內(nèi)容 的至少一部分的指示和第二節(jié)點(diǎn)列表的其中之一,所述第二節(jié)點(diǎn)列表與第二節(jié)點(diǎn)所屬的同 一網(wǎng)絡(luò)相關(guān)聯(lián)。
8.權(quán)利要求7的方法,其中,第二節(jié)點(diǎn)列表包括與所述對(duì)等網(wǎng)絡(luò)相關(guān)聯(lián)的更接近所述 內(nèi)容的節(jié)點(diǎn)。
9.權(quán)利要求5的方法,其中,第一節(jié)點(diǎn)列表與不同于第二節(jié)點(diǎn)的網(wǎng)絡(luò)相關(guān)聯(lián)。
10.權(quán)利要求9的方法,其中,第一節(jié)點(diǎn)列表包括與所述對(duì)等網(wǎng)絡(luò)相關(guān)聯(lián)的更接近所述 內(nèi)容的節(jié)點(diǎn)。
【文檔編號(hào)】H04L29/08GK103460671SQ201280005562
【公開日】2013年12月18日 申請(qǐng)日期:2012年1月10日 優(yōu)先權(quán)日:2011年1月17日
【發(fā)明者】M·瓦爾韋羅, M·施泰納 申請(qǐng)人:阿爾卡特朗訊公司