本發(fā)明實施例涉及通信領(lǐng)域,具體而言,涉及一種發(fā)送穿透握手包的方法及裝置。
背景技術(shù):
1、nat(network?address?translation,網(wǎng)絡(luò)地址轉(zhuǎn)換)技術(shù)是一種常見的網(wǎng)絡(luò)技術(shù),用于將私有網(wǎng)絡(luò)中的ip地址轉(zhuǎn)換為公共網(wǎng)絡(luò)中的ip地址,以實現(xiàn)多個設(shè)備共享一個公共ip地址。但nat技術(shù)使得連接只能由內(nèi)網(wǎng)主機發(fā)起,外網(wǎng)主機無法主動連接到內(nèi)網(wǎng)主機,這導(dǎo)致處于不同內(nèi)網(wǎng)的主機間無法直接通信,而nat穿透技術(shù)可以突破這種限制,使得位于nat網(wǎng)絡(luò)后面的設(shè)備能夠?qū)崿F(xiàn)點對點直接通信,從而提高網(wǎng)絡(luò)連通性和穩(wěn)定性。
2、nat穿透技術(shù)實現(xiàn)的前提是需要識別nat類型,這是因為不同nat類型設(shè)備會以不同的方式處理網(wǎng)絡(luò)數(shù)據(jù)包,從而影響nat穿透成功率。但是現(xiàn)有nat設(shè)備存在連接跟蹤功能,該功能會導(dǎo)致在對端連通性檢測報文(即網(wǎng)絡(luò)數(shù)據(jù)包的一種)先于本端到達出口nat時,本端連通性檢測報文的nat映射端口發(fā)生跳變,從而導(dǎo)致連通性檢測失敗,當本端連通性檢測報文優(yōu)先到達對端的出口nat時,會導(dǎo)致同樣的問題發(fā)生。
3、針對上述問題,目前尚未存在有效的解決方案。
技術(shù)實現(xiàn)思路
1、本發(fā)明實施例提供了一種發(fā)送穿透握手包的方法及裝置,以至少解決相關(guān)技術(shù)中連通性檢測報文到達對端出口nat的時序差異性引起的nat穿透失敗的問題。
2、根據(jù)本發(fā)明的一個實施例,提供了一種發(fā)送穿透握手包的方法,包括:設(shè)備端從平臺服務(wù)器接收目標建連請求,其中,所述目標建連請求攜帶了客戶端與第一網(wǎng)絡(luò)地址轉(zhuǎn)換設(shè)備間的第一平滑往返時間,以及所述客戶端與所述平臺服務(wù)器間的第二平滑往返時間;所述設(shè)備端從所述平臺服務(wù)器接收時延獲取響應(yīng),其中,所述時延獲取響應(yīng)攜帶了所述平臺服務(wù)器與第二網(wǎng)絡(luò)地址轉(zhuǎn)換設(shè)備間的第三平滑往返時間;所述設(shè)備端根據(jù)所述第一平滑往返時間和第二平滑往返時間,以及所述第三平滑往返時間確定向所述客戶端發(fā)送穿透握手包的目標時刻,并在所述目標時刻向所述客戶端發(fā)送所述穿透握手包。
3、在一個示例性實施例中,所述設(shè)備端根據(jù)所述第一平滑往返時間和第二平滑往返時間,以及所述第三平滑往返時間確定向所述客戶端發(fā)送穿透握手包的目標時刻,包括:所述設(shè)備端根據(jù)所述第一平滑往返時間和第二平滑往返時間,以及所述第三平滑往返時間確定等待時長;所述設(shè)備端根據(jù)所述等待時長確定向所述平臺服務(wù)器發(fā)送穿透握手包的所述目標時刻。
4、在一個示例性實施例中,所述設(shè)備端根據(jù)所述等待時長確定向所述平臺服務(wù)器發(fā)送穿透握手包的所述目標時刻,包括:所述設(shè)備端在第一時刻向所述平臺服務(wù)器發(fā)送建連響應(yīng)的情況下,將所述第一時刻與所述等待時長的和確定為所述目標時刻;所述設(shè)備端在所述目標時刻向所述客戶端發(fā)送所述穿透握手包。
5、在一個示例性實施例中,所述設(shè)備端根據(jù)所述第一平滑往返時間和第二平滑往返時間,以及所述第三平滑往返時間確定等待時長,包括:所述設(shè)備端將第一平滑往返時間、第二平滑往返時間和第三平滑往返時間的和確定為平滑往返時間總和;所述設(shè)備端將所述平滑往返時間總和與數(shù)值二的比值確定為所述等待時長。
6、在一個示例性實施例中,在設(shè)備端從平臺服務(wù)器接收目標建連請求之前,所述方法還包括:所述客戶端向所述平臺服務(wù)器發(fā)送第一建連請求,其中,所述第一建連請求攜帶了所述客戶端與所述平臺服務(wù)器間的第二平滑往返時間;所述平臺服務(wù)器根據(jù)所述第二平滑往返時間和所述平臺服務(wù)器與所述第一網(wǎng)絡(luò)地址轉(zhuǎn)換設(shè)備間的平滑往返時間得到所述第一平滑往返時間,所述平臺服務(wù)器將所述第二平滑往返時間添加到所述第一建連請求,得到所述目標建連請求;所述平臺服務(wù)器將所述目標建連請求發(fā)送至所述設(shè)備端。
7、在一個示例性實施例中,在所述客戶端向所述平臺服務(wù)器發(fā)送第一建連請求之前,所述方法還包括:所述客戶端定時向所述平臺服務(wù)器的n個會話遍歷服務(wù)發(fā)送會話遍歷請求,其中,n是大于1的整數(shù),n個會話遍歷服務(wù)的端口號不同;所述客戶端接收所述平臺服務(wù)器返回的n個會話響應(yīng),其中,所述會話響應(yīng)攜帶了所述第一網(wǎng)絡(luò)地址轉(zhuǎn)換設(shè)備轉(zhuǎn)換的外網(wǎng)地址和端口號;所述客戶端根據(jù)所述n個會話響應(yīng)攜帶的n個端口號或n個外網(wǎng)地址確定所述第一網(wǎng)絡(luò)地址轉(zhuǎn)換設(shè)備的類型。
8、在一個示例性實施例中,所述客戶端根據(jù)所述n個會話響應(yīng)攜帶的n個端口號或n個外網(wǎng)地址確定所述第一網(wǎng)絡(luò)地址轉(zhuǎn)換設(shè)備的類型,包括:在所述n個端口號相同的情況下,所述客戶端確定所述第一網(wǎng)絡(luò)地址轉(zhuǎn)換設(shè)備的類型是錐形地址轉(zhuǎn)換設(shè)備;否則,確定所述第一網(wǎng)絡(luò)地址轉(zhuǎn)換設(shè)備的類型是對稱型地址轉(zhuǎn)換設(shè)備;或者,在所述n個外網(wǎng)地址相同的情況下,所述客戶端確定所述第一網(wǎng)絡(luò)地址轉(zhuǎn)換設(shè)備的類型是錐形地址轉(zhuǎn)換設(shè)備;否則,確定所述第一網(wǎng)絡(luò)地址轉(zhuǎn)換設(shè)備的類型是對稱型地址轉(zhuǎn)換設(shè)備。
9、在一個示例性實施例中,所述方法還包括:在所述第一網(wǎng)絡(luò)地址轉(zhuǎn)換設(shè)備的類型是所述錐形地址轉(zhuǎn)換設(shè)備的情況下,所述客戶端向所述設(shè)備端發(fā)送一個所述穿透握手包;在所述第一網(wǎng)絡(luò)地址轉(zhuǎn)換設(shè)備的類型是所述對稱型地址轉(zhuǎn)換設(shè)備的情況下,所述客戶端向所述設(shè)備端發(fā)送m個所述穿透握手包,其中,m個所述穿透握手包被劃分為s組,在所述客戶端發(fā)送第s組中的第i個穿透握手包實現(xiàn)所述第一網(wǎng)絡(luò)地址轉(zhuǎn)換設(shè)備和所述第二網(wǎng)絡(luò)地址轉(zhuǎn)換設(shè)備穿透的情況下,所述目標時刻是所述客戶端中任一次向所述客戶端發(fā)送所述穿透握手包的時刻,相鄰兩組穿透握手包的時間間隔為預(yù)設(shè)值,m、s、i是整數(shù)。
10、在一個示例性實施例中,所述方法還包括:在所述客戶端向所述n個會話遍歷服務(wù)發(fā)送第j個會話遍歷服務(wù)發(fā)送會話遍歷請求的情況下,所述客戶端從所述平臺服務(wù)器獲取所述平臺服務(wù)器與所述第一網(wǎng)絡(luò)地址轉(zhuǎn)換設(shè)備間的平均往返時延,其中,j是大于或等于1整數(shù);所述客戶端將所述平均往返時延和第j-1個平滑往返時間的加權(quán)和確定為第j個平滑往返時間,其中,在j大于1的情況下所述第j-1個平滑往返時間是所述設(shè)備端向所述平臺服務(wù)器發(fā)送第j-1個會話遍歷服務(wù)發(fā)送會話遍歷請求得到的平滑往返時間,在j等于1的情況下所述第j-1個平滑往返時間等于所述平均往返時延,第j個平滑往返時間是所述客戶端與所述平臺服務(wù)器之間的平滑往返時間。
11、在一個示例性實施例中,所述客戶端將所述平均往返時延和第j-1個平滑往返時間的加權(quán)和確定為第j個平滑往返時間之后,所述方法還包括:所述客戶端根據(jù)所述平均往返時延和第j個平滑往返時間確定第j個偏差往返時間,其中,所述第j個偏差往返時間是所述客戶端與所述平臺服務(wù)器之間的偏差往返時間。
12、在一個示例性實施例中,所述方法還包括:所述設(shè)備端在接收到所述目標建連請求之后的預(yù)設(shè)時長向所述客戶端發(fā)送建連響應(yīng),所述客戶端在接收到所述建連響應(yīng)時向所述設(shè)備端發(fā)送穿透握手包;在所述客戶端接收到所述設(shè)備端發(fā)送的所述穿透握手包,且滿足目標條件的情況下,所述第一網(wǎng)絡(luò)地址轉(zhuǎn)換設(shè)備和所述第二網(wǎng)絡(luò)地址轉(zhuǎn)換設(shè)備成功穿透。
13、在一個示例性實施例中,所述方法還包括:所述設(shè)備端將所述客戶端與所述第一網(wǎng)絡(luò)地址轉(zhuǎn)換設(shè)備間的第一偏差往返時間、所述客戶端與所述平臺服務(wù)器的第二偏差往返時間,以及所述第二網(wǎng)絡(luò)地址轉(zhuǎn)換設(shè)備與所述平臺服務(wù)器間的第三偏差往返時間的和確定為目標和;所述設(shè)備端將所述第一網(wǎng)絡(luò)地址轉(zhuǎn)換設(shè)備與所述第二網(wǎng)絡(luò)地址轉(zhuǎn)換設(shè)備間的第四平滑往返時間與所述第一網(wǎng)絡(luò)地址轉(zhuǎn)換設(shè)備與所述第二網(wǎng)絡(luò)地址轉(zhuǎn)換設(shè)備間的第四偏差往返時間的差確定為目標差;所述目標條件包括:所述目標和小于所述目標差。
14、根據(jù)本發(fā)明的另一個實施例,提供了一種發(fā)送穿透握手包的裝置,包括:第一接收模塊,用于從平臺服務(wù)器接收目標建連請求,其中,所述目標建連請求攜帶了客戶端與第一網(wǎng)絡(luò)地址轉(zhuǎn)換設(shè)備間的第一平滑往返時間,以及所述客戶端與所述平臺服務(wù)器間的第二平滑往返時間;第二接收模塊,用于從所述平臺服務(wù)器接收時延獲取響應(yīng),其中,所述時延獲取響應(yīng)攜帶了所述平臺服務(wù)器與第二網(wǎng)絡(luò)地址轉(zhuǎn)換設(shè)備間的第三平滑往返時間;確定模塊,用于根據(jù)所述第一平滑往返時間和第二平滑往返時間,以及所述第三平滑往返時間確定向所述客戶端發(fā)送穿透握手包的目標時刻,并在所述目標時刻向所述客戶端發(fā)送所述穿透握手包。
15、根據(jù)本發(fā)明的又一個實施例,還提供了一種計算機可讀存儲介質(zhì),所述計算機可讀存儲介質(zhì)中存儲有計算機程序,其中,所述計算機程序被處理器執(zhí)行時實現(xiàn)上述任一項中所述的方法的步驟。
16、根據(jù)本發(fā)明的又一個實施例,還提供了一種電子裝置,包括存儲器和處理器,所述存儲器中存儲有計算機程序,所述處理器被設(shè)置為運行所述計算機程序以執(zhí)行上述任一項方法實施例中的步驟。
17、根據(jù)本發(fā)明的又一個實施例,還提供了一種計算機程序產(chǎn)品,包括計算機指令,所述計算機指令被處理器執(zhí)行時實現(xiàn)上述任一項中所述的方法的步驟。
18、通過本發(fā)明,由于通過接收平臺服務(wù)器發(fā)送的目標建連請求,獲取客戶端與第一網(wǎng)絡(luò)地址轉(zhuǎn)換設(shè)備間的第一平滑往返時間,以及客戶端與平臺服務(wù)器間的第二平滑往返時間,通過接收平臺服務(wù)器發(fā)送的時延獲取響應(yīng),獲取平臺服務(wù)器與第二網(wǎng)絡(luò)地址轉(zhuǎn)換設(shè)備間的第三平滑往返時間,從而根據(jù)第一平滑往返時間、第二平滑往返時間以及第三平滑往返時間確定目標時刻,以指示設(shè)備端在目標時刻向客戶端發(fā)送穿透握手包,保證了客戶端和設(shè)備端發(fā)出的穿透握手包同時到達對端出口nat,避免了由于時序差異性導(dǎo)致的連通性檢測報文(即穿透握手包)到達端出口nat的時刻不同,使得本端連通性檢測報文的nat映射端口發(fā)生跳變,從而造成nat穿透失敗的情況,有利于客戶端和設(shè)備端之間的穩(wěn)定連接,保證了客戶端和設(shè)備端之間的通信質(zhì)量和穩(wěn)定性,提升用戶體驗。因此,可以解決相關(guān)技術(shù)中連通性檢測報文到達對端出口nat的時序差異性引起的nat穿透失敗的問題,達到提高nat穿透的成功率的效果。