一種p2p連接nat穿越的路徑建立方法、裝置及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及通信技術(shù)領(lǐng)域,特別是涉及一種P2P連接NAT穿越的路徑的建立方法、裝置及系統(tǒng)。
【背景技術(shù)】
[0002]目前P2P(點(diǎn)對(duì)點(diǎn)傳輸)的應(yīng)用中因各傳輸終端可能位于公網(wǎng),也可能位于各種類(lèi)型的NAT之后,因此需要針對(duì)各種情況實(shí)現(xiàn)不同類(lèi)型的NAT穿越。
[0003]ICE (交互式連接建立)目前已經(jīng)被公認(rèn)為在所有NAT環(huán)境下首選的NAT穿越解決方案,ICE本身只是一種架構(gòu),它綜合應(yīng)用STUN,TURN等協(xié)議來(lái)提供一個(gè)通用的解決方案,使得NAT穿越在最合適的情況下工作,以彌補(bǔ)單獨(dú)使用其中任何一種所帶來(lái)的固有缺陷。
[0004]但在ICE的NAT穿越機(jī)制中,需要對(duì)所有可能的路徑進(jìn)行搜集,然后根據(jù)優(yōu)先級(jí)對(duì)所有路徑進(jìn)行排序,最后按優(yōu)先級(jí)順序?qū)λ械穆窂竭M(jìn)行檢查,從而找對(duì)最合適的路徑用于傳輸。
[0005]目前NAT穿越時(shí)路徑選擇的方法是:按照各自排好的優(yōu)先級(jí)順序?qū)λ鸭降乃新窂竭M(jìn)行檢查,挑選出符合要求的路徑,最后選擇優(yōu)先級(jí)最高的路徑進(jìn)行使用。這種方法的缺點(diǎn)有:一、雙方檢查路徑時(shí)不同步,例如一方在檢查某一優(yōu)先級(jí)的路徑,而對(duì)方卻不在監(jiān)聽(tīng)此優(yōu)先級(jí)的路徑檢查請(qǐng)求,這樣將導(dǎo)致檢查超時(shí)而失??;二、路徑選擇算法設(shè)計(jì)不好,沒(méi)有充分利用路徑的優(yōu)先級(jí)所帶來(lái)的便利,既然是所有路徑都是按照優(yōu)先級(jí)進(jìn)行排序的,那么按優(yōu)先級(jí)從高到底進(jìn)行檢查,一旦檢查到路徑可用就可以確定是最優(yōu)路徑。
【發(fā)明內(nèi)容】
[0006]本發(fā)明的目的是提供一種NAT穿越時(shí)全路徑選擇的優(yōu)化方案,解決NAT穿越時(shí)路徑選擇的效率問(wèn)題。
[0007]本發(fā)明提供的技術(shù)方案如下:
[0008]本發(fā)明公開(kāi)了一種P2P連接NAT穿越的路徑的建立方法,與另一個(gè)對(duì)等網(wǎng)絡(luò)客戶端間進(jìn)行NAT穿越全路徑選擇,包括步驟:S10選擇待檢查地址對(duì)清單中尚未檢查的優(yōu)先級(jí)最高的地址對(duì)作為當(dāng)前檢查的路徑;S20根據(jù)當(dāng)前檢查的路徑,向另一個(gè)對(duì)等網(wǎng)絡(luò)客戶端發(fā)送路徑檢查請(qǐng)求報(bào)文;S30監(jiān)聽(tīng)本客戶端NAT主機(jī);S40判斷是否接收到另一個(gè)對(duì)等網(wǎng)絡(luò)客戶端發(fā)送來(lái)的路徑檢查應(yīng)答報(bào)文;若是,執(zhí)行下一步;S50設(shè)定當(dāng)前地址對(duì)為最優(yōu)路徑;S60停止檢查循環(huán)。
[0009]本發(fā)明還提供另一種P2P連接NAT穿越的路徑的建立方法,與另一個(gè)對(duì)等網(wǎng)絡(luò)客戶端間進(jìn)行NAT穿越全路徑選擇,包括步驟:S01收集本客戶端NAT主機(jī)的候選地址,并為每個(gè)所述候選地址設(shè)置優(yōu)先級(jí),發(fā)送包括候選地址和優(yōu)先級(jí)的配對(duì)信息至另一個(gè)對(duì)等網(wǎng)絡(luò)客戶端;S02接收另一個(gè)對(duì)等網(wǎng)絡(luò)客戶端的配對(duì)信息,所述另一個(gè)對(duì)等網(wǎng)絡(luò)客戶端的配對(duì)信息包括另一個(gè)對(duì)等網(wǎng)絡(luò)客戶端NAT主機(jī)的候選地址和優(yōu)先級(jí);S03結(jié)合本客戶端與另一個(gè)對(duì)等網(wǎng)絡(luò)客戶端的配對(duì)信息,根據(jù)本客戶端NAT主機(jī)的候選地址和優(yōu)先級(jí)以及另一個(gè)對(duì)等網(wǎng)絡(luò)客戶端NAT主機(jī)的候選地址和優(yōu)先級(jí)進(jìn)行配對(duì)生成地址對(duì),并按照與另一個(gè)對(duì)等網(wǎng)絡(luò)客戶端相同的地址對(duì)優(yōu)先級(jí)算法對(duì)所述地址對(duì)進(jìn)行排序,生成待檢查地址對(duì)清單;S10選擇待檢查地址對(duì)清單中尚未檢查的優(yōu)先級(jí)最高的地址對(duì)作為當(dāng)前檢查的路徑;S20根據(jù)當(dāng)前檢查的路徑,向另一個(gè)對(duì)等網(wǎng)絡(luò)客戶端發(fā)送路徑檢查請(qǐng)求報(bào)文;S30監(jiān)聽(tīng)本客戶端NAT主機(jī);S40判斷是否接收到另一個(gè)對(duì)等網(wǎng)絡(luò)客戶端發(fā)送來(lái)的路徑檢查應(yīng)答報(bào)文;若是,執(zhí)行下一步;S50設(shè)定當(dāng)前地址對(duì)為最優(yōu)路徑;S60停止檢查循環(huán)。
[0010]進(jìn)一步優(yōu)選的,所述候選地址包括候選地址的IP地址、發(fā)送端口與接收端口。
[0011]本發(fā)明還提供另一種P2P連接NAT穿越的路徑的建立方法,與另一個(gè)對(duì)等網(wǎng)絡(luò)客戶端間進(jìn)行NAT穿越全路徑選擇,包括步驟:S01收集本客戶端NAT主機(jī)的候選地址,并為每個(gè)所述候選地址設(shè)置優(yōu)先級(jí),發(fā)送包括候選地址和優(yōu)先級(jí)的配對(duì)信息至另一個(gè)對(duì)等網(wǎng)絡(luò)客戶端;S02接收另一個(gè)對(duì)等網(wǎng)絡(luò)客戶端的配對(duì)信息,所述另一個(gè)對(duì)等網(wǎng)絡(luò)客戶端的配對(duì)信息包括另一個(gè)對(duì)等網(wǎng)絡(luò)客戶端NAT主機(jī)的候選地址和優(yōu)先級(jí);S03結(jié)合本客戶端與另一個(gè)對(duì)等網(wǎng)絡(luò)客戶端的配對(duì)信息,根據(jù)本客戶端NAT主機(jī)的候選地址和優(yōu)先級(jí)以及另一個(gè)對(duì)等網(wǎng)絡(luò)客戶端NAT主機(jī)的候選地址和優(yōu)先級(jí)進(jìn)行配對(duì)生成地址對(duì),并按照與另一個(gè)對(duì)等網(wǎng)絡(luò)客戶端相同的地址對(duì)優(yōu)先級(jí)算法對(duì)所述地址對(duì)進(jìn)行排序,生成待檢查地址對(duì)清單;S10選擇待檢查地址對(duì)清單中尚未檢查的優(yōu)先級(jí)最高的地址對(duì)作為當(dāng)前檢查的路徑;S20根據(jù)當(dāng)前檢查的路徑,向另一個(gè)對(duì)等網(wǎng)絡(luò)客戶端發(fā)送路徑檢查請(qǐng)求報(bào)文;S30監(jiān)聽(tīng)本客戶端NAT主機(jī);S351判斷是否接收到另一個(gè)對(duì)等網(wǎng)絡(luò)客戶端發(fā)送來(lái)的路徑檢查請(qǐng)求報(bào)文;若是,執(zhí)行步驟S352 ;S352向另一個(gè)對(duì)等網(wǎng)絡(luò)客戶端發(fā)送路徑檢查應(yīng)答報(bào)文;否則,執(zhí)行步驟S40 ;S40判斷是否接收到另一個(gè)對(duì)等網(wǎng)絡(luò)客戶端發(fā)送來(lái)的路徑檢查應(yīng)答報(bào)文;若是,執(zhí)行下一步;S50設(shè)定當(dāng)前地址對(duì)為最優(yōu)路徑;S60停止檢查循環(huán)。
[0012]本發(fā)明還提供另一種P2P連接NAT穿越的路徑的建立方法,與另一個(gè)對(duì)等網(wǎng)絡(luò)客戶端間進(jìn)行NAT穿越全路徑選擇,包括步驟:S01收集本客戶端NAT主機(jī)的候選地址,并為每個(gè)所述候選地址設(shè)置優(yōu)先級(jí),發(fā)送包括候選地址和優(yōu)先級(jí)的配對(duì)信息至另一個(gè)對(duì)等網(wǎng)絡(luò)客戶端;S02接收另一個(gè)對(duì)等網(wǎng)絡(luò)客戶端的配對(duì)信息,所述另一個(gè)對(duì)等網(wǎng)絡(luò)客戶端的配對(duì)信息包括另一個(gè)對(duì)等網(wǎng)絡(luò)客戶端NAT主機(jī)的候選地址和優(yōu)先級(jí);S03結(jié)合本客戶端與另一個(gè)對(duì)等網(wǎng)絡(luò)客戶端的配對(duì)信息,根據(jù)本客戶端NAT主機(jī)的候選地址和優(yōu)先級(jí)以及另一個(gè)對(duì)等網(wǎng)絡(luò)客戶端NAT主機(jī)的候選地址和優(yōu)先級(jí)進(jìn)行配對(duì)生成地址對(duì),并按照與另一個(gè)對(duì)等網(wǎng)絡(luò)客戶端相同的地址對(duì)優(yōu)先級(jí)算法對(duì)所述地址對(duì)進(jìn)行排序,生成待檢查地址對(duì)清單;S10選擇待檢查地址對(duì)清單中尚未檢查的優(yōu)先級(jí)最高的地址對(duì)作為當(dāng)前檢查的路徑;S20根據(jù)當(dāng)前檢查的路徑,向另一個(gè)對(duì)等網(wǎng)絡(luò)客戶端發(fā)送路徑檢查請(qǐng)求報(bào)文;S30監(jiān)聽(tīng)本客戶端NAT主機(jī);S351判斷是否接收到另一個(gè)對(duì)等網(wǎng)絡(luò)客戶端發(fā)送來(lái)的路徑檢查請(qǐng)求報(bào)文;若是,執(zhí)行步驟S352 ;S352向另一個(gè)對(duì)等網(wǎng)絡(luò)客戶端發(fā)送路徑檢查應(yīng)答報(bào)文;否則,執(zhí)行步驟S40 ;S40判斷是否接收到另一個(gè)對(duì)等網(wǎng)絡(luò)客戶端發(fā)送來(lái)的路徑檢查應(yīng)答報(bào)文;若是,執(zhí)行步驟S50 ;S50設(shè)定當(dāng)前地址對(duì)為最優(yōu)路徑,并執(zhí)行步驟S60停止檢查循環(huán);否則,執(zhí)行步驟S451 ;步驟S451當(dāng)未監(jiān)聽(tīng)到另一個(gè)對(duì)等網(wǎng)絡(luò)客戶端發(fā)送來(lái)的路徑檢查應(yīng)答報(bào)文或路徑檢查請(qǐng)求報(bào)文時(shí),進(jìn)一步判斷當(dāng)前地址對(duì)的路徑檢查請(qǐng)求是否超時(shí),若是,執(zhí)行步驟S452 ;否貝1J,重復(fù)執(zhí)行步驟S30 ;S452判斷所有待檢查地址對(duì)是否檢查完畢,若是,則執(zhí)行步驟S60停止檢查循環(huán),否則重復(fù)執(zhí)行步驟S10。
[0013]本發(fā)明還提供另一種P2P連接NAT穿越的路徑的建立方法,與另一個(gè)對(duì)等網(wǎng)絡(luò)客戶端間進(jìn)行NAT穿越全路徑選擇,包括步驟:S01收集本客戶端NAT主機(jī)的候選地址,并為每個(gè)所述候選地址設(shè)置優(yōu)先級(jí),發(fā)送包括候選地址和優(yōu)先級(jí)的配對(duì)信息至另一個(gè)對(duì)等網(wǎng)絡(luò)客戶端;S02接收另一個(gè)對(duì)等網(wǎng)絡(luò)客戶端的配對(duì)信息,所述另一個(gè)對(duì)等網(wǎng)絡(luò)客戶端的配對(duì)信息包括另一個(gè)對(duì)等網(wǎng)絡(luò)客戶端NAT主機(jī)的候選地址和優(yōu)先級(jí);S03結(jié)合本客戶端與另一個(gè)對(duì)等網(wǎng)絡(luò)客戶端的配對(duì)信息,根據(jù)本客戶端NAT主機(jī)的候選地址和優(yōu)先級(jí)以及另一個(gè)對(duì)等網(wǎng)絡(luò)客戶端NAT主機(jī)的候選地址和優(yōu)先級(jí)進(jìn)行配對(duì)生成地址對(duì),并按照與另一個(gè)對(duì)等網(wǎng)絡(luò)客戶端相同的地址對(duì)優(yōu)先級(jí)算法對(duì)所述地址對(duì)進(jìn)行排序,生成待檢查地址對(duì)清單;S10選擇待檢查地址對(duì)清單中尚未檢查的優(yōu)先級(jí)最高的地址對(duì)作為當(dāng)前檢查的路徑;S20根據(jù)當(dāng)前檢查的路徑,向另一個(gè)對(duì)等網(wǎng)絡(luò)客戶端發(fā)送路徑檢查請(qǐng)求報(bào)文;S30監(jiān)聽(tīng)本客戶端NAT主機(jī)是否接收到UDP報(bào)文;當(dāng)本客戶端NAT主機(jī)接收到UDP報(bào)文時(shí),根據(jù)當(dāng)前檢查的路徑,判斷UDP報(bào)文中的源地址與本客戶端當(dāng)前檢查的路徑是否一致;當(dāng)UDP報(bào)文中的源地址與當(dāng)前檢查的路徑一致時(shí),執(zhí)行步驟S351 ;S40判斷是否接收到另一個(gè)對(duì)等網(wǎng)絡(luò)客戶端發(fā)送來(lái)的路徑檢查應(yīng)答報(bào)文;若是,執(zhí)行下一步;S50設(shè)定當(dāng)前地址對(duì)為最優(yōu)路徑,并執(zhí)行步驟S60停止檢查循環(huán);S351判斷是否接收到另一個(gè)對(duì)等網(wǎng)絡(luò)客戶端發(fā)送來(lái)的路徑檢查請(qǐng)求報(bào)文;若是,執(zhí)行下一步;S352向另一個(gè)對(duì)等網(wǎng)絡(luò)客戶端發(fā)送路徑檢查應(yīng)答報(bào)文;S451當(dāng)未監(jiān)聽(tīng)到另一個(gè)對(duì)等網(wǎng)絡(luò)客戶端發(fā)送來(lái)的路徑檢查應(yīng)答報(bào)文或路徑檢查請(qǐng)求報(bào)文時(shí),進(jìn)一步判斷當(dāng)前地址對(duì)的路徑檢查請(qǐng)求是否超時(shí),若是,執(zhí)行下一步;否則重復(fù)執(zhí)行步驟S30 ;S452判斷所有待檢查地址對(duì)是否檢查完畢,若是,則執(zhí)行步驟S60停止檢查循環(huán),否則重復(fù)執(zhí)行步驟S10。
[0014]本發(fā)明還公開(kāi)一種P2P連接NAT穿越的路徑的建立裝置,與另一個(gè)對(duì)等建立裝置間進(jìn)行NAT穿越全路徑選擇,包括:路徑選擇模塊,用于選擇待檢查地址對(duì)清單中尚未檢查的優(yōu)先級(jí)最高的地址對(duì)作為當(dāng)前檢查的路徑;發(fā)送模塊,用于根據(jù)當(dāng)前檢查的路徑,向另一個(gè)對(duì)等建立裝置發(fā)送路徑檢查請(qǐng)求報(bào)文;監(jiān)聽(tīng)模塊,用于監(jiān)聽(tīng)本建立裝置NAT主機(jī);判斷模塊,用于判斷本建立裝置NAT主機(jī)是否接收到另一個(gè)