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