專利名稱:一種p2p疊加網(wǎng)中請求應(yīng)答方法、裝置和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機(jī)網(wǎng)絡(luò)技術(shù)領(lǐng)域,特別涉及一種P2P疊加網(wǎng)中請求應(yīng)答 方法、裝置和系統(tǒng)。
背景技術(shù):
P2P (P2P)技術(shù)將大量的對等體(Peer)節(jié)點(diǎn)組織起來,形成一個疊加 網(wǎng)絡(luò)。分布式哈希表(Distributed Hash Table, DHT)是其中一種疊加網(wǎng) (Overlay )組織技術(shù)。DHT算法中利用 一個哈??臻g來對疊加網(wǎng)絡(luò)中的節(jié) 點(diǎn)以及要存儲到疊加網(wǎng)絡(luò)中的資源或者信息進(jìn)行哈希計算。標(biāo)識疊加網(wǎng)絡(luò)中 的對等節(jié)點(diǎn)的哈希值,稱為對等體標(biāo)識;而標(biāo)識資源或者信息的哈希值,被 稱為4建值。目前IETF的P2P會話初始協(xié)議(SIP )工作組正在制定的P2PSIP Peer協(xié)議,就是希望能夠?qū)eer之間的行為進(jìn)行標(biāo)準(zhǔn)化,使形成的P2P疊 加網(wǎng)絡(luò)能夠提供分布式數(shù)據(jù)庫服務(wù)。位于疊加網(wǎng)上的對等體,或者其他的節(jié) 點(diǎn),如客戶節(jié)點(diǎn),可以利用對等體形成的分布式數(shù)據(jù)庫來存儲和訪問數(shù)據(jù), 例如可以存儲和訪問SIPURI及其相關(guān)聯(lián)的IP地址信息。
P2P疊加網(wǎng)絡(luò)上消息的傳遞依賴于通過特定DHT算法計算得到的哈希 值,這個值可能是對等體標(biāo)識,也可能是鍵值。但是,P2P消息的傳遞是通 過每個對等體以消息相關(guān)的哈希值來查找本地保存的路由信息,獲得下一跳 對等體,然后將消息繼續(xù)發(fā)送給選擇的對等體。每個對等體在接收到消息時, 判斷是否由本對等體負(fù)責(zé)這個鍵值,如果是,則停止轉(zhuǎn)發(fā)消息,而進(jìn)入特定 的消息處理流程。
目前大部分DHT算法支持的消息類型有加入(JOIN )、離開(LEAVE )、 獲取(GET)、推送(PUT)等等。在大部分的P2P應(yīng)用系統(tǒng)中,疊加網(wǎng)上
7事務(wù)的處理是通過請求和與請求相關(guān)的應(yīng)答來完成的。舉個例子,如果對等
體A想要知道鍵值K所對應(yīng)的信息,通常情況,對等體A需要發(fā)送一個GET 請求,并在疊加網(wǎng)上路由。對等體A隨后等待GET請求的應(yīng)答,從而判斷 請求是否成功;如果成功,則從應(yīng)答中得到鍵值K所對應(yīng)的信息。
P2P消息的事務(wù)中請求和應(yīng)答的通信模式主要包括迭代方式、遞歸方式 和半遞歸方式,從處理時延等角度來看,其中半遞歸方式是最高效的,也是 目前被廣泛采用的通信模式。在半遞歸的通信模式下,請求在P2P疊加網(wǎng)被 轉(zhuǎn)發(fā),直至轉(zhuǎn)發(fā)到目的對等體;目的對等體將應(yīng)答直接通過IP路由返回給 請求的發(fā)送對等體。圖1所示為半遞歸通信模式的示意圖。首先,對等體A 生成攜帶對等體A的路由信息以及所需鍵值的請求,將該請求發(fā)送至其鄰 居對等體B,對等體B以所述請求相關(guān)的哈希值來查找本地保存的路由信息, 獲得下一跳鄰居對等體C,將該請求轉(zhuǎn)發(fā)到對等體C;對等體C以所述請求 相關(guān)的哈希值來查找本地保存的路由信息,獲得下一跳鄰居對等體D,將該 請求轉(zhuǎn)發(fā)到對等體D;對等體D判斷自身負(fù)責(zé)該請求的鍵值,則生成包含所 述鍵值對應(yīng)信息的應(yīng)答消息,并根據(jù)所述請求中的對等體A的路由信息, 將該應(yīng)答消息直接發(fā)送給對等體A。在上述過程中,對等體A是發(fā)送請求的 對等體,即發(fā)送對等體;對等體D是對該請求進(jìn)行處理的對等體,即目標(biāo) 對等體。
網(wǎng)絡(luò)地址轉(zhuǎn)換(Network Address Translation, NAT )會給疊加網(wǎng)絡(luò)上對 等體之間的通信帶來困難。對于一個穩(wěn)定的疊加網(wǎng),可以認(rèn)為鄰居對等體之 間可以進(jìn)行通信,即使他們之間存在NAT。但是,半遞歸通信模式下,目 標(biāo)對等體和發(fā)送對等體往往不是鄰居對等體,如果它們之間存在NAT,則 很可能出現(xiàn)通信失敗。如圖2所示,發(fā)送對等體A發(fā)送請求;請求經(jīng)過對 等體B、 C最終到達(dá)對等體D。對等體D可以利用請求中攜帶的對等體A 的IP地址信息直接將應(yīng)答返回給對等體A。但是如果A處于NAT后,A在 請求中攜帶的地址是私網(wǎng)地址,如果對等體D無法對該地址進(jìn)行正確的地 址轉(zhuǎn)換,則對等體D發(fā)送的應(yīng)答消息被路由器直接丟棄或者是發(fā)送到一個不是A的主機(jī)??傊?,目的對等體D無法將應(yīng)答正確的回送給發(fā)送對等體 A。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明實施例提出一種P2P疊加網(wǎng)中請求應(yīng)答方法和裝置, 可以避免半遞歸通信模式下由于NAT造成的通信失敗。
本發(fā)明實施例提出的一種P2P疊加網(wǎng)中請求應(yīng)答方法,包括如下步驟 目的對等體接收到攜帶中轉(zhuǎn)節(jié)點(diǎn)地址的請求消息,處理請求并生成應(yīng)答
消息,根據(jù)所述請求消息中的中轉(zhuǎn)節(jié)點(diǎn)地址,將所述應(yīng)答消息發(fā)送至所述中
轉(zhuǎn)節(jié)點(diǎn),所述中轉(zhuǎn)節(jié)點(diǎn)將所述應(yīng)答消息轉(zhuǎn)發(fā)至所述請求消息的發(fā)送對等體。 本發(fā)明實施例還"t是出一種P2P疊加網(wǎng)中請求應(yīng)答方法,包括如下步驟 具有公網(wǎng)IP地址的中轉(zhuǎn)節(jié)點(diǎn)收到來自發(fā)送對等體的請求消息,將所述
請求消息的源IP地址和端口號作為發(fā)送對等體的地址信息,將所述請求消
息發(fā)送到疊加網(wǎng)中的其它對等體;
中轉(zhuǎn)節(jié)點(diǎn)接收到來自目的對等體的應(yīng)答消息,根據(jù)所述發(fā)送對等體的地
址信息,將所述應(yīng)答消息發(fā)送至所述發(fā)送對等體。
本發(fā)明實施例提出的一種P2P疊加網(wǎng)的對等體,包括
中轉(zhuǎn)節(jié)點(diǎn)地址信息模塊,用于收集與本對等體具有直接連接的疊加網(wǎng)的
對等體或疊加網(wǎng)外的網(wǎng)絡(luò)節(jié)點(diǎn)的地址信息,生成中轉(zhuǎn)節(jié)點(diǎn)地址表;
請求消息處理模塊,用于將所述中轉(zhuǎn)節(jié)點(diǎn)地址信息模塊所生成的中轉(zhuǎn)節(jié)
點(diǎn)地址表中的地址信息添加到請求消息中。
本發(fā)明實施例還提出一種P2P疊加網(wǎng)的對等體,所述對等體包括 應(yīng)答處理模塊,用于根據(jù)本對等體所收到的請求消息進(jìn)行相應(yīng)處理,并
生成應(yīng)答消息;
應(yīng)答消息發(fā)送模塊,用于根據(jù)本對等體所收到的請求消息中的中轉(zhuǎn)節(jié)點(diǎn) 地址,發(fā)送所述應(yīng)答處理模塊生成的應(yīng)答消息。本發(fā)明實施例還提出一種P2P疊加網(wǎng)的對等體,所述對等體包括 發(fā)送對等體地址處理模塊,用于根據(jù)本對等體所收到的請求消息中的源
IP地址和端口號確定發(fā)送對等體地址;
請求消息轉(zhuǎn)發(fā)模塊,用于轉(zhuǎn)發(fā)本對等體所收到的請求消息; 應(yīng)答消息轉(zhuǎn)發(fā)模塊,用于根據(jù)所述發(fā)送對等體地址處理模塊所確定的發(fā)
送對等體地址,將本對等體所收到的應(yīng)答消息轉(zhuǎn)發(fā)給發(fā)送對等體。
本發(fā)明實施例提出一種P2P疊加網(wǎng)中的請求應(yīng)答系統(tǒng),包括請求消息的
發(fā)送對等體、請求消息的目的對等體和中轉(zhuǎn)節(jié)點(diǎn);
所述發(fā)送對等體,用于生成攜帶中轉(zhuǎn)節(jié)點(diǎn)地址的請求消息,并向自身的 鄰居對等體發(fā)送所述請求消息;
所述目的對等體用于當(dāng)收到疊加網(wǎng)中的節(jié)點(diǎn)轉(zhuǎn)發(fā)的所述請求消息后,根 據(jù)所述請求消息進(jìn)行處理并生成應(yīng)答消息,根據(jù)所述請求消息中的中轉(zhuǎn)節(jié)點(diǎn) 地址將所述應(yīng)答消息發(fā)送給所述中轉(zhuǎn)節(jié)點(diǎn);
所述中轉(zhuǎn)節(jié)點(diǎn)用于將所收到的應(yīng)答消息轉(zhuǎn)發(fā)給所述發(fā)送對等體。
本發(fā)明實施例提出另一種P2P疊加網(wǎng)中的請求應(yīng)答系統(tǒng),包括請求消息 的發(fā)送對等體、請求消息的目的對等體和中轉(zhuǎn)節(jié)點(diǎn);
所述發(fā)送對等體用于生成攜帶中轉(zhuǎn)節(jié)點(diǎn)地址的請求消息,并向所述中轉(zhuǎn) 節(jié)點(diǎn)發(fā)送所述請求消息;
所述中轉(zhuǎn)節(jié)點(diǎn)用于將所述請求消息的源IP地址和端口號作為發(fā)送對等 體的地址信息,將所述請求消息發(fā)送到疊加網(wǎng)中的自身的鄰居對等體;接收 到來自目的對等體的應(yīng)答消息,根據(jù)所述發(fā)送對等體的地址信息,將所述應(yīng) 答消息發(fā)送至所述發(fā)送對等體;
所述目的對等體用于當(dāng)收到疊加網(wǎng)中的節(jié)點(diǎn)轉(zhuǎn)發(fā)的所述請求消息后,根 據(jù)所述請求消息進(jìn)行處理并生成應(yīng)答消息,根據(jù)所述請求消息中的中轉(zhuǎn)節(jié)點(diǎn) 地址將所述應(yīng)答消息發(fā)送給所述中轉(zhuǎn)節(jié)點(diǎn)。
從以上技術(shù)方案可以看出,請求的發(fā)送對等體在請求消息中攜帶能夠為 應(yīng)答消息提供轉(zhuǎn)發(fā)功能的節(jié)點(diǎn)的IP地址信息,目的對等體利用請求消息中提供的轉(zhuǎn)發(fā)應(yīng)答消息的中轉(zhuǎn)節(jié)點(diǎn)的信息,將應(yīng)答消息發(fā)送給中轉(zhuǎn)節(jié)點(diǎn),由中
轉(zhuǎn)節(jié)點(diǎn)完成應(yīng)答消息的轉(zhuǎn)發(fā),從而可以解決P2P疊加網(wǎng)中的半遞歸路由模式 下的NAT穿越問題。
圖1為現(xiàn)有技術(shù)中P2P疊加網(wǎng)中半遞歸通信模式的示意圖; 圖2為現(xiàn)有技術(shù)中由于NAT導(dǎo)致P2P疊加網(wǎng)中半遞歸通信才莫式通信失 敗的示意圖3為本發(fā)明實施例的P2P疊加網(wǎng)中半遞歸通信一莫式的示意圖4為本發(fā)明第一實施例提出的P2P疊加網(wǎng)中的請求消息的處理流程
圖5為本發(fā)明第 一 實施例提出的另 一種P2P疊加網(wǎng)中的請求消息的處理
流程圖。
具體實施例方式
本發(fā)明實施例的技術(shù)方案就是利用處于NAT后的發(fā)送對等體與中轉(zhuǎn)節(jié) 點(diǎn)已經(jīng)建立的直接連接,同時將這些與發(fā)送對等體具有直接連接的中轉(zhuǎn)節(jié)點(diǎn) 的信息通過請求通知目的對等體。目的對等體則可以利用這些中轉(zhuǎn)節(jié)點(diǎn)來中 轉(zhuǎn)應(yīng)答消息,最終這些中轉(zhuǎn)節(jié)點(diǎn)將應(yīng)答回送給發(fā)送對等體。所述中轉(zhuǎn)節(jié)點(diǎn)與 目的對等體之間無需進(jìn)行網(wǎng)絡(luò)地址轉(zhuǎn)換,中轉(zhuǎn)節(jié)點(diǎn)可能是對等體,也可能是 公網(wǎng)服務(wù)器,如TURN服務(wù)器。
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面結(jié)合附圖對本發(fā)明 實施例作進(jìn)一步的詳細(xì)闡述。
由于請求的發(fā)送對等體在疊加網(wǎng)上,是一個功能正常的對等體。因此, 發(fā)送對等體的疊加網(wǎng)網(wǎng)絡(luò)的路由信息中保存有一部分疊加網(wǎng)上其他對等體 的通信信息。即使發(fā)送對等體在NAT后,如果發(fā)送對等體已經(jīng)是一個功能 正常的對等節(jié)點(diǎn),則發(fā)送對等體和它的路由信息中的對等體能夠直接通信。這些鄰居對等體中,可能有一些對等體與目的對等體之間可以進(jìn)行正確通 信,例如是公網(wǎng)節(jié)點(diǎn),即具有公網(wǎng)IP地址,或者是目的對等體的鄰居對等
體;同樣的,發(fā)送對等體可能還與一些公網(wǎng)節(jié)點(diǎn)建立了直接連接,這些公網(wǎng) 節(jié)點(diǎn)可能不是疊加網(wǎng)上的對等節(jié)點(diǎn),但這些公網(wǎng)節(jié)點(diǎn)也能夠為發(fā)送對等體中 轉(zhuǎn)P2P的消息。
如圖3所示,節(jié)點(diǎn)A為發(fā)送對等體,節(jié)點(diǎn)D為目的對等體。節(jié)點(diǎn)X和 節(jié)點(diǎn)Y是疊加網(wǎng)絡(luò)上節(jié)點(diǎn)A的鄰居對等體。而節(jié)點(diǎn)Z并不是對等體,與A 建立了直接的連接。節(jié)點(diǎn)X、節(jié)點(diǎn)Y和節(jié)點(diǎn)Z的共同特征是既可以和節(jié)點(diǎn)A 通信,也可以和節(jié)點(diǎn)D通信,在實際應(yīng)用中,節(jié)點(diǎn)X、節(jié)點(diǎn)Y和節(jié)點(diǎn)Z往 往是具有公網(wǎng)IP地址的節(jié)點(diǎn)。節(jié)點(diǎn)A在發(fā)送P2P請求之前,判斷自身可能 處于NAT后,節(jié)點(diǎn)A在請求消息中攜帶上與其已經(jīng)建立直接連接的節(jié)點(diǎn)的 地址。這些信息隨著請求最終到達(dá)目的對等體D。節(jié)點(diǎn)D在處理完請求后, 將回送應(yīng)答消息。節(jié)點(diǎn)D可以選擇將應(yīng)答發(fā)送到上述的X或Y或Z節(jié)點(diǎn), 由這些節(jié)點(diǎn)來將應(yīng)答消息轉(zhuǎn)發(fā)給對等節(jié)點(diǎn)A,在圖3中用虛線表示應(yīng)答消息。 節(jié)點(diǎn)D在發(fā)送應(yīng)答時可以采用 一次將多個應(yīng)答消息同時發(fā)送給X、 Y和Z。 也可按照X、 Y、 Z的先后順序發(fā)送。
本發(fā)明第一實施例提出P2P疊加網(wǎng)中的請求消息發(fā)送以及應(yīng)答流程如 圖4所示,包括如下步驟
步驟401:發(fā)送對等體判斷自身地址信息需要進(jìn)行網(wǎng)絡(luò)地址轉(zhuǎn)換,則搜 索可以作為中轉(zhuǎn)節(jié)點(diǎn)的節(jié)點(diǎn),生成中轉(zhuǎn)節(jié)點(diǎn)地址表。搜索中轉(zhuǎn)節(jié)點(diǎn)的方式可 以通過以下方式
1、 在疊加網(wǎng)的路由信息中,查找是否有鄰居對等體具有公網(wǎng)的IP地址; 如果有,將這些公網(wǎng)對等體選擇作為中轉(zhuǎn)節(jié)點(diǎn);
2、 查找自身是否和公網(wǎng)中具有轉(zhuǎn)發(fā)功能的服務(wù)器存在連接,如果有, 將這些公網(wǎng)服務(wù)器選擇作為中轉(zhuǎn)節(jié)點(diǎn)。
以上只是指出幾個可行的搜索方法,中轉(zhuǎn)節(jié)點(diǎn)的選擇并不局限在上述的 兩種類型。
12搜索終端節(jié)點(diǎn)的步驟可以只執(zhí)行一次,以后定期進(jìn)行更新,也可以在每 次發(fā)送請求之前執(zhí)行。
步驟402:當(dāng)發(fā)送對等體發(fā)送請求消息時,將中轉(zhuǎn)節(jié)點(diǎn)的公網(wǎng)IP地址 信息攜帶在請求中發(fā)送至鄰居對等體。發(fā)送對等體可以根據(jù)這些中轉(zhuǎn)節(jié)點(diǎn)的 屬性,對其公網(wǎng)IP地址設(shè)置一定的優(yōu)先級。設(shè)置優(yōu)先級的原則可以包括; 對鄰居對等體設(shè)置較高優(yōu)先級,對公網(wǎng)服務(wù)器設(shè)置較低優(yōu)先級; 按照中轉(zhuǎn)節(jié)點(diǎn)與自身的連接速度設(shè)置優(yōu)先級,速度越快則設(shè)置越高的優(yōu) 先級。
步驟403:當(dāng)該請求經(jīng)過疊加網(wǎng)的對等體轉(zhuǎn)發(fā),最終到達(dá)目的對等體后, 目的對等體處理完請求,檢查請求消息中是否攜帶有中轉(zhuǎn)節(jié)點(diǎn)的地址信息; 如果有,則將應(yīng)答消息直接發(fā)送給中轉(zhuǎn)節(jié)點(diǎn),可以是同時發(fā)送給所有中轉(zhuǎn)節(jié) 點(diǎn),或者依次發(fā)送。如果中轉(zhuǎn)節(jié)點(diǎn)的IP地址具有相應(yīng)的優(yōu)先級信息,則可 以按照優(yōu)先級的高低依次發(fā)送應(yīng)答消息,或者只發(fā)送給優(yōu)先級最高的中轉(zhuǎn)節(jié) 點(diǎn)。
步驟404:中轉(zhuǎn)節(jié)點(diǎn)接收到應(yīng)答消息后,首先檢查是否和發(fā)送對等體有 直接連接;如果有直接連接,則通過已經(jīng)建立的連接,將應(yīng)答消息發(fā)送給發(fā) 送對等體;如果沒有直接連接,則中繼節(jié)點(diǎn)可以選擇將應(yīng)答丟棄,或者將采 用其他的路由方式將消息路由到發(fā)送對等體。
步驟405:發(fā)送對等體收到來自中轉(zhuǎn)節(jié)點(diǎn)的應(yīng)答消息,如果收到內(nèi)容相 同的應(yīng)答消息,則丟棄在后的應(yīng)答消息。
在某些情況下,可能發(fā)送對等體的鄰居對等體都需要進(jìn)行網(wǎng)絡(luò)地址轉(zhuǎn) 換,例如,發(fā)送對等體及其鄰居對等體都處于同一個局域網(wǎng)中;或者發(fā)送對 等體發(fā)送加入(JOIN)消息,但還沒有加入到疊加網(wǎng)上,并沒有相關(guān)的鄰居 對等體信息。在這些情況下,發(fā)送對等體可以將自身的地址信息通知中轉(zhuǎn)對 等體,通過發(fā)送對等體和中轉(zhuǎn)對等體的配合來實現(xiàn)應(yīng)答的回送,如圖5所示, 包括如下步驟
步驟501:發(fā)送對等體獲得具有公網(wǎng)IP地址的對等體信息,例如可以通過一些帶外的方式獲得該對等體信息,將這些對等體作為中轉(zhuǎn)對等體,將
其地址信息;汰到請求消息中;
步驟502:發(fā)送對等體將請求消息發(fā)送給所述中轉(zhuǎn)對等體;
步驟503:中轉(zhuǎn)對等體記錄請求報文的源IP地址和端口號,所述源IP 地址和端口號即為發(fā)送對等體的地址信息,可以讓中轉(zhuǎn)對等體將其后收到的 應(yīng)答消息轉(zhuǎn)發(fā)給發(fā)送對等體。中轉(zhuǎn)對等體可以將發(fā)送對等體的地址信息存儲 在本地,也可以添加到請求消息中。
由于該請求報文中的源IP地址和端口號需要進(jìn)行網(wǎng)絡(luò)地址轉(zhuǎn)換,如果 目的對等體直接將該向該源IP地址和端口號對應(yīng)的地址發(fā)送應(yīng)答消息,則 可能發(fā)送失敗。而中轉(zhuǎn)對等體能夠?qū)υ撛碔P地址和端口號進(jìn)行正確的網(wǎng)絡(luò) 地址轉(zhuǎn)換,因此目的對等體將應(yīng)答消息發(fā)送給中轉(zhuǎn)對等體,由中轉(zhuǎn)對等體來 轉(zhuǎn)發(fā)該應(yīng)答消息。中轉(zhuǎn)對等體將發(fā)送對等體的地址信息添加到請求消息中, 其目的是在于如果中轉(zhuǎn)對等體本地沒有保留發(fā)送對等體的地址信息,發(fā)送 對等體的地址信息攜帶在請求消息中傳遞到目的對等體;目的對等體再將發(fā) 送對等體的地址信息攜帶在應(yīng)答消息中,中轉(zhuǎn)對等體可以根據(jù)應(yīng)答消息中的 發(fā)送對等體地址信息,將該應(yīng)答消息返回給發(fā)送對等體。
步驟504:中轉(zhuǎn)對等體發(fā)送該請求消息,請求消息通過在疊加網(wǎng)中轉(zhuǎn)發(fā), 最終到達(dá)目的對等體。
步驟505:目的對等體對該請求消息進(jìn)行處理,生成應(yīng)答消息,如果請 求消息中包含發(fā)送對等體的地址信息,則將該地址信息添加到應(yīng)答消息中; 然后將應(yīng)答消息發(fā)送給所述中轉(zhuǎn)對等體。
步驟506:當(dāng)中轉(zhuǎn)對等體接收到應(yīng)答消息后,根據(jù)本地的發(fā)送對等體地 址信息或者應(yīng)答消息中的地址信息,將該應(yīng)答消息發(fā)送給發(fā)送對等體。如果 中轉(zhuǎn)對等體與發(fā)送對等體之間沒有連接,或者應(yīng)答消息和本地都沒有發(fā)送對
等體的地址信息,則丟棄該應(yīng)答消息。
本發(fā)明第二實施例提出一種P2P疊加網(wǎng)中的對等體,該對等體除了具有 常規(guī)的請求消息的生成、發(fā)送以及轉(zhuǎn)發(fā)模塊之外,還具有中轉(zhuǎn)節(jié)點(diǎn)地址信息模塊,用于收集與本對等體具有直接連接的疊加網(wǎng)的
對等體或疊加網(wǎng)外的網(wǎng)絡(luò)節(jié)點(diǎn)的地址信息,生成中轉(zhuǎn)節(jié)點(diǎn)地址表;
請求消息處理模塊,用于將所述中轉(zhuǎn)節(jié)點(diǎn)地址信息模塊所生成的中轉(zhuǎn)節(jié)
點(diǎn)地址表中的地址信息添加到請求消息中。
所述請求消息處理模塊進(jìn)一步包括判斷單元,用于判斷本對等體的地址
是否需要進(jìn)行網(wǎng)絡(luò)地址轉(zhuǎn)換;若判斷單元的判斷結(jié)果為是,則所述請求消息
處理模塊將所述中轉(zhuǎn)節(jié)點(diǎn)地址表添加到請求消息中。 該對等體相當(dāng)于第 一 實施例中的發(fā)送對等體。
本發(fā)明第三實施例提出一種P2P疊加網(wǎng)中的對等體,該對等體包括 應(yīng)答處理模塊,用于根據(jù)本對等體所收到的請求消息進(jìn)行相應(yīng)處理,并 生成應(yīng)答消息;
應(yīng)答消息發(fā)送模塊,用于根據(jù)本對等體所收到的請求消息中的中轉(zhuǎn)節(jié)點(diǎn) 地址,發(fā)送所述應(yīng)答處理模塊生成的應(yīng)答消息。
該實施例提出的對等體相當(dāng)于第一實施例中的目標(biāo)對等體。
本發(fā)明第四實施例提出一種P2P疊加網(wǎng)中的對等體,該對等體包括
發(fā)送對等體地址處理模塊,用于根據(jù)本對等體所收到的請求消息中的源 IP地址和端口號確定發(fā)送對等體地址;
請求消息轉(zhuǎn)發(fā)模塊,用于轉(zhuǎn)發(fā)本對等體所收到的請求消息;
應(yīng)答消息轉(zhuǎn)發(fā)模塊,用于根據(jù)所述發(fā)送對等體地址處理模塊所確定的發(fā) 送對等體地址,將本對等體所收到的應(yīng)答消息轉(zhuǎn)發(fā)給發(fā)送對等體。
所述發(fā)送對等體地址處理模塊進(jìn)一步包括
記錄單元,用于記錄所述發(fā)送對等體地址。
或者,所述發(fā)送對等體地址處理模塊進(jìn)一步包括
發(fā)送對等體地址添加單元,用于在所述請求消息轉(zhuǎn)發(fā)模塊所要轉(zhuǎn)發(fā)的請 求消息中,添加所述發(fā)送對等體地址。
本發(fā)明實施例方案中,請求的發(fā)送對等體在請求消息中攜帶能夠為應(yīng)答 消息提供轉(zhuǎn)發(fā)功能的節(jié)點(diǎn)的IP地址信息,目的對等體利用請求消息中提供的轉(zhuǎn)發(fā)應(yīng)答消息的中轉(zhuǎn)節(jié)點(diǎn)的信息,將應(yīng)答消息發(fā)送給中轉(zhuǎn)節(jié)點(diǎn),由中轉(zhuǎn)節(jié) 點(diǎn)完成應(yīng)答消息的轉(zhuǎn)發(fā),從而可以解決P2P疊加網(wǎng)中的半遞歸路由模式下的
NAT穿越問題。
以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本 發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本 發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1、一種P2P疊加網(wǎng)中的請求應(yīng)答方法,其特征在于,包括如下步驟目的對等體接收攜帶中轉(zhuǎn)節(jié)點(diǎn)地址的請求消息,處理請求并生成應(yīng)答消息,并將所述應(yīng)答消息發(fā)送至所述中轉(zhuǎn)節(jié)點(diǎn);所述中轉(zhuǎn)節(jié)點(diǎn)將所述應(yīng)答消息轉(zhuǎn)發(fā)至所述請求消息的發(fā)送對等體。
2、 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述目標(biāo)對等體接收攜 帶中轉(zhuǎn)節(jié)點(diǎn)信息的請求消息之前,進(jìn)一步包括發(fā)送對等體確定自身的地址需要進(jìn)行網(wǎng)絡(luò)地址轉(zhuǎn)換NAT,則從預(yù)先生 成的中轉(zhuǎn)節(jié)點(diǎn)地址表中的選擇中轉(zhuǎn)節(jié)點(diǎn),將所述選擇的中轉(zhuǎn)節(jié)點(diǎn)地址攜帶在 請求消息中。
3、 根據(jù)權(quán)利要求2所述的方法,其特征在于,所述生成中轉(zhuǎn)節(jié)點(diǎn)地址 表的步驟包括在疊加網(wǎng)的路由信息中,發(fā)送對等體查找是否有鄰居對等體具有公網(wǎng)的 IP地址;如果有,將這些鄰居對等體的IP地址添加到中轉(zhuǎn)節(jié)點(diǎn)地址表中;和/或,發(fā)送對等體查找自身是否和公網(wǎng)中具有轉(zhuǎn)發(fā)功能的服務(wù)器存在 連接,如果有,將這些公網(wǎng)服務(wù)器的地址添加到中轉(zhuǎn)節(jié)點(diǎn)地址表中。
4、 根據(jù)權(quán)利要求1所述的方法,其特征在于,若中轉(zhuǎn)節(jié)點(diǎn)多于一個, 則所述將所述應(yīng)答消息發(fā)送至所述中轉(zhuǎn)節(jié)點(diǎn)包括將應(yīng)答消息同時發(fā)送至各 個中轉(zhuǎn)節(jié)點(diǎn),或者依次發(fā)送所述應(yīng)答消息至各個中轉(zhuǎn)節(jié)點(diǎn)。
5、 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述目標(biāo)對等體接收攜 帶中轉(zhuǎn)節(jié)點(diǎn)地址的請求消息之前,進(jìn)一步包括發(fā)送對等體通過帶外方式獲得具有公網(wǎng)IP地址的對等體信息,將所述 具有公網(wǎng)IP地址的對等體作為中轉(zhuǎn)節(jié)點(diǎn),將所述中轉(zhuǎn)節(jié)點(diǎn)地址添加到請求 消息中,并向所述中轉(zhuǎn)節(jié)點(diǎn)發(fā)送所述請求消息;所述中轉(zhuǎn)節(jié)點(diǎn)將所述請求消息的源IP地址和端口號添加到所述請求消 息中,并將所述請求消息發(fā)送到疊加網(wǎng)中的自身的鄰居對等體;所述請求消息在疊加網(wǎng)的對等體之間轉(zhuǎn)發(fā)最終到達(dá)目的對等體;所述中轉(zhuǎn)節(jié)點(diǎn)將所述應(yīng)答消息轉(zhuǎn)發(fā)至所述請求消息的發(fā)送對等體包括 中轉(zhuǎn)節(jié)點(diǎn)根據(jù)所述發(fā)送對等體的地址信息,將所述應(yīng)答消息發(fā)送至發(fā)送對等 體。
6、 根據(jù)權(quán)利要求5所述的方法,其特征在于,所述中轉(zhuǎn)節(jié)點(diǎn)將所述請 求消息的源IP地址和端口號作為發(fā)送對等體的地址信息的步驟包括中轉(zhuǎn) 節(jié)點(diǎn)將所述發(fā)送對等體的地址信息添加到所述請求消息中;所述請求消息在疊加網(wǎng)的對等體之間轉(zhuǎn)發(fā)最終到達(dá)目的對等體之后,進(jìn) 一步包括目的對等體根據(jù)所收到的請求消息生成應(yīng)答消息,將所述請求消 息中的發(fā)送對等體的地址信息添加到所述應(yīng)答消息中。
7、 根據(jù)權(quán)利要求5所述的方法,其特征在于,所述中轉(zhuǎn)節(jié)點(diǎn)將所述請 求消息的源IP地址和端口號作為發(fā)送對等體的地址信息的步驟包括所述中轉(zhuǎn)節(jié)點(diǎn)在本地記錄所述發(fā)送對等體的地址信息;則所述中轉(zhuǎn)節(jié)點(diǎn)將所述應(yīng)答消息轉(zhuǎn)發(fā)至所述請求消息的發(fā)送對等體包括所述中轉(zhuǎn)節(jié)點(diǎn)根據(jù)本地記錄的發(fā)送對等體的地址信息,將所述應(yīng)答消息 轉(zhuǎn)發(fā)至所述發(fā)送對等體。
8、 一種P2P疊加網(wǎng)中請求應(yīng)答方法,其特4正在于,包括如下步驟 具有公網(wǎng)IP地址的中轉(zhuǎn)節(jié)點(diǎn)收到來自發(fā)送對等體的請求消息,將所述請求消息的源IP地址和端口號作為發(fā)送對等體的地址信息,將所述請求消 息發(fā)送到疊加網(wǎng)中的自身的鄰居對等體;所述請求消息在疊加網(wǎng)的對等體之 間轉(zhuǎn)發(fā)最終到達(dá)目的對等體;中轉(zhuǎn)節(jié)點(diǎn)接收到來自目的對等體的應(yīng)答消息,根據(jù)所述發(fā)送對等體的地 址信息,將所述應(yīng)答消息發(fā)送至所述發(fā)送對等體。
9、 根據(jù)權(quán)利要求8所述的方法,其特征在于,所述中轉(zhuǎn)節(jié)點(diǎn)將所述請 求消息的源IP地址和端口號作為發(fā)送對等體的地址信息的步驟包括中轉(zhuǎn) 節(jié)點(diǎn)將所述發(fā)送對等體的地址信息添加到所述請求消息中;所述請求消息在疊加網(wǎng)的對等體之間轉(zhuǎn)發(fā)最終到達(dá)目的對等體之后,進(jìn)一步包括目的對等體根據(jù)所收到的請求消息生成應(yīng)答消息,將所述請求消息中的發(fā)送對等體的地址信息添加到所述應(yīng)答消息中。
10、 根據(jù)權(quán)利要求8所述的方法,其特征在于,所述中轉(zhuǎn)節(jié)點(diǎn)將所述請 求消息的源IP地址和端口號作為發(fā)送對等體的地址信息的步驟包括所述中轉(zhuǎn)節(jié)點(diǎn)在本地記錄所述發(fā)送對等體的地址信息; 則所述中轉(zhuǎn)節(jié)點(diǎn)將所述應(yīng)答消息轉(zhuǎn)發(fā)至所述發(fā)送對等體包括 所述中轉(zhuǎn)節(jié)點(diǎn)根據(jù)本地記錄的發(fā)送對等體的地址信息,將所述應(yīng)答消息 轉(zhuǎn)發(fā)至所述發(fā)送對等體。
11、 根據(jù)權(quán)利要求8所述的方法,其特征在于,所述中轉(zhuǎn)節(jié)點(diǎn)將所述應(yīng) 答消息轉(zhuǎn)發(fā)至所述請求消息的發(fā)送對等體包括中轉(zhuǎn)節(jié)點(diǎn)接收到應(yīng)答消息 后,首先檢查是否和發(fā)送對等體有連接,如果有連接,則通過所述連接將應(yīng) 答消息發(fā)送給發(fā)送對等體。
12、 一種P2P疊加網(wǎng)的對等體,其特征在于,包括 中轉(zhuǎn)節(jié)點(diǎn)地址信息模塊,用于收集與本對等體具有連接的疊加網(wǎng)的對等體或疊加網(wǎng)外的網(wǎng)絡(luò)節(jié)點(diǎn)的地址信息,生成中轉(zhuǎn)節(jié)點(diǎn)地址表;請求消息處理模塊,用于將所述中轉(zhuǎn)節(jié)點(diǎn)地址信息模塊所生成的中轉(zhuǎn)節(jié) 點(diǎn)地址表中的地址信息添加到請求消息中。
13、 根據(jù)權(quán)利要求12所述的對等體,其特征在于,所述請求消息處理 模塊進(jìn)一步包括判斷單元,用于判斷本對等體的地址是否需要進(jìn)行網(wǎng)絡(luò)地址 轉(zhuǎn)換;若判斷單元的判斷結(jié)果為是,則所述請求消息處理模塊將所述中轉(zhuǎn)節(jié) 點(diǎn)地址表添加到請求消息中。
14、 一種P2P疊加網(wǎng)的對等體,其特征在于,所述對等體包括 應(yīng)答處理模塊,用于根據(jù)本對等體所收到的請求消息進(jìn)行相應(yīng)處理,并生成應(yīng)答消息;應(yīng)答消息發(fā)送模塊,用于根據(jù)本對等體所收到的請求消息中的中轉(zhuǎn)節(jié)點(diǎn) 地址,發(fā)送所述應(yīng)答處理模塊生成的應(yīng)答消息。
15、 一種p2p疊加網(wǎng)的對等體,其特征在于,所述對等體包括 發(fā)送對等體地址處理模塊,用于根據(jù)本對等體所收到的請求消息中的源ip地址和端口號確定發(fā)送對等體地址;請求消息轉(zhuǎn)發(fā)模塊,用于轉(zhuǎn)發(fā)本對等體所收到的請求消息; 應(yīng)答消息轉(zhuǎn)發(fā)模塊,用于根據(jù)所述發(fā)送對等體地址處理模塊所確定的發(fā)送對等體地址,將本對等體所收到的應(yīng)答消息轉(zhuǎn)發(fā)給發(fā)送對等體。
16、 根據(jù)權(quán)利要求15所述的對等體,其特征在于,所述發(fā)送對等體地 址處理模塊進(jìn)一步包括記錄單元,用于記錄所述發(fā)送對等體地址。
17、 根據(jù)權(quán)利要求15所述的對等體,其特征在于,所述發(fā)送對等體地 址處理模塊進(jìn)一步包括發(fā)送對等體地址添加單元,用于在所述請求消息轉(zhuǎn)發(fā)模塊所要轉(zhuǎn)發(fā)的請 求消息中,添加所述發(fā)送對等體地址。
18、 一種p2p疊加網(wǎng)中的請求應(yīng)答系統(tǒng),其特征在于,包括請求消息的 發(fā)送對等體、請求消息的目的對等體和中轉(zhuǎn)節(jié)點(diǎn);所述發(fā)送對等體,用于生成攜帶中轉(zhuǎn)節(jié)點(diǎn)地址的請求消息,并向自身的 鄰居對等體發(fā)送所述請求消息;所述目的對等體用于當(dāng)收到疊加網(wǎng)中的節(jié)點(diǎn)轉(zhuǎn)發(fā)的所述請求消息后,根 據(jù)所述請求消息進(jìn)行處理并生成應(yīng)答消息,根據(jù)所述請求消息中的中轉(zhuǎn)節(jié)點(diǎn) 地址將所述應(yīng)答消息發(fā)送給所述中轉(zhuǎn)節(jié)點(diǎn);所述中轉(zhuǎn)節(jié)點(diǎn)用于將所收到的應(yīng)答消息轉(zhuǎn)發(fā)給所述發(fā)送對等體。
19、 一種p2p疊加網(wǎng)中的請求應(yīng)答系統(tǒng),其特征在于,包括請求消息的 發(fā)送對等體、請求消息的目的對等體和中轉(zhuǎn)節(jié)點(diǎn);所述發(fā)送對等體用于生成攜帶中轉(zhuǎn)節(jié)點(diǎn)地址的請求消息,并向所述中轉(zhuǎn) 節(jié)點(diǎn)發(fā)送所述請求消息;所述中轉(zhuǎn)節(jié)點(diǎn)用于將所述請求消息的源ip地址和端口號作為發(fā)送對等體的地址信息,將所述請求消息發(fā)送到疊加網(wǎng)中的自身的鄰居對等體;接收到來自目的對等體的應(yīng)答消息,根據(jù)所述發(fā)送對等體的地址信息,將所述應(yīng)答消息發(fā)送至所述發(fā)送對等體;所述目的對等體用于當(dāng)收到疊加網(wǎng)中的節(jié)點(diǎn)轉(zhuǎn)發(fā)的所述請求消息后,根 據(jù)所述請求消息進(jìn)行處理并生成應(yīng)答消息,根據(jù)所述請求消息中的中轉(zhuǎn)節(jié)點(diǎn) 地址將所述應(yīng)答消息發(fā)送給所述中轉(zhuǎn)節(jié)點(diǎn)。
全文摘要
本發(fā)明公開了一種P2P疊加網(wǎng)中請求應(yīng)答方法,包括如下步驟目的對等體接收到攜帶中轉(zhuǎn)節(jié)點(diǎn)地址的請求消息,處理請求并生成應(yīng)答消息,根據(jù)所述請求消息中的中轉(zhuǎn)節(jié)點(diǎn)地址,將所述應(yīng)答消息發(fā)送至所述中轉(zhuǎn)節(jié)點(diǎn),所述中轉(zhuǎn)節(jié)點(diǎn)將所述應(yīng)答消息轉(zhuǎn)發(fā)至所述請求消息的發(fā)送對等體。本發(fā)明還公開了疊加網(wǎng)對等體,以及P2P疊加網(wǎng)中請求應(yīng)答系統(tǒng)。本發(fā)明方案可以解決P2P疊加網(wǎng)中的半遞歸路由模式下的網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT)穿越問題。
文檔編號H04L1/16GK101425958SQ200710165109
公開日2009年5月6日 申請日期2007年10月29日 優(yōu)先權(quán)日2007年10月29日
發(fā)明者江興烽 申請人:華為技術(shù)有限公司