欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

實(shí)現(xiàn)udp打洞的方法

文檔序號(hào):7752532閱讀:320來源:國(guó)知局
專利名稱:實(shí)現(xiàn)udp打洞的方法
技術(shù)領(lǐng)域
本發(fā)明涉及互聯(lián)網(wǎng)通信技術(shù)領(lǐng)域,特別是涉及一種實(shí)現(xiàn)UDP打洞的方法。
背景技術(shù)
目前,隨著互聯(lián)網(wǎng)用戶的不斷增多,互聯(lián)網(wǎng)所使用的互聯(lián)網(wǎng)協(xié)議第四版(IPv4)地 址資源已經(jīng)非常緊張了,根本不能夠滿足讓每一位用戶都擁有一個(gè)能夠直接訪問因特網(wǎng)的 IPv4地址,即公網(wǎng)IP地址。大量的企業(yè)單位只擁有少量的公網(wǎng)IP地址,因此企業(yè)內(nèi)部只能 使用大量不能直接訪問因特網(wǎng)的私網(wǎng)IP地址來滿足企業(yè)內(nèi)用戶的內(nèi)部網(wǎng)絡(luò)通信需求,為 了讓企業(yè)內(nèi)的用戶能夠使用互聯(lián)網(wǎng)資源,企業(yè)一般會(huì)采用網(wǎng)絡(luò)地址轉(zhuǎn)換(Network Address Translation,NAT)設(shè)備將企業(yè)內(nèi)部的私網(wǎng)IP地址轉(zhuǎn)換成能夠直接訪問互聯(lián)網(wǎng)的公網(wǎng)IP地 址,使得企業(yè)內(nèi)的一個(gè)或多個(gè)用戶可以使用一個(gè)公網(wǎng)IP地址來訪問互聯(lián)網(wǎng)。NAT設(shè)備的使用雖然能暫時(shí)緩解IPv4地址資源的危機(jī),但是,由于NAT設(shè)備會(huì)限制 互聯(lián)網(wǎng)用戶對(duì)位于NAT設(shè)備后的企業(yè)內(nèi)部用戶的訪問,所以其會(huì)影響互聯(lián)網(wǎng)的互通性。近 年來,即時(shí)通信系統(tǒng)在互聯(lián)網(wǎng)應(yīng)用中的地位越來越重要。利用這些即時(shí)通訊系統(tǒng),網(wǎng)絡(luò)用戶 不僅可以進(jìn)行文字的交流,而且還可以進(jìn)行語(yǔ)音聊天以及視頻會(huì)議等等。為了使企業(yè)內(nèi)部 的用戶能夠和互聯(lián)網(wǎng)用戶一樣可以被自由訪問,需要采用一些策略來穿越NAT設(shè)備。互聯(lián)網(wǎng)工程任務(wù)組(IETF)制定了 RFC5128,該標(biāo)準(zhǔn)提出了一種UDP打洞方法來穿 越NAT設(shè)備。圖1是實(shí)現(xiàn)NAT設(shè)備穿越的網(wǎng)絡(luò)結(jié)構(gòu)圖,其中客戶端具有私網(wǎng)IP地址,NAT A將客戶端的私網(wǎng)IP地址轉(zhuǎn)換成公網(wǎng)IP地址;同樣,通信對(duì)端具有私網(wǎng)IP地址,NAT B將 通信對(duì)端的私網(wǎng)IP地址轉(zhuǎn)換成公網(wǎng)IP地址;所述通信對(duì)端為與所述客戶端進(jìn)行通信的位 于NAT B之后的另一客戶端;簡(jiǎn)單UDP報(bào)文穿越NAT (STUN)服務(wù)器是符合IETF RFC3489標(biāo) 準(zhǔn)的能夠幫助客戶端和通信對(duì)端獲取其公網(wǎng)IP地址的設(shè)備。參見圖1,如果客戶端和通信 對(duì)端需要直接通信,即客戶端想往通信對(duì)端發(fā)送數(shù)據(jù),而通信對(duì)端也想往客戶端發(fā)送數(shù)據(jù), 則IETF RFC5128中所述的UDP打洞方法包括步驟1、客戶端和通信對(duì)端通過STUN服務(wù)器獲取各自對(duì)應(yīng)的公網(wǎng)IP地址;步驟2、客戶端和通信對(duì)端通過STUN服務(wù)器獲取對(duì)方對(duì)應(yīng)的公網(wǎng)IP地址;步驟3、客戶端先向通信對(duì)端對(duì)應(yīng)的公網(wǎng)IP地址發(fā)送打洞報(bào)文;步驟4、收到客戶端的打洞報(bào)文后,通信對(duì)端向客戶端對(duì)應(yīng)的公網(wǎng)IP地址發(fā)送打 洞確認(rèn)報(bào)文;此時(shí),客戶端到通信對(duì)端的打洞完成。步驟5、然后通信對(duì)端再向客戶端對(duì)應(yīng)的公網(wǎng)IP地址發(fā)送打洞報(bào)文;步驟6、收到通信對(duì)端的打洞報(bào)文后,客戶端向通信對(duì)端對(duì)應(yīng)的公網(wǎng)IP地址發(fā)送 打洞確認(rèn)報(bào)文。此時(shí),通信對(duì)端到客戶端的打洞完成??蛻舳撕屯ㄐ艑?duì)端需要各自完成一個(gè)請(qǐng)求確認(rèn)的過程,才能打通兩者之間的雙向 數(shù)據(jù)通道,客戶端和通信對(duì)端才能直接進(jìn)行通信,可見,現(xiàn)有的UDP打洞方法中,客戶端和通信對(duì)端之間至少進(jìn)行4次數(shù)據(jù)的收發(fā)才能進(jìn)行直接通信,不僅占用用戶的帶寬資源,而 且打洞花費(fèi)的時(shí)間較長(zhǎng),不利于即時(shí)通訊系統(tǒng)的應(yīng)用,降低了用戶的網(wǎng)絡(luò)體驗(yàn)。

發(fā)明內(nèi)容
(一)要解決的技術(shù)問題針對(duì)現(xiàn)有NAT穿越技術(shù)的缺陷,本發(fā)明要解決的技術(shù)問題是如何減少UDP打洞花費(fèi)的時(shí)間和占用的帶寬資源,滿足即時(shí)通訊系統(tǒng)應(yīng)用的需求,從而提高用戶的網(wǎng)絡(luò)體驗(yàn)。(二)技術(shù)方案為解決上述技術(shù)問題,提供一種實(shí)現(xiàn)UDP打洞的方法,該方法包括步驟A、客戶端和通信對(duì)端分別獲取自身對(duì)應(yīng)的公網(wǎng)IP地址;B、客戶端向通信對(duì)端發(fā)起會(huì)話,以告知通信對(duì)端該客戶端對(duì)應(yīng)的公網(wǎng)IP地址,同 時(shí)獲取通信對(duì)端對(duì)應(yīng)的公網(wǎng)IP地址;C、客戶端和通信對(duì)端根據(jù)雙方對(duì)應(yīng)的公網(wǎng)IP地址進(jìn)行UDP打洞。
優(yōu)選地,步驟C具體包括客戶端向通信對(duì)端對(duì)應(yīng)的公網(wǎng)IP地址發(fā)送一個(gè)打洞請(qǐng)求;收到所述打洞請(qǐng)求后, 該通信對(duì)端向該客戶端對(duì)應(yīng)的公網(wǎng)IP地址返回一個(gè)打洞響應(yīng);收到來自通信對(duì)端的打洞 響應(yīng)后,客戶端向通信對(duì)端對(duì)應(yīng)的公網(wǎng)IP地址發(fā)送一個(gè)打洞確認(rèn)。優(yōu)選地,客戶端向通信對(duì)端對(duì)應(yīng)的公網(wǎng)IP地址發(fā)送一個(gè)打洞確認(rèn)之前,該方法進(jìn) 一步包括判斷該通信對(duì)端是否需要向該客戶端打洞,如果需要,客戶端向通信對(duì)端對(duì)應(yīng)的 公網(wǎng)IP地址發(fā)送一個(gè)打洞確認(rèn),否則,結(jié)束流程。優(yōu)選地,所述打洞請(qǐng)求為一個(gè)打洞協(xié)議報(bào)文,該協(xié)議報(bào)文包括協(xié)議版本域、協(xié)議 標(biāo)識(shí)域、事務(wù)標(biāo)識(shí)域、協(xié)議類型域和保留域;所述協(xié)議版本域表示生成打洞請(qǐng)求報(bào)文時(shí)所使用的打洞協(xié)議的版本;所述協(xié)議標(biāo)識(shí)域表示打洞請(qǐng)求報(bào)文使用的是哪一種協(xié)議,這里為打洞協(xié)議;所述事務(wù)標(biāo)識(shí)域表示是哪一個(gè)打洞請(qǐng)求報(bào)文;所述協(xié)議類型域表示是打洞協(xié)議中哪一種報(bào)文,這里為打洞請(qǐng)求報(bào)文。優(yōu)選地,所述打洞響應(yīng)為一個(gè)打洞協(xié)議報(bào)文,該協(xié)議報(bào)文包括協(xié)議版本域、協(xié)議 標(biāo)識(shí)域、事務(wù)標(biāo)識(shí)域、協(xié)議類型域和回復(fù)標(biāo)識(shí)域;所述協(xié)議版本域表示生成打洞響應(yīng)報(bào)文時(shí)所使用的打洞協(xié)議的版本;所述協(xié)議標(biāo)識(shí)域表示打洞響應(yīng)報(bào)文使用的是哪一種協(xié)議,這里為打洞協(xié)議;所述事務(wù)標(biāo)識(shí)域表示是哪一個(gè)打洞響應(yīng)報(bào)文;所述協(xié)議類型域表示是打洞協(xié)議中哪一種報(bào)文,這里為打洞響應(yīng)報(bào)文;所述回復(fù)標(biāo)識(shí)域表示是否需要回復(fù),該域中默認(rèn)值為需要回復(fù)。優(yōu)選地,所述打洞確認(rèn)為一個(gè)打洞協(xié)議報(bào)文,該協(xié)議報(bào)文包括協(xié)議版本域、協(xié)議 標(biāo)識(shí)域、事務(wù)標(biāo)識(shí)域、協(xié)議類型域和保留域;所述協(xié)議版本域表示生成打洞確認(rèn)報(bào)文時(shí)所使用的打洞協(xié)議的版本;所述協(xié)議標(biāo)識(shí)域表示打洞確認(rèn)報(bào)文使用的是哪一種協(xié)議,這里為打洞協(xié)議;所述事務(wù)標(biāo)識(shí)域表示是哪一個(gè)打洞確認(rèn)報(bào)文;
所述協(xié)議類型域表示是打洞協(xié)議中哪一種報(bào)文,這里為打洞確認(rèn)報(bào)文。
優(yōu)選地,步驟C具體包括C1、客戶端向通信對(duì)端對(duì)應(yīng)的公網(wǎng)IP地址發(fā)送一個(gè)打洞請(qǐng)求;C2、收到所述打洞請(qǐng)求后,該通信對(duì)端向該客戶端對(duì)應(yīng)的公網(wǎng)IP地址返回一個(gè)打 洞響應(yīng);C3、客戶端判斷在規(guī)定時(shí)間內(nèi)是否收到來自通信對(duì)端的打洞響應(yīng),如果收到,則表 示客戶端到通信對(duì)端的打洞成功,進(jìn)入步驟C4,否則,將規(guī)定時(shí)間加倍,重傳次數(shù)加1后,返 回步驟C1 ;如果在規(guī)定的重傳次數(shù)內(nèi),仍未收到來自通信對(duì)端的打洞響應(yīng),則判斷超時(shí),客 戶端到通信對(duì)端的打洞失??;C4、客戶端向通信對(duì)端對(duì)應(yīng)的公網(wǎng)IP地址發(fā)送一個(gè)打洞確認(rèn);C5、通信對(duì)端判斷在規(guī)定時(shí)間內(nèi)是否收到來自客戶端的打洞確認(rèn),如果收到,則表 示通信對(duì)端到客戶端的打洞成功,否則,將規(guī)定時(shí)間加倍,重傳次數(shù)加1后,返回步驟C2 ;如 果在規(guī)定的重傳次數(shù)內(nèi),仍未收到來自客戶端的打洞確認(rèn),則判斷超時(shí),通信對(duì)端到客戶端 的打洞失敗。優(yōu)選地,所述初始規(guī)定時(shí)間為100毫秒,重傳次數(shù)為4次,初始重傳次數(shù)設(shè)置為0。優(yōu)選地,步驟B具體包括B1、客戶端向通信對(duì)端發(fā)起一個(gè)公網(wǎng)IP地址獲取請(qǐng)求,該請(qǐng)求中攜帶該客戶端對(duì) 應(yīng)的公網(wǎng)IP地址信息;B2、收到所述公網(wǎng)IP地址獲取請(qǐng)求后,該通信對(duì)端向該客戶端返回一個(gè)公網(wǎng)IP地 址獲取響應(yīng);B3、收到所述公網(wǎng)IP地址獲取響應(yīng)后,該客戶端從所述公網(wǎng)IP地址獲取響應(yīng)中獲 得該通信對(duì)端對(duì)應(yīng)的公網(wǎng)IP地址。優(yōu)選地,所述打洞協(xié)議為一種控制協(xié)議;所述打洞協(xié)議報(bào)文長(zhǎng)度為14字節(jié)。(三)有益效果本發(fā)明提出了一種實(shí)現(xiàn)UDP打洞的方法,通過客戶端主動(dòng)向通信對(duì)端發(fā)起打洞請(qǐng) 求,通信對(duì)端接收到打洞請(qǐng)求后向客戶端發(fā)送打洞響應(yīng),客戶端接收到打洞響應(yīng)標(biāo)志著客 戶端到通信對(duì)端的打洞成功;然后客戶端再向通信對(duì)端發(fā)送打洞確認(rèn),通信對(duì)端接收到打 洞確認(rèn)標(biāo)志著通信對(duì)端到客戶端的打洞成功,成功實(shí)現(xiàn)了客戶端和通信對(duì)端之間的UDP打 洞,不僅縮短了 UDP打洞花費(fèi)的時(shí)間,而且減少了實(shí)現(xiàn)UDP打洞過程中傳輸數(shù)據(jù)占用的帶寬 資源,滿足即時(shí)通訊系統(tǒng)應(yīng)用的需求,從而提高用戶的網(wǎng)絡(luò)體驗(yàn)


圖1是實(shí)現(xiàn)NAT設(shè)備穿越的網(wǎng)絡(luò)結(jié)構(gòu)圖;圖2是依照本發(fā)明一種實(shí)施方式實(shí)現(xiàn)UDP打洞的方法流程圖。;圖3是本發(fā)明方法中客戶端向通信對(duì)端發(fā)起會(huì)話并獲取通信對(duì)端對(duì)應(yīng)的公網(wǎng)IP 地址的方法流程圖;圖4是本發(fā)明方法中客戶端和通信對(duì)端根據(jù)雙方對(duì)應(yīng)的公網(wǎng)IP地址進(jìn)行UDP打 洞的方法流程圖。
具體實(shí)施例方式下面結(jié)合附圖和實(shí)施例,對(duì)本發(fā)明的具體實(shí)施方式
作進(jìn)一步詳細(xì)描述。以下實(shí)施 例用于說明本發(fā)明,但不用來限制本發(fā)明的范圍。本發(fā)明的主要思想為客戶端和通信對(duì)端分別獲取自身對(duì)應(yīng)的公網(wǎng)IP地址;客戶 端向通信對(duì)端發(fā)起會(huì)話,以告知通信對(duì)端該客戶端對(duì)應(yīng)的公網(wǎng)IP地址,同時(shí)獲取通信對(duì)端 對(duì)應(yīng)的公網(wǎng)IP地址;客戶端和通信對(duì)端根據(jù)雙方對(duì)應(yīng)的公網(wǎng)IP地址進(jìn)行UDP打洞。 圖2是依照本發(fā)明一種實(shí)施方式實(shí)現(xiàn)UDP打洞的方法流程圖。如圖2所示,本發(fā) 明所述方法主要包括以下步驟步驟A、客戶端和通信對(duì)端分別獲取自身對(duì)應(yīng)的公網(wǎng)IP地址。客戶端或通信對(duì)端在登錄成功后,首先向能夠獲得其對(duì)應(yīng)的公網(wǎng)IP地址的第三 方設(shè)備,比如STUN服務(wù)器,發(fā)送公網(wǎng)IP地址獲取請(qǐng)求;接收到客戶端或通信對(duì)端發(fā)送來的 公網(wǎng)IP地址獲取請(qǐng)求后,STUN服務(wù)器將該客戶端或通信對(duì)端對(duì)應(yīng)的公網(wǎng)IP地址發(fā)送給該 客戶端或通信對(duì)端,關(guān)于STUN服務(wù)器如何獲取客戶端或通信對(duì)端對(duì)應(yīng)的公網(wǎng)IP地址為現(xiàn) 有技術(shù)。步驟B、客戶端向通信對(duì)端發(fā)起會(huì)話,以告知通信對(duì)端該客戶端對(duì)應(yīng)的公網(wǎng)IP地 址,同時(shí)獲取通信對(duì)端對(duì)應(yīng)的公網(wǎng)IP地址。該會(huì)話可以是采用會(huì)話初始化協(xié)議(SIP)的音視頻通話。圖3是本發(fā)明方法中客戶端向通信對(duì)端發(fā)起會(huì)話并獲取通信對(duì)端對(duì)應(yīng)的公網(wǎng)IP 地址的方法流程圖。如圖3所示,該方法包括步驟Bi、客戶端向通信對(duì)端發(fā)起一個(gè)公網(wǎng)IP地址獲取請(qǐng)求。該請(qǐng)求中攜帶該客戶端對(duì)應(yīng)的公網(wǎng)IP地址信息。步驟B2、收到所述公網(wǎng)IP地址獲取請(qǐng)求后,該通信對(duì)端向該客戶端返回一個(gè)公網(wǎng) IP地址獲取響應(yīng)。該通信對(duì)端從收到的所述的公網(wǎng)IP地址獲取請(qǐng)求中獲得該客戶端對(duì)應(yīng)的公網(wǎng)IP 地址信息,并在該公網(wǎng)IP地址獲取響應(yīng)中攜帶該通信對(duì)端對(duì)應(yīng)的公網(wǎng)IP地址信息。步驟B3、收到所述公網(wǎng)IP地址獲取響應(yīng)后,該客戶端從所述公網(wǎng)IP地址獲取響應(yīng) 中獲得該通信對(duì)端對(duì)應(yīng)的公網(wǎng)IP地址。本步驟中,客戶端也可以向一個(gè)公網(wǎng)上的第三方設(shè)備,比如SIP服務(wù)器,發(fā)送一個(gè) 通信對(duì)端對(duì)應(yīng)的公網(wǎng)IP地址的獲取請(qǐng)求,該請(qǐng)求中攜帶該客戶端對(duì)應(yīng)的公網(wǎng)IP地址信息; SIP服務(wù)器將所述請(qǐng)求轉(zhuǎn)發(fā)給對(duì)應(yīng)的通信對(duì)端;該通信對(duì)端從收到的所述請(qǐng)求中獲得該客 戶端對(duì)應(yīng)的公網(wǎng)IP地址信息,并將該通信對(duì)端對(duì)應(yīng)的公網(wǎng)IP地址信息攜帶在一個(gè)通信對(duì) 端對(duì)應(yīng)的公網(wǎng)IP地址獲取響應(yīng)中發(fā)送給該SIP服務(wù)器;該SIP服務(wù)器再將所述響應(yīng)轉(zhuǎn)發(fā)給 該客戶端;該客戶端從收到的所述響應(yīng)中獲得該通信對(duì)端對(duì)應(yīng)的公網(wǎng)IP地址。這樣,該客戶端和該通信對(duì)端都擁有了兩端對(duì)應(yīng)的公網(wǎng)IP地址信息。步驟C、客戶端和通信對(duì)端根據(jù)雙方對(duì)應(yīng)的公網(wǎng)IP地址進(jìn)行UDP打洞。在本步驟中,客戶端向通信對(duì)端對(duì)應(yīng)的公網(wǎng)IP地址發(fā)送一個(gè)打洞請(qǐng)求;收到所述 打洞請(qǐng)求后,該通信對(duì)端向該客戶端對(duì)應(yīng)的公網(wǎng)IP地址返回一個(gè)打洞響應(yīng);收到來自通信 對(duì)端的打洞響應(yīng)后,客戶端向通信對(duì)端對(duì)應(yīng)的公網(wǎng)IP地址發(fā)送一個(gè)打洞確認(rèn)。進(jìn)一步地,客戶端向通信對(duì)端對(duì)應(yīng)的公網(wǎng)IP地址發(fā)送一個(gè)打洞確認(rèn)之前,可以判斷該通信對(duì)端是否需要向該客戶端打洞,如果需要,客戶端向通信對(duì)端對(duì)應(yīng)的公網(wǎng)IP地址 發(fā)送一個(gè)打洞確認(rèn),否則,結(jié)束流程。圖4是本發(fā)明方法中客戶端和通信對(duì)端根據(jù)雙方對(duì)應(yīng)的公網(wǎng)IP地址進(jìn)行UDP打 洞的方法流程圖,如圖4所示,該方法包括步驟C1、客戶端向通信對(duì)端對(duì)應(yīng)的公網(wǎng)IP地址發(fā)送一個(gè)打洞請(qǐng)求;在本步驟中,所述打洞請(qǐng)求為一個(gè)打洞協(xié)議報(bào)文,該打洞請(qǐng)求報(bào)文結(jié)構(gòu)如表1所 示, 表1在表1中,協(xié)議版本域,占用2字節(jié),表示生成打洞請(qǐng)求報(bào)文時(shí)所使用的打洞協(xié)議 的版本,比如0X01表示使用版本為1的打洞協(xié)議,所述打洞協(xié)議為一種控制協(xié)議;協(xié)議標(biāo)識(shí) 域,占用4字節(jié),表示打洞請(qǐng)求報(bào)文使用的是哪一種協(xié)議,這里為打洞協(xié)議,該標(biāo)識(shí)可以由 自定義隨機(jī)數(shù)生成,也可以使用全球唯一標(biāo)識(shí)符(Globally Unique Identifier,⑶ID);事 務(wù)標(biāo)識(shí)域,占用4字節(jié),表示是哪一個(gè)打洞請(qǐng)求報(bào)文,該標(biāo)識(shí)可以由自定義隨機(jī)數(shù)生成,也 可以使用全球唯一標(biāo)識(shí)符(Globally Unique Identifier,⑶ID),打洞請(qǐng)求報(bào)文重發(fā)時(shí)該 標(biāo)識(shí)必須相同;協(xié)議類型域,占用2字節(jié),表示是打洞協(xié)議中哪一種報(bào)文,這里用0x01表示 是打洞請(qǐng)求報(bào)文;保留域,占用2字節(jié)??梢姶蚨磪f(xié)議的報(bào)文長(zhǎng)度為14字節(jié)。步驟C2、收到所述打洞請(qǐng)求后,該通信對(duì)端向該客戶端對(duì)應(yīng)的公網(wǎng)IP地址返回一 個(gè)打洞響應(yīng)。在本步驟中,所述打洞響應(yīng)為一個(gè)打洞協(xié)議報(bào)文,該打洞響應(yīng)報(bào)文結(jié)構(gòu)如表2所 示, 表 2在表2中,協(xié)議版本域,占用2字節(jié),表示生成打洞響應(yīng)報(bào)文時(shí)所使用的打洞協(xié)議 的版本,比如0X01表示使用版本為1的打洞協(xié)議;協(xié)議標(biāo)識(shí)域,占用4字節(jié),表示打洞響 應(yīng)報(bào)文使用的是哪一種協(xié)議,這里為打洞協(xié)議,該標(biāo)識(shí)可以由自定義隨機(jī)數(shù)生成,也可以使 用全球唯一標(biāo)識(shí)符(Globally Unique Identifier,⑶ID);事務(wù)標(biāo)識(shí)域,占用4字節(jié),表 示是哪一個(gè)打洞響應(yīng)報(bào)文,該標(biāo)識(shí)可以由自定義隨機(jī)數(shù)生成,也可以使用全球唯一標(biāo)識(shí)符 (Globally Unique Identifier, GUID),打洞響應(yīng)報(bào)文重發(fā)時(shí)該標(biāo)識(shí)必須相同;協(xié)議類型 域,占用2字節(jié),表示是打洞協(xié)議中哪一種報(bào)文,這里用0x11表示是打洞響應(yīng)報(bào)文;回復(fù)標(biāo) 識(shí)域,占用2字節(jié),表示是否需要回復(fù),其中1表示需要回復(fù),0表示不需要回復(fù),需要回復(fù)表 示該報(bào)文的發(fā)起方需要向該報(bào)文的接收方打洞,不需要回復(fù)表示該報(bào)文的發(fā)起方不希望向 該報(bào)文的接收方打洞,該域中默認(rèn)值為1。步驟C3、客戶端判斷在規(guī)定時(shí)間內(nèi)是否收到來自通信對(duì)端的打洞響應(yīng),如果收到, 則表示客戶端到通信對(duì)端的打洞成功,進(jìn)入步驟C4,否則,將規(guī)定時(shí)間加倍,重傳次數(shù)加1后,返回步驟C1 ;如果在規(guī)定的重傳次數(shù)內(nèi),仍未收到來自通信對(duì)端的打洞響應(yīng),則判斷超 時(shí),客戶端到通信對(duì)端的打洞失敗。在本步驟中,客戶端收到來自通信對(duì)端的打洞響應(yīng)后,可以進(jìn)一步判斷該通信對(duì) 端是否需要向該客戶端打洞,如果需要,進(jìn)入步驟C4,否則,結(jié)束流程。初始規(guī)定時(shí)間可以設(shè) 為100毫秒,重傳次數(shù)設(shè)為4次,初始重傳次數(shù)設(shè)置為0。步驟C4、客戶端向通信對(duì)端對(duì)應(yīng)的公網(wǎng)IP地址發(fā)送一個(gè)打洞確認(rèn)。在本步驟中,所述打洞確認(rèn)為一個(gè)打洞協(xié)議報(bào)文,該打洞確認(rèn)報(bào)文結(jié)構(gòu)如表1所 示,其中協(xié)議版本域,占用2字節(jié),表示生成打洞確認(rèn)報(bào)文時(shí)所使用的打洞協(xié)議的版本,比 如0X01表示使用版本為1的打洞協(xié)議;協(xié)議標(biāo)識(shí)域,占用4字節(jié),表示打洞確認(rèn)報(bào)文使用 的是哪一種協(xié)議,這里為打洞協(xié)議,該標(biāo)識(shí)可以由自定義隨機(jī)數(shù)生成,也可以使用全球唯一 標(biāo)識(shí)符(Globally Unique Identifier,⑶ID);事務(wù)標(biāo)識(shí)域,占用4字節(jié),表示是哪一個(gè) 打洞確認(rèn)報(bào)文,該標(biāo)識(shí)可以由自定義隨機(jī)數(shù)生成,也可以使用全球唯一標(biāo)識(shí)符(Globally Unique Identifier,⑶ID);協(xié)議類型域,占用2字節(jié),表示是打洞協(xié)議中哪一種報(bào)文,這里 用0x21表示是打洞確認(rèn)報(bào)文;保留域,占用2字節(jié)。步驟C5、通信對(duì)端判斷在規(guī)定時(shí)間內(nèi)是否收到來自客戶端的打洞確認(rèn),如果收到, 則表示通信對(duì)端到客戶端的打洞成功,否則,將規(guī)定時(shí)間加倍,重傳次數(shù)加1后,返回步驟 C2;如果在規(guī)定的重傳次數(shù)內(nèi),仍未收到來自客戶端的打洞確認(rèn),則判斷超時(shí),通信對(duì)端到 客戶端的打洞失敗。在本步驟中,初始規(guī)定時(shí)間可以設(shè)為100毫秒,重傳次數(shù)設(shè)為4次,初始重傳次數(shù) 設(shè)置為0。自此,客戶端和通信對(duì)端之間的UDP打洞成功,雙方可以穿越NAT設(shè)備直接進(jìn)行通由以上實(shí)施例可以看出,本發(fā)明實(shí)施例提出了一種UDP打洞的方法,通過客戶端 主動(dòng)向通信對(duì)端發(fā)起打洞請(qǐng)求,通信對(duì)端接收到打洞請(qǐng)求后向客戶端發(fā)送打洞響應(yīng),客戶 端接收到打洞響應(yīng)標(biāo)志著客戶端到通信對(duì)端的打洞成功;然后客戶端再向通信對(duì)端發(fā)送打 洞確認(rèn),通信對(duì)端接收到打洞確認(rèn)標(biāo)志著通信對(duì)端到客戶端的打洞成功,成功實(shí)現(xiàn)了客戶 端和通信對(duì)端之間的UDP打洞,不僅縮短了 UDP打洞花費(fèi)的時(shí)間,而且減少了實(shí)現(xiàn)UDP打洞 過程中傳輸數(shù)據(jù)占用的帶寬資源,滿足即時(shí)通訊系統(tǒng)應(yīng)用的需求,從而提高用戶的網(wǎng)絡(luò)體 驗(yàn)。以上所述僅是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人 員來說,在不脫離本發(fā)明技術(shù)原理的前提下,還可以做出若干改進(jìn)和變型,這些改進(jìn)和變型 也應(yīng)視為本發(fā)明的保護(hù)范圍。
權(quán)利要求
一種實(shí)現(xiàn)UDP打洞的方法,其特征在于,該方法包括步驟A、客戶端和通信對(duì)端分別獲取自身對(duì)應(yīng)的公網(wǎng)IP地址;B、客戶端向通信對(duì)端發(fā)起會(huì)話,以告知通信對(duì)端該客戶端對(duì)應(yīng)的公網(wǎng)IP地址,同時(shí)獲取通信對(duì)端對(duì)應(yīng)的公網(wǎng)IP地址;C、客戶端和通信對(duì)端根據(jù)雙方對(duì)應(yīng)的公網(wǎng)IP地址進(jìn)行UDP打洞。
2.如權(quán)利要求1所述的方法,其特征在于,步驟C具體包括客戶端向通信對(duì)端對(duì)應(yīng)的公網(wǎng)IP地址發(fā)送一個(gè)打洞請(qǐng)求;收到所述打洞請(qǐng)求后,該通 信對(duì)端向該客戶端對(duì)應(yīng)的公網(wǎng)IP地址返回一個(gè)打洞響應(yīng);收到來自通信對(duì)端的打洞響應(yīng) 后,客戶端向通信對(duì)端對(duì)應(yīng)的公網(wǎng)IP地址發(fā)送一個(gè)打洞確認(rèn)。
3.如權(quán)利要求2所述的方法,其特征在于,客戶端向通信對(duì)端對(duì)應(yīng)的公網(wǎng)IP地址發(fā)送 一個(gè)打洞確認(rèn)之前,該方法進(jìn)一步包括判斷該通信對(duì)端是否需要向該客戶端打洞,如果需要,客戶端向通信對(duì)端對(duì)應(yīng)的公網(wǎng) IP地址發(fā)送一個(gè)打洞確認(rèn),否則,結(jié)束流程。
4.如權(quán)利要求2所述的方法,其特征在于,所述打洞請(qǐng)求為一個(gè)打洞協(xié)議報(bào)文,該協(xié)議 報(bào)文包括協(xié)議版本域、協(xié)議標(biāo)識(shí)域、事務(wù)標(biāo)識(shí)域、協(xié)議類型域和保留域;所述協(xié)議版本域表示生成打洞請(qǐng)求報(bào)文時(shí)所使用的打洞協(xié)議的版本; 所述協(xié)議標(biāo)識(shí)域表示打洞請(qǐng)求報(bào)文使用的是哪一種協(xié)議,這里為打洞協(xié)議; 所述事務(wù)標(biāo)識(shí)域表示是哪一個(gè)打洞請(qǐng)求報(bào)文; 所述協(xié)議類型域表示是打洞協(xié)議中哪一種報(bào)文,這里為打洞請(qǐng)求報(bào)文。
5.如權(quán)利要求2所述的方法,其特征在于,所述打洞響應(yīng)為一個(gè)打洞協(xié)議報(bào)文,該協(xié)議 報(bào)文包括協(xié)議版本域、協(xié)議標(biāo)識(shí)域、事務(wù)標(biāo)識(shí)域、協(xié)議類型域和回復(fù)標(biāo)識(shí)域;所述協(xié)議版本域表示生成打洞響應(yīng)報(bào)文時(shí)所使用的打洞協(xié)議的版本; 所述協(xié)議標(biāo)識(shí)域表示打洞響應(yīng)報(bào)文使用的是哪一種協(xié)議,這里為打洞協(xié)議; 所述事務(wù)標(biāo)識(shí)域表示是哪一個(gè)打洞響應(yīng)報(bào)文; 所述協(xié)議類型域表示是打洞協(xié)議中哪一種報(bào)文,這里為打洞響應(yīng)報(bào)文; 所述回復(fù)標(biāo)識(shí)域表示是否需要回復(fù),該域中默認(rèn)值為需要回復(fù)。
6.如權(quán)利要求2所述的方法,其特征在于,所述打洞確認(rèn)為一個(gè)打洞協(xié)議報(bào)文,該協(xié)議 報(bào)文包括協(xié)議版本域、協(xié)議標(biāo)識(shí)域、事務(wù)標(biāo)識(shí)域、協(xié)議類型域和保留域;所述協(xié)議版本域表示生成打洞確認(rèn)報(bào)文時(shí)所使用的打洞協(xié)議的版本; 所述協(xié)議標(biāo)識(shí)域表示打洞確認(rèn)報(bào)文使用的是哪一種協(xié)議,這里為打洞協(xié)議; 所述事務(wù)標(biāo)識(shí)域表示是哪一個(gè)打洞確認(rèn)報(bào)文; 所述協(xié)議類型域表示是打洞協(xié)議中哪一種報(bào)文,這里為打洞確認(rèn)報(bào)文。
7.如權(quán)利要求1所述的方法,其特征在于,步驟C具體包括 C1、客戶端向通信對(duì)端對(duì)應(yīng)的公網(wǎng)IP地址發(fā)送一個(gè)打洞請(qǐng)求;C2、收到所述打洞請(qǐng)求后,該通信對(duì)端向該客戶端對(duì)應(yīng)的公網(wǎng)IP地址返回一個(gè)打洞響應(yīng);C3、客戶端判斷在規(guī)定時(shí)間內(nèi)是否收到來自通信對(duì)端的打洞響應(yīng),如果收到,則表示客 戶端到通信對(duì)端的打洞成功,進(jìn)入步驟C4,否則,將規(guī)定時(shí)間加倍,重傳次數(shù)加1后,返回步 驟C1 ;如果在規(guī)定的重傳次數(shù)內(nèi),仍未收到來自通信對(duì)端的打洞響應(yīng),則判斷超時(shí),客戶端到通信對(duì)端的打洞失??;C4、客戶端向通信對(duì)端對(duì)應(yīng)的公網(wǎng)IP地址發(fā)送一個(gè)打洞確認(rèn);C5、通信對(duì)端判斷在規(guī)定時(shí)間內(nèi)是否收到來自客戶端的打洞確認(rèn),如果收到,則表示通 信對(duì)端到客戶端的打洞成功,否則,將規(guī)定時(shí)間加倍,重傳次數(shù)加1后,返回步驟C2 ;如果在 規(guī)定的重傳次數(shù)內(nèi),仍未收到來自客戶端的打洞確認(rèn),則判斷超時(shí),通信對(duì)端到客戶端的打 洞失敗。
8.如權(quán)利要求7任一項(xiàng)所述的方法,其特征在于,所述初始規(guī)定時(shí)間為100毫秒,重傳 次數(shù)為4次,初始重傳次數(shù)設(shè)置為0。
9.如權(quán)利要求1-8中任一項(xiàng)所述的方法,其特征在于,步驟B具體包括B1、客戶端向通信對(duì)端發(fā)起一個(gè)公網(wǎng)IP地址獲取請(qǐng)求,該請(qǐng)求中攜帶該客戶端對(duì)應(yīng)的 公網(wǎng)IP地址信息;B2、收到所述公網(wǎng)IP地址獲取請(qǐng)求后,該通信對(duì)端向該客戶端返回一個(gè)公網(wǎng)IP地址獲 取響應(yīng);B3、收到所述公網(wǎng)IP地址獲取響應(yīng)后,該客戶端從所述公網(wǎng)IP地址獲取響應(yīng)中獲得該 通信對(duì)端對(duì)應(yīng)的公網(wǎng)IP地址。
10.如權(quán)利要求4-6中任一項(xiàng)所述的方法,其特征在于,所述打洞協(xié)議為一種控制協(xié) 議;所述打洞協(xié)議報(bào)文長(zhǎng)度為14字節(jié)。
全文摘要
本發(fā)明公開了一種實(shí)現(xiàn)UDP打洞的方法,該方法包括步驟A、客戶端和通信對(duì)端分別獲取自身對(duì)應(yīng)的公網(wǎng)IP地址;B、客戶端向通信對(duì)端發(fā)起會(huì)話,以告知通信對(duì)端該客戶端對(duì)應(yīng)的公網(wǎng)IP地址,同時(shí)獲取通信對(duì)端對(duì)應(yīng)的公網(wǎng)IP地址;C、客戶端和通信對(duì)端根據(jù)雙方對(duì)應(yīng)的公網(wǎng)IP地址進(jìn)行UDP打洞。本發(fā)明通過客戶端主動(dòng)向通信對(duì)端發(fā)起打洞請(qǐng)求,通信對(duì)端接收到打洞請(qǐng)求后向客戶端發(fā)送打洞響應(yīng);然后客戶端再向通信對(duì)端發(fā)送打洞確認(rèn),成功實(shí)現(xiàn)了客戶端和通信對(duì)端之間的UDP打洞,不僅縮短了UDP打洞花費(fèi)的時(shí)間,而且減少了實(shí)現(xiàn)UDP打洞過程中傳輸數(shù)據(jù)占用的帶寬資源,滿足即時(shí)通訊系統(tǒng)應(yīng)用的需求,從而提高用戶的網(wǎng)絡(luò)體驗(yàn)。
文檔編號(hào)H04L29/12GK101873359SQ201010210299
公開日2010年10月27日 申請(qǐng)日期2010年6月28日 優(yōu)先權(quán)日2010年6月28日
發(fā)明者王利軍, 陳旸 申請(qǐng)人:北京神州泰岳軟件股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
关岭| 梁山县| 阳高县| 济宁市| 南开区| 武功县| 漯河市| 马鞍山市| 吴旗县| 内黄县| 太康县| 东光县| 余姚市| 辽宁省| 白沙| 老河口市| 宜城市| 宣武区| 佛坪县| 林西县| 丽江市| 八宿县| 香格里拉县| 贡嘎县| 双辽市| 庆城县| 济阳县| 通榆县| 清水县| 大同市| 府谷县| 合作市| 武功县| 九江市| 仙居县| 海晏县| 崇左市| 铁力市| 怀化市| 商城县| 榕江县|