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