專利名稱:一種VoIP中基于語(yǔ)音可達(dá)性的融合穿越方法
技術(shù)領(lǐng)域:
本發(fā)明屬于通信領(lǐng)域,具體涉及一種VoIP中基于語(yǔ)音可達(dá)性的融合穿越方法。
背景技術(shù):
隨著VoIP(Voice over Internet Protocol的縮寫(業(yè)界一般稱為IP電話))和軟交換技術(shù)的成熟和廣泛應(yīng)用,越來(lái)越多的企業(yè)和個(gè)人采用了 VoIP和軟交換技術(shù)進(jìn)行企業(yè)內(nèi)部數(shù)據(jù)網(wǎng)絡(luò)和語(yǔ)音網(wǎng)絡(luò)的整合。但是,出于安全的考慮,在企業(yè)內(nèi)部網(wǎng)絡(luò)中存在大量的防火墻;同時(shí),為了節(jié)省IPv4的地址,目前很多企業(yè)采用NAT (Network Address Translation即網(wǎng)絡(luò)地址轉(zhuǎn)換)技術(shù),也就是私網(wǎng),使內(nèi)網(wǎng)中大量的主機(jī)通過(guò)少數(shù)幾個(gè)IP訪問(wèn)Internet。這些技術(shù)在早期的Internet網(wǎng)絡(luò)中起到了很大的作用,能夠用來(lái)阻擋來(lái)自企業(yè)外部網(wǎng)絡(luò) 攻擊、節(jié)省IP地址、保護(hù)企業(yè)內(nèi)部的數(shù)據(jù)安全。然而在VoIP的應(yīng)用中,各種各樣的業(yè)務(wù)要求和底層協(xié)議的特點(diǎn),使得企業(yè)遺留的防火墻和NAT嚴(yán)重阻礙了 VoIP的應(yīng)用。于是,如何使VoIP穿越企業(yè)遺留的防火墻就成了一個(gè)亟待解決的問(wèn)題。目前在語(yǔ)音和視頻通訊領(lǐng)域,私網(wǎng)穿越有如下方法應(yīng)用層網(wǎng)關(guān)(ALG)、MIDC0M、STUN、TURN、完全代理(Full proxy)、ICE方案。防火墻穿越方案存在網(wǎng)關(guān)思路、代理思路、應(yīng)用層網(wǎng)關(guān)思路、虛擬專用網(wǎng)(VPN)思路以及隧道穿越方案。因此,針對(duì)上述亟待解決的問(wèn)題,即在VoIP中穿越私網(wǎng)與防火墻兩種主要網(wǎng)絡(luò)環(huán)境,目前主要有以下方法I,網(wǎng)關(guān)思路在傳統(tǒng)PSTN網(wǎng)絡(luò)中,可以使用網(wǎng)關(guān)把局域網(wǎng)上的IP語(yǔ)音和視頻轉(zhuǎn)換為公共電路交換網(wǎng)上的PSTN語(yǔ)音和視頻。使用這樣一個(gè)網(wǎng)關(guān)就不用關(guān)心網(wǎng)絡(luò)防火墻的穿透問(wèn)題,因?yàn)闆](méi)有數(shù)據(jù)包要通過(guò)防火墻,這也解決了 NAT問(wèn)題,所有到局域網(wǎng)內(nèi)終端的呼叫都是可路由的,因?yàn)橥ㄟ^(guò)網(wǎng)關(guān)進(jìn)入局域網(wǎng)的呼叫都是可路由的。但是,該方法的缺點(diǎn)是網(wǎng)關(guān)屬于早期傳統(tǒng)網(wǎng)絡(luò)中使用的一種方法,同時(shí)也是一個(gè)局部解決方案,要求所有參與呼叫者在最后一道NAT和防火墻要有一個(gè)相應(yīng)的網(wǎng)關(guān)。2,代理思路H. 323代理能解決NAT問(wèn)題或者同時(shí)解決NAT和防火墻問(wèn)題,這取決于代理如何被配置,代理其實(shí)是一種特殊類型的網(wǎng)關(guān),但并不是把IP協(xié)議轉(zhuǎn)換為別的,在代理兩邊使用的是相同的協(xié)議。代理使終端到終端的呼叫看起來(lái)像兩個(gè)分離的呼叫一個(gè)是從私有網(wǎng)上的終端到代理,另一個(gè)是從代理到公眾網(wǎng)上的終端,代理通過(guò)對(duì)這個(gè)呼叫進(jìn)行中轉(zhuǎn)解決了NAT問(wèn)題。但是,該方法的缺點(diǎn)是這種解決方案典型應(yīng)用是在防火墻后放一個(gè)H. 323代理,代理需要被分配公有IP地址。防火墻被配置允許代理和外部進(jìn)行多媒體通訊。有時(shí)候沿著網(wǎng)絡(luò)路徑在許多位置都應(yīng)用了 NAT設(shè)備,這時(shí)就需要在每一個(gè)使用NAT的地方放置代理。3,應(yīng)用層網(wǎng)關(guān)應(yīng)用層網(wǎng)關(guān)(Application layer gateways)是被設(shè)計(jì)能識(shí)別指定IP協(xié)議(如H. 323和SIP協(xié)議)的防火墻,它不是簡(jiǎn)單地察看包頭信息來(lái)決定數(shù)據(jù)包是否可以通過(guò),而是更深層的分析數(shù)據(jù)包負(fù)載內(nèi)的數(shù)據(jù),也就是應(yīng)用層的數(shù)據(jù)。H. 323和SIP協(xié)議(SessionInitiation Protocol,是一個(gè)應(yīng)用層的信令控制協(xié)議)都在負(fù)載中放了重要的控制信息,例如語(yǔ)音和視頻終端使用哪一個(gè)數(shù)據(jù)端口來(lái)接收別的終端的語(yǔ)音和視頻數(shù)據(jù)。通過(guò)分析哪一個(gè)端口需要打開,防火墻動(dòng)態(tài)地打開那些被應(yīng)用的端口,而所有別的端口依然安全地保持關(guān)閉狀態(tài)。如果一個(gè)NAT被應(yīng)用來(lái)屏蔽內(nèi)部IP地址,這時(shí)ALG就需要一個(gè)代理,一些防火墻生產(chǎn)廠商把代理結(jié)合到ALG上越過(guò)NAT。但是,這種解決方案的缺點(diǎn)是由于要分析數(shù)據(jù)包負(fù)載,這樣就加重了防火墻的處理任務(wù),影響網(wǎng)絡(luò)的運(yùn)行,成為潛在的網(wǎng)絡(luò)瓶頸;并且如果這兒有多層防火墻和NAT,則在呼叫路徑上的每個(gè)防火墻都必須被升級(jí)來(lái)支持ALG功能;對(duì)大多數(shù)公司的網(wǎng)絡(luò)來(lái)說(shuō)防火墻是關(guān)鍵部件,在一些公司增加一個(gè)ALG或許是困難的。4,虛擬專用網(wǎng)(VPN)
VPN技術(shù)是當(dāng)前在IP網(wǎng)絡(luò)上提供安全通訊的的方法之一,在同一個(gè)VPN網(wǎng)內(nèi)可以解決防火墻穿越問(wèn)題;是通過(guò)一個(gè)公用網(wǎng)絡(luò)(通常是因特網(wǎng))建立一個(gè)臨時(shí)的、安全的連接,是一條穿過(guò)混亂的公用網(wǎng)絡(luò)的安全、穩(wěn)定的隧道。由VPN的特性可以知道,VPN可以提供以上幾種防火墻穿越方式所不能提供的安全性、可靠性??梢园裋PN看做是對(duì)企業(yè)的內(nèi)部網(wǎng)的擴(kuò)展。嚴(yán)格的說(shuō)VPN并不是為了穿越的防火墻和NAT而提出,但是其特性為防火墻穿越提供了現(xiàn)成的機(jī)制。VPN雖然解決了 VoIP的安全問(wèn)題,但是同時(shí)因?yàn)樗膱?bào)文需經(jīng)過(guò)過(guò)SSL等加密技術(shù)加密后在網(wǎng)絡(luò)上傳輸,無(wú)形中加重了報(bào)文處理的時(shí)間,對(duì)語(yǔ)音的實(shí)時(shí)性有著很大的影響,如果用戶超過(guò)一定數(shù)目,通話質(zhì)量將大大下降。同時(shí),如果需要多個(gè)局域網(wǎng)互通,VPNServer必須知道所有客戶子網(wǎng)的網(wǎng)絡(luò)地址和掩碼。這使得VPN的配置需求比較復(fù)雜,并且VPN只允許同一個(gè)VPN中的用戶進(jìn)行通信,無(wú)法與位于公眾網(wǎng)的用戶進(jìn)行通信,所以VPN更加適合應(yīng)用于企業(yè)分布式網(wǎng)絡(luò)的連接與管理。5,隧道穿透方案一般企業(yè)網(wǎng)都不想升級(jí)或者改動(dòng)他們的防火墻和NAT設(shè)備的配置,也不想讓內(nèi)外的交互通訊繞過(guò)這些設(shè)備,采用允許IP語(yǔ)音和視頻穿越防火墻和NAT的隧道穿透方案也許是最合適的,隧道穿透解決方案由兩個(gè)組件構(gòu)成,Server軟件和Client軟件。Client放在防火墻內(nèi)的私有網(wǎng),它同時(shí)具有網(wǎng)守功能和代理功能,私有網(wǎng)內(nèi)的終端注冊(cè)到Client上,它和防火墻外的Server創(chuàng)建一個(gè)信令和控制通道,可以把所有的注冊(cè)和呼叫控制信令轉(zhuǎn)發(fā)到Server,也把音視頻數(shù)據(jù)轉(zhuǎn)發(fā)到Server,在轉(zhuǎn)發(fā)時(shí)它把內(nèi)部終端發(fā)送的和外部發(fā)往終端的數(shù)據(jù)包的地址和端口號(hào)替換為自己的。Server放在防火墻外的公眾空間內(nèi)。這個(gè)方法最大的缺點(diǎn)是所有經(jīng)過(guò)防火墻的通訊都必須經(jīng)由Server來(lái)進(jìn)行中轉(zhuǎn),這會(huì)引起潛在的瓶頸,這個(gè)經(jīng)由Client和Server的過(guò)程會(huì)增加少于5ms的延遲。但是這又是必須的,因?yàn)镾erver是防火墻唯一信任的設(shè)備。在一般包含有NAT實(shí)際網(wǎng)絡(luò)場(chǎng)景中,防火墻總是伴隨出現(xiàn),在該情況下,前述的所有現(xiàn)有技術(shù)都無(wú)法在兼顧效率的同時(shí)有效對(duì)NAT和防火墻兩者同時(shí)進(jìn)行穿越,在考慮穿越效率的前提下,各現(xiàn)有技術(shù)針對(duì)的網(wǎng)絡(luò)環(huán)境都比較單一,不能解決VoIP中最常見網(wǎng)絡(luò)環(huán)境中NAT與防火墻穿越問(wèn)題。
發(fā)明內(nèi)容
本發(fā)明的目的在于解決上述現(xiàn)有技術(shù)中存在的難題,提供一種VoIP中基于語(yǔ)音可達(dá)性的融合穿越方法,解決語(yǔ)音通信過(guò)程中需要穿越的兩種常見網(wǎng)絡(luò)環(huán)境,即通信過(guò)程中存在的防火墻和NAT。本發(fā)明是通過(guò)以下技術(shù)方案實(shí)現(xiàn)的一種VoIP中基于語(yǔ)音可達(dá)性的融合穿越方法,所述方法首先對(duì)系統(tǒng)架構(gòu)中的防火墻進(jìn)行探測(cè),如果存在防火墻,則進(jìn)行防火墻穿越;如果不存在防火墻,則進(jìn)行NAT類型檢測(cè),檢測(cè)結(jié)果為對(duì)稱型NAT環(huán)境或非對(duì)稱型NAT環(huán)境;對(duì)于對(duì)稱型NAT環(huán)境,所述方法只針對(duì)主機(jī)候選地址和中繼候選地址的連通性進(jìn)行檢查;對(duì)于非對(duì)稱型NAT環(huán)境,所述方法只針對(duì)主機(jī)候選地址和服務(wù)器返回候選地址的連通性進(jìn)行檢查。本發(fā)明方法包括以下步驟,這些步驟都是由軟終端上的穿越模塊完成的(1),開始;·(2),進(jìn)行防火墻探測(cè),探測(cè)的結(jié)果如果是存在防火墻,則轉(zhuǎn)入步驟(3),如果不存在防火墻,則轉(zhuǎn)入步驟(4);(3),進(jìn)行防火墻穿越,然后轉(zhuǎn)入步驟(7);(4), NAT類型探測(cè),同時(shí)完成地址收集的過(guò)程,此時(shí)僅收集主機(jī)候選地址和服務(wù)器返回候選地址;如果探測(cè)結(jié)果是不存在NAT環(huán)境,則進(jìn)行媒體協(xié)商,然后轉(zhuǎn)入步驟(7);如果探測(cè)結(jié)果是存在NAT環(huán)境,則判斷是否為對(duì)稱型NAT環(huán)境,如果是對(duì)稱型NAT環(huán)境,則進(jìn)行TURN server地址分配,然后進(jìn)行地址配對(duì)和處理,再根據(jù)收集到的地址進(jìn)行連通性檢查,再轉(zhuǎn)入步驟(5);如果為非對(duì)稱型NAT環(huán)境,則根據(jù)收集到的地址進(jìn)行連通性檢查,然后轉(zhuǎn)入步驟⑶;(5)進(jìn)行媒體協(xié)商,然后轉(zhuǎn)入步驟(7);(6)進(jìn)行媒體協(xié)商,然后轉(zhuǎn)入步驟(7);(7)結(jié)束。所述第(2)步中的防火墻探測(cè)具體如下(21) UDP 端口檢測(cè)客戶端給服務(wù)器的UDP端口發(fā)送消息,然后根據(jù)在規(guī)定時(shí)間內(nèi)客戶端是否收到服務(wù)器的返回消息來(lái)判斷是否允許UDP數(shù)據(jù)包通過(guò),如果允許,則轉(zhuǎn)入步驟(22),如果不允許,則轉(zhuǎn)入步驟(23);(22) DTLS 端口檢測(cè)客戶端向服務(wù)器的DTLS端口發(fā)檢測(cè)(check)消息,如果收到檢測(cè)通過(guò)(check ok)的回復(fù)消息,則說(shuō)明該端口開放,判定為不存在防火墻,然后轉(zhuǎn)入步驟(25);如果沒(méi)有收到回復(fù)消息,則轉(zhuǎn)入步驟(23);(23) TLS 端口檢測(cè)客戶端通過(guò)TLS端口和服務(wù)器建立連接,并且發(fā)送一個(gè)檢測(cè)(check)消息到服務(wù)器,服務(wù)器的回復(fù)消息應(yīng)該是檢測(cè)通過(guò)(check ok);客戶端保持這個(gè)連接,從接收到檢測(cè)通過(guò)(check ok)的回復(fù)消息開始計(jì)時(shí),若干分鐘后發(fā)送重新檢測(cè)消息(check again)到服務(wù)器,服務(wù)器的回復(fù)消息應(yīng)該是重新檢測(cè)通過(guò)(check again ok);
如果在這兩步檢測(cè)中服務(wù)器返回正確的回復(fù)消息,則表示允許TLS通過(guò),判定為不存在防火墻,轉(zhuǎn)入步驟(25),否則表示不允許TLS通過(guò),轉(zhuǎn)入步驟(24);(24) HTTP 端口檢測(cè)客戶端建立到服務(wù)器的TCP端口的連接,服務(wù)器向客戶端發(fā)送HTTP數(shù)據(jù)包,客戶端接收到服務(wù)器數(shù)據(jù)包后開始計(jì)時(shí),若干分鐘后發(fā)送重新檢測(cè)消息(check again)到服務(wù)器,如果服務(wù)器返回的消息是重新檢測(cè)通過(guò)(check again ok),則表示客戶端支持HTTP通信,判定為不存在防火墻,轉(zhuǎn)入步驟(25),否則判定為存在防火墻,轉(zhuǎn)入步驟(25);(25)防火墻探測(cè)結(jié)束。
所述步驟(3)中的進(jìn)行防火墻穿越包括以下步驟(31),從本地(即終端所在主機(jī))的網(wǎng)卡上抓取要發(fā)送的數(shù)據(jù)包;(32),分析數(shù)據(jù)包,確定應(yīng)用層協(xié)議類型;(33),與S0CKS5服務(wù)器協(xié)商,建立邏輯通道;(34),根據(jù)不同協(xié)議的傳輸層承載(TCP或UDP)采用對(duì)應(yīng)的S0CKS5代理方式代理數(shù)據(jù)包(一共分為TCP和UDP方式兩種,S0CKS5為標(biāo)準(zhǔn)協(xié)議,可參見RFC1928);(35),將從對(duì)端收到的代理數(shù)據(jù)包的返回消息包放回到本地網(wǎng)卡上,完成了防火
墻穿越。所述步驟(4)中的NAT類型探測(cè)具體包括以下步驟Al等待,當(dāng)從本地網(wǎng)卡上收集到主機(jī)候選地址后開始;A2第一次進(jìn)行測(cè)試一,然后判斷是否獲得返回消息,如果否,則轉(zhuǎn)入第A3步,如果是,則轉(zhuǎn)入第A4步;A3判定為阻塞的UDP,然后轉(zhuǎn)入第All步;A4收到返回消息后,判斷映射IP和端口是否與主機(jī)相同,如果不同,則轉(zhuǎn)入第A5步,如果相同,則轉(zhuǎn)入第AlO步;所述返回消息中攜帶服務(wù)器返回候選地址;A5進(jìn)行測(cè)試二,然后判斷是否獲得返回消息,如果否,則轉(zhuǎn)入第A6步,如果是,則轉(zhuǎn)入第A9步;A6第二次進(jìn)行測(cè)試一,但該次測(cè)試使用與第一次測(cè)試一不同IP地址的服務(wù)器,然后判斷映射IP與端口是否與第一次測(cè)試一返回的IP和端口相同,如果相同,則轉(zhuǎn)入第A7步,如果不同,則轉(zhuǎn)入第AS步;A7判定NAT類型為受限型NAT環(huán)境,然后轉(zhuǎn)入第All步;所述受限型NAT環(huán)境包括端口受限型NAT環(huán)境和地址受限型NAT環(huán)境;A8判定NAT類型為對(duì)稱型NAT環(huán)境,然后轉(zhuǎn)入第All步;A9判定NAT類型為全錐形NAT環(huán)境,然后轉(zhuǎn)入第All步;AlO進(jìn)行測(cè)試二,然后判斷是否獲得返回消息,如果是,則判定為公網(wǎng)IP,然后轉(zhuǎn)入第All步,如果否,則判定為對(duì)稱防火墻,然后轉(zhuǎn)入第All步;Al I結(jié)束NAT類型檢測(cè)。所述測(cè)試一是指給服務(wù)器發(fā)送消息,從服務(wù)器的返回消息中獲得NAT環(huán)境給本機(jī)映射的IP和端口號(hào);所述測(cè)試二是指給服務(wù)器發(fā)送消息,要求服務(wù)器用不同的IP和端口號(hào)作為返回消息的源IP和端口號(hào)。
與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果是(I)本發(fā)明方法通過(guò)融合防火墻穿越和NAT穿越兩種穿越方案,能為處于防火墻和NAT獨(dú)存或共存的各類不同網(wǎng)絡(luò)環(huán)境下的用戶終端提供一種通用的穿越方案;(2)本發(fā)明方法能智 能地辨別出網(wǎng)絡(luò)環(huán)境的類型,并且能在針對(duì)特定不同網(wǎng)絡(luò)環(huán)境的前提下提供一種穿越效率最優(yōu)的適合的穿越方法。
圖I是本發(fā)明VoIP中具有私網(wǎng)穿越功能的系統(tǒng)架構(gòu)圖。圖2是本發(fā)明的終端穿越模塊的結(jié)構(gòu)圖。圖3是本發(fā)明的防火墻穿越的原理圖。圖4是本發(fā)明方法的步驟框圖。圖5是本發(fā)明方法中的防火墻穿越的步驟框圖。圖6是本發(fā)明方法中的NAT類型探測(cè)的步驟框圖。
具體實(shí)施例方式下面結(jié)合附圖對(duì)本發(fā)明作進(jìn)一步詳細(xì)描述本發(fā)明方法整合了基于交互式連接(Interactive ConnectivityEstablishment, ICE)建立的優(yōu)化方案和 S0CKS5 (socket security, S0CKS5)于一體,其中后者是一種基于傳輸層的網(wǎng)絡(luò)代理協(xié)議。本發(fā)明的系統(tǒng)架構(gòu)如圖I所示,包括SIP軟終端系統(tǒng)、NAT和防火墻、STUN/TURN服務(wù)器和S0CKS5服務(wù)器;所述SIP軟終端系統(tǒng)包括各種類型的SIP軟終端,例如PC、Pad或智能手機(jī),所述SIP軟終端系統(tǒng)均位于NAT或防火墻之后、SIP軟終端系統(tǒng)分別通過(guò)NAT或防火墻接入STUN和TURN服務(wù)器和S0CKS5服務(wù)器,STUN和TURN服務(wù)器(簡(jiǎn)稱為STUN/TURN服務(wù)器)和S0CKS5服務(wù)器再分別和核心網(wǎng)業(yè)務(wù)邏輯服務(wù)器(核心網(wǎng)業(yè)務(wù)邏輯服務(wù)器包括注冊(cè)服務(wù)器、群組服務(wù)器、運(yùn)維管理服務(wù)器、狀態(tài)呈現(xiàn)服務(wù)器等,具體服務(wù)器和核心網(wǎng)能提供的業(yè)務(wù)相關(guān)聯(lián),如圖I中的注冊(cè)、業(yè)務(wù)、管理等服務(wù)器所示。)連接。具體如下SIP軟終端系統(tǒng)(包括圖I中的PC、Pad等)基于會(huì)話初始協(xié)議SIP進(jìn)行通信,每個(gè)軟終端均包括SIP信令代理模塊(SIP UA模塊)、媒體處理模塊和音視頻編解碼模塊(這些都是現(xiàn)有的SIP軟終端系統(tǒng)共有的。)。SIP UA模塊,作為整個(gè)SIP軟終端系統(tǒng)中SIP信令的代理模塊,所有SIP信令的交互過(guò)程都由SIPUA模塊完成;媒體處理模塊,用以捕獲音、視頻設(shè)備的音視頻流,然后調(diào)用音視頻編解碼模塊進(jìn)行編碼,最終打包成實(shí)時(shí)傳輸協(xié)議RTP包發(fā)送給對(duì)端通信方;音視頻編解碼模塊,用以對(duì)所述音、視頻流的編解碼。除此之外,SIP軟終端系統(tǒng)還要包括穿越模塊,該模塊是本發(fā)明創(chuàng)新的,作為整個(gè)SIP軟終端系統(tǒng)的一個(gè)非常重要的模塊,在通信過(guò)程中,與STUN/TURN服務(wù)器、S0CKS5服務(wù)器交互,將探測(cè)到的網(wǎng)絡(luò)信息反饋給SIP UA模塊,從而保證通信的可達(dá)性,共同完成SIP軟終端會(huì)話的交互過(guò)程。如圖2所示,圖2中的連線表示相連接。所述穿越模塊具體包括3個(gè)大的子模塊私網(wǎng)和防火墻探測(cè)模塊、私網(wǎng)穿越功能模塊和防火墻穿越功能模塊,私網(wǎng)穿越功能模塊和防火墻穿越功能模塊均與私網(wǎng)和防火墻探測(cè)模塊連接;
其中私網(wǎng)穿越功能模塊包括ICE邏輯部分和與之相連的TURN客戶端模塊、STUN客戶端模塊和STUN服務(wù)器模塊(子模塊的功能合作完成私網(wǎng)穿越的任務(wù),Turn模塊完成和Turn相關(guān)的部分,stun模塊完成和stun相關(guān)的部分);所述防火墻穿越功能模塊包括防火墻穿越客戶端模塊,其包括S0CKS5協(xié)議模塊和發(fā)送TCP/UDP消息的模塊,也就是說(shuō)防火墻穿越功能模塊采用基于傳輸層的網(wǎng)絡(luò)代理協(xié)議S0CKS5,傳輸層的通訊協(xié)議采用TCP/UDP。所述穿越模塊通過(guò)私網(wǎng)和防火墻探測(cè)模塊識(shí)別當(dāng)前網(wǎng)絡(luò)的具體環(huán)境,從而決策是采用優(yōu)化后的ICE方案,還是采用S0CKS5全代理的方式進(jìn)行防火墻穿越,如果是采用前者,則啟動(dòng)私網(wǎng)穿越功能模塊,如果是采用后者,則啟動(dòng)防火墻穿越功能模塊。針對(duì)同時(shí)存在NAT與防火墻的網(wǎng)絡(luò)環(huán)境,S0CKS5方式可一并代理完成穿越。
本發(fā)明方法可根據(jù)當(dāng)前網(wǎng)絡(luò)環(huán)境中的防火墻與NAT環(huán)境的存在情況,決定是采用優(yōu)化后的ICE方案穿越NAT還是采用S0CKS5代理完成防火墻的穿越。首先,UE (SIP軟終端)進(jìn)行防火墻探測(cè)步驟,完成當(dāng)前網(wǎng)絡(luò)環(huán)境防火墻存在與否的判斷,并通過(guò)若干次必要的消息來(lái)回,獲取到該存防火墻的過(guò)濾規(guī)則。若當(dāng)前網(wǎng)絡(luò)存在防火墻則采用S0CKS5進(jìn)行穿越,此時(shí),不管網(wǎng)絡(luò)當(dāng)前是否存在NAT,均使用S0CKS5服務(wù)器進(jìn)行所有消息的全代理;若網(wǎng)絡(luò)中沒(méi)有防火墻,則進(jìn)行當(dāng)前NAT類型的探測(cè),從而根據(jù)當(dāng)前網(wǎng)絡(luò)環(huán)境(不存在NAT或存在對(duì)稱性NAT或存在非對(duì)稱性NAT)來(lái)決定下一步中ICE步驟需要收集的地址類型與數(shù)量,從而加速整個(gè)ICE步驟的邏輯。當(dāng)收集完所需網(wǎng)絡(luò)地址后,UE發(fā)起連通性檢查,根據(jù)優(yōu)先級(jí)選擇最后可用的媒體流傳媒地址,從而進(jìn)行語(yǔ)言通話。傳統(tǒng)ICE 方案(Interactive Connectivity Establishment,交互式連通方案)不管當(dāng)前網(wǎng)絡(luò)環(huán)境存在的是對(duì)稱型NAT環(huán)境,還是非對(duì)稱型NAT環(huán)境,均采用相同的步驟,而實(shí)際上對(duì)稱型NAT環(huán)境僅能使用TURN方式穿越,非對(duì)稱NAT環(huán)境又不用使用TURN方式這種較高成本的穿越方式,分析后發(fā)現(xiàn),對(duì)于非對(duì)稱型NAT環(huán)境,TURN server分配給用戶進(jìn)行信令與媒體中轉(zhuǎn)的地址(即后面所說(shuō)的中繼候選地址)沒(méi)有必要收集,對(duì)于對(duì)稱型NAT環(huán)境,用戶映射到公網(wǎng)上的地址(即后面所說(shuō)的服務(wù)器返回候選地址)沒(méi)有必要收集,因此,在傳統(tǒng)的ICE步驟中的“本地候選地址收集處理”可根據(jù)具體的網(wǎng)絡(luò)環(huán)境只收集最小集,從而省略不必要的“連通性檢查”過(guò)程。在收集傳輸?shù)刂返倪^(guò)程中,會(huì)話發(fā)起者需要收集的對(duì)象包括主機(jī)候選地址(hostcandidate,該地址又被稱為本地傳輸?shù)刂?Local Transport Address))和服務(wù)器返回候選地址(server reflexive candidate,該地址又被稱為來(lái)源傳輸?shù)刂?DerivedTransport Address))。主機(jī)候選地址通常是由主機(jī)上I個(gè)物理(或虛擬)接口綁定I個(gè)端口而獲得。會(huì)話發(fā)起者還將訪問(wèn)提供UNSAF(Unilateral self-address fixing)的服務(wù)器,例如STUN、TURN、TEREDO(即面向IPv6的IPv4 NAT網(wǎng)絡(luò)地址轉(zhuǎn)換穿越)。對(duì)于每一個(gè)主機(jī)候選地址,會(huì)話者都可以從服務(wù)器上獲得I級(jí)服務(wù)器返回候選地址。本發(fā)明中的優(yōu)化后的ICE方案是在傳統(tǒng)ICE方案前,增加NAT類型探測(cè),即在ICE步驟中的本地候選地址收集處理步驟之前先進(jìn)行NAT類型探測(cè),從而根據(jù)不同私網(wǎng)環(huán)境,收集不同的地址,加快連通性檢測(cè)過(guò)程。具體來(lái)說(shuō),本發(fā)明方法的步驟如圖4所示。具體包括以下步驟(1),開始;
(2),進(jìn)行防火墻探測(cè),包括防火墻存在與否以及其過(guò)濾規(guī)則的探測(cè),探測(cè)的結(jié)果如果是存在防火墻,則不管存不存在私網(wǎng)(即NAT環(huán)境),轉(zhuǎn)入步驟(3),如果不存在防火墻,則轉(zhuǎn)入步驟⑷;(3),進(jìn)行防火墻穿越,然后轉(zhuǎn)入步驟(7);(4), NAT類型探測(cè),同時(shí)完成地址收集的過(guò)程(NAT類型探測(cè)的過(guò)程實(shí)際上也是個(gè)收集地址的過(guò)程,判斷NAT類型的依據(jù)即為將收集到的地址和本地候選地址進(jìn)行比較),此時(shí)僅收集主機(jī)候選地址和服務(wù)器返回候選地址,這兩個(gè)地址即構(gòu)成了前面所說(shuō)的最小集。這個(gè)最小集中不包括TURN server上分配的中繼候選地址(relayed Address),也就是說(shuō)除開中繼候選地址,傳統(tǒng)ICE中的本地候選地址(又稱為主機(jī)候選地址)收集處理步驟中的其它所有地址都收集;如果探測(cè)結(jié)果是不存在NAT環(huán)境,則進(jìn)行媒體協(xié)商,然后轉(zhuǎn)入步驟(7);因?yàn)椴淮嬖贜AT環(huán)境的情況其實(shí)不需要ICE過(guò)程進(jìn)行穿越,其不是本發(fā)明關(guān)注的重點(diǎn);不存在對(duì)應(yīng)于 NAT環(huán)境的情況圖6中的公網(wǎng)IP的情況;如果探測(cè)結(jié)果是存在NAT環(huán)境,則判斷是否為對(duì)稱型NAT環(huán)境,如果是對(duì)稱型NAT環(huán)境,則進(jìn)行TURN server地址分配,然后進(jìn)行地址配對(duì)和處理(具體如何進(jìn)行地址配對(duì)和處理請(qǐng)參考ICE協(xié)議中的相關(guān)描述),再根據(jù)收集到的地址進(jìn)行連通性檢查,然后轉(zhuǎn)入步驟
(5);如果為非對(duì)稱型NAT環(huán)境,則根據(jù)收集到的地址進(jìn)行連通性檢查,然后轉(zhuǎn)入步驟(6);圖6是對(duì)步驟(4)局部的細(xì)化,圖6中主要是側(cè)重于展示NAT類型判斷的方法和所用的方法(測(cè)試一和測(cè)試二),這些在圖4中簡(jiǎn)單帶過(guò)了,圖6描述的是判斷NAT類型的具體步驟,其目的是檢查是否有NAT和具體NAT類型;(5)進(jìn)行媒體協(xié)商,然后轉(zhuǎn)入步驟(7);(6)進(jìn)行媒體協(xié)商,然后轉(zhuǎn)入步驟(7);(7)結(jié)束。所述步驟⑷、(5)、(6)由私網(wǎng)穿越功能模塊完成。所述第⑵步中的防火墻探測(cè)具體如下若信令和媒體流還需穿越防火墻,則需要防火墻開放相應(yīng)的信令和媒體流端口。其中信令需要開放5060端口,媒體流需要開放1024-65535端口段(主要原因是終端分配的媒體端口不可控)。由于防火墻策略只能靜態(tài)開放端口,而不能根據(jù)SIP信令動(dòng)態(tài)開放媒 體流端口,因此存在一定的安全風(fēng)險(xiǎn)(因?yàn)槊襟w流需要開放1024-65535端口段,如果全部開放的話是有風(fēng)險(xiǎn)的)。檢測(cè)防火墻端口主要是為了檢測(cè)系統(tǒng)所需的端口(無(wú)論是UDP還是TCP端口)是不是開放了,如果被禁止了,則需要去檢測(cè)防火墻的可用端口,并使用該可用端口來(lái)進(jìn)行S0CKS5代理實(shí)現(xiàn)防火墻穿越,檢測(cè)端口的順序是依照端口常用程度來(lái)依次進(jìn)行的,如果上一個(gè)檢測(cè)顯示結(jié)果為端口未開放則進(jìn)行下一個(gè)檢測(cè)。防火墻的探測(cè)可以看出是對(duì)端口的試探,即測(cè)試所需的端口是不是開放,如果客戶端所需的端口被封住,則判斷為有防火墻。防火墻探測(cè)具體包括以下幾部分(21)檢測(cè) UDP 端口客戶端給服務(wù)器的UDP端口(即系統(tǒng)收發(fā)消息所需的udp)發(fā)送消息,然后根據(jù)在規(guī)定時(shí)間內(nèi)客戶端是否收到服務(wù)器的返回消息來(lái)判斷是否允許UDP數(shù)據(jù)包通過(guò),如果允許,則轉(zhuǎn)入步驟(22),如果不允許,則轉(zhuǎn)入步驟(23);
(22)檢測(cè)DTLS (數(shù)據(jù)報(bào)安全傳輸層協(xié)議)端口利用DTLS承載消息并沒(méi)有慣用端口,檢查的端口依照系統(tǒng)實(shí)際需求而定。檢測(cè)方式為客戶端會(huì)向服務(wù)器的特定端口(即DTLS使用的端口)發(fā)“check”消息,如果收到回復(fù)“check ok”,則說(shuō)明該端口開放,判定為不存在防火墻,然后轉(zhuǎn)入步驟(25);如果沒(méi)有收到回復(fù),則轉(zhuǎn)入步驟(23);(23)檢測(cè)TLS (安全傳輸層協(xié)議)端口客戶端(即SIP軟終端)會(huì)通過(guò)TLS 443這個(gè)端口和穿越服務(wù)器建立連接,并且客戶端發(fā)送一個(gè)“check”字符串到服務(wù)器,服務(wù)器端的回應(yīng)是“check ok”字符串;客戶端保持這個(gè)連接,從接收到“check ok”字符串開始計(jì)時(shí),若干分鐘后發(fā)送“check again”,客戶端回應(yīng)是字符串 “check again ok”。如果在這兩步檢測(cè)中服務(wù)器端返回正確信息,表示客戶端允許TLS通過(guò),判定為不存在防火墻,轉(zhuǎn)入步驟(25),如果在這兩步檢測(cè)中服務(wù)器端沒(méi)有返回正確信息,則表示不允許TLS通過(guò),轉(zhuǎn)入步驟(24);(24) HTTP 端口檢測(cè)客戶端建立到服務(wù)器TCP 80端口的連接,并且向服務(wù)器發(fā)送HTTP數(shù)據(jù)包,內(nèi)容為“check”字符串,客戶端接收到服務(wù)器數(shù)據(jù)包(S卩“check ok”字符串)后開始計(jì)時(shí),2分鐘后再次和服務(wù)器交互信息,這次客戶端發(fā)到服務(wù)器的HTTP的內(nèi)容是“check again”,如果服務(wù)器返回HTTP的內(nèi)容為“check again ok”,表示客戶端網(wǎng)絡(luò)環(huán)境支持HTTP通信,判定為不存在防火墻,轉(zhuǎn)入步驟(25),否則客戶端網(wǎng)絡(luò)環(huán)境不支持HTTP通信,判定為存在防火墻,轉(zhuǎn)入步驟(25);(25)防火墻探測(cè)結(jié)束。TLS端口開始就是普通TCP檢測(cè)了,UDP和DTLS都是基于UDP消息的檢查,而TLS和HTTP都是基于TCP的檢測(cè)。最后根據(jù)端口檢測(cè)結(jié)果來(lái)判斷是否有防火墻。如果UDP和TCP端口檢測(cè)顯示端口被封禁,則判定為有防火墻,然后進(jìn)入防火墻穿越步驟。所述步驟(3)中進(jìn)行防火墻穿越的原理如圖3所示,其中終端位于防火墻之后,通過(guò)連接到防火墻外具有公網(wǎng)地址的防火墻穿越服務(wù)器(FT-Server)上,通過(guò)FT-Server來(lái)進(jìn)行消息的轉(zhuǎn)發(fā)。防火墻穿越功能模塊是采用基于S0CKS5協(xié)議(RFC 1928)來(lái)進(jìn)行消息的全代理,網(wǎng)卡抓包和將數(shù)據(jù)包放回網(wǎng)卡采用JPCAP類庫(kù),防火墻穿越功能模塊的工作步驟(也就是上述步驟(3)的具體步驟)如圖5所示,具體包括以下步驟(31),從本地(即SIP軟終端所在主機(jī),主機(jī)指SIP軟終端安裝的物理機(jī)器)的網(wǎng)卡上抓取要發(fā)送的數(shù)據(jù)包;(32),分析步驟(31)中得到的數(shù)據(jù)包,確定應(yīng)用層協(xié)議類型;(33),與 FT-Server (FT-Server 為一個(gè) S0CKS5 server)協(xié)商,建立邏輯通道;(34),根據(jù)不同協(xié)議的傳輸層承載(TCP或UDP)采用對(duì)應(yīng)的S0CKS5代理方式代理數(shù)據(jù)包(一共分為TCP和UDP方式兩種,S0CKS5為標(biāo)準(zhǔn)協(xié)議,可參見RFC1928);(35),將從對(duì)端(即另一個(gè)SIP軟終端)收到的代理數(shù)據(jù)包的返回消息包放回到 本地網(wǎng)卡上,完成了防火墻穿越。所述第(4)步的NAT類型探測(cè)的具體步驟為標(biāo)準(zhǔn)的NAT類型探測(cè)方法,實(shí)際實(shí)現(xiàn)時(shí),該過(guò)程在VoIP上一般都是由VoIP客戶端(即SIP軟終端)調(diào)用的,具體如圖6所示,包括以下步驟Al等待,當(dāng)從本地網(wǎng)卡上收集到主機(jī)候選地址(Host Candidate address)后開始;A2第一次進(jìn)行測(cè)試一,然后判斷是否獲得返回消息,如果否,則轉(zhuǎn)入第A3步,如果是,則轉(zhuǎn)入第A4步;A3判定為阻塞的UDP,然后轉(zhuǎn)入第All步;由于在判定為阻塞的UDP之后不會(huì)用到ICE方法,因此其后續(xù)處理不在本發(fā)明的范圍內(nèi);A4收到返回消息后,判斷映射IP和端口是否與主機(jī)相同,如果不同,則轉(zhuǎn)入第A5步,如果相同,則轉(zhuǎn)入第AlO步;所述返回消息中攜帶服務(wù)器返回候選地址(Serverreflexive address)。A5進(jìn)行測(cè)試二,然后判斷是否獲得返回消息,如果否,則轉(zhuǎn)入第A6步,如果是,則轉(zhuǎn)入第A9步;A6第二次進(jìn)行測(cè)試一,但該次測(cè)試使用與第一次測(cè)試一不同IP地址的服務(wù)器,然后判斷映射IP與端口是否與第一次測(cè)試一返回的IP和端口相同,如果相同,則轉(zhuǎn)入第A7步,如果不同,則轉(zhuǎn)入第AS步;A7判定NAT類型為受限型NAT環(huán)境(Restricted Cone NAT)(包括地址受限型和端口受限型這2種,由于不需要進(jìn)一步的判斷結(jié)果,所以不再進(jìn)行進(jìn)一步測(cè)試),然后轉(zhuǎn)入第All步;圖6中的受限型NAT環(huán)境(Restricted Cone NAT)包括圖4中的端口受限型NAT 環(huán)境和地址受限型NAT環(huán)境,由于所需的結(jié)果是是否為對(duì)稱型NAT環(huán)境,而受限型NAT環(huán)境被包含在非對(duì)稱型NAT環(huán)境一類中進(jìn)行統(tǒng)一處理了,所以沒(méi)有必要繼續(xù)通過(guò)進(jìn)一步測(cè)試來(lái)判斷是端口受限型NAT環(huán)境還是地址受限型NAT環(huán)境;A8判定NAT類型為對(duì)稱型NAT環(huán)境(Symmetric NAT),然后轉(zhuǎn)入第All步;A9判定NAT類型為全錐形NAT環(huán)境(Full Cone NAT),然后轉(zhuǎn)入第All步;AlO進(jìn)行測(cè)試二,然后判斷是否獲得返回消息,如果是,則判定為公網(wǎng)IP,然后轉(zhuǎn)入第All步;如果否,則為對(duì)稱防火墻,然后轉(zhuǎn)入第All步;因?yàn)槿绻枪W(wǎng)IP或防火墻,那么不需要用到本發(fā)明所述的ICE方法,所以本發(fā)明中沒(méi)有詳述,只是做出簡(jiǎn)單介紹,不描述之后的處理過(guò)程;Al I結(jié)束NAT類型檢測(cè)。第(5)步和第(6)步所做的步驟其實(shí)一樣,但是針對(duì)不同的地址對(duì)進(jìn)行的;第⑷步到第(6)步是由VoIP客戶端(UE,即SIP軟終端)和服務(wù)器(Turn Server和Stun Server)共同完成的,判斷都是在UE側(cè)進(jìn)行的,然而需要服務(wù)器返回消息的幫助;所述第⑷步中的非對(duì)稱型NAT環(huán)境包括全錐形NAT環(huán)境、地址受限型NAT環(huán)境和端口受限型NAT環(huán)境;所述第(4)步中,對(duì)于對(duì)稱型NAT環(huán)境的地址連通性檢查只對(duì)主機(jī)候選地址(hostcandidate)和中繼候選地址(relayed candidate)的連通性進(jìn)行檢查,具體是將這兩個(gè)地址分別和對(duì)端地址進(jìn)行配對(duì),通過(guò)試探連通性來(lái)選出一對(duì)可用的媒體通信地址。進(jìn)行地址連通性檢測(cè)的具體步驟請(qǐng)參考ICE協(xié)議;所述第(4)步中,對(duì)于非對(duì)稱型NAT環(huán)境的地址連通性檢查只對(duì)主機(jī)候選地址與服務(wù)器返回候選地址的連通性進(jìn)行檢查;第⑷步中的媒體協(xié)商屬于與ICE無(wú)關(guān)的協(xié)商,而第(5)步和第(6)步中的媒體協(xié)商都是要使用ICE相關(guān)參數(shù)的媒體協(xié)商;所述媒體協(xié)商通過(guò)通信雙方信令消息的交互實(shí)現(xiàn),如sip信令系統(tǒng)中的invite消息體的和2000K消息體中的SDP進(jìn)行交互,媒體協(xié)商的結(jié)果是通信雙方選出一對(duì)雙方公認(rèn)的地址和一種雙方公認(rèn)的媒體形式來(lái)進(jìn)行媒體通信,簡(jiǎn)而言之就是對(duì)媒體方式達(dá)成一致。上述步驟中用到兩種測(cè)試具體如下I)測(cè)試一給服務(wù)器發(fā)送消息,從服務(wù)器的返回消息中獲得NAT環(huán)境給本機(jī)映射的IP和端口號(hào)(返回消息中攜帶有該IP和port,通過(guò)解析返回消息獲得);2)測(cè)試二 給服務(wù)器發(fā)送消息,要求服務(wù)器用不同的IP和端口號(hào)作為返回消息的源IP和端口號(hào)(該測(cè)試的目的是看有沒(méi)有返回消息,消息中返回的參數(shù)沒(méi)有進(jìn)一步分析的必要)。上述技術(shù)方案只是本發(fā)明的一種實(shí)施方式,對(duì)于本領(lǐng)域內(nèi)的技術(shù)人員而言,在本 發(fā)明公開了應(yīng)用方法和原理的基礎(chǔ)上,很容易做出各種類型的改進(jìn)或變形,而不僅限于本發(fā)明上述具體實(shí)施方式
所描述的方法,因此前面描述的方式只是優(yōu)選的,而并不具有限制性的意義。
權(quán)利要求
1.一種VoIP中基于語(yǔ)音可達(dá)性的融合穿越方法,其特征在于所述方法首先對(duì)系統(tǒng)架構(gòu)中的防火墻進(jìn)行探測(cè),如果存在防火墻,則進(jìn)行防火墻穿越;如果不存在防火墻,則進(jìn)行NAT類型檢測(cè),檢測(cè)結(jié)果為對(duì)稱型NAT環(huán)境或非對(duì)稱型NAT環(huán)境;對(duì)于對(duì)稱型NAT環(huán)境,所述方法只針對(duì)主機(jī)候選地址和中繼候選地址的連通性進(jìn)行檢查;對(duì)于非對(duì)稱型NAT環(huán)境,所述方法只針對(duì)主機(jī)候選地址和服務(wù)器返回候選地址的連通性進(jìn)行檢查。
2.根據(jù)權(quán)利要求I所述的VoIP中基于語(yǔ)音可達(dá)性的融合穿越方法,其特征在于所述方法包括以下步驟 (1),開始; (2),進(jìn)行防火墻探測(cè),探測(cè)的結(jié)果如果是存在防火墻,則轉(zhuǎn)入步驟(3),如果不存在防火墻,則轉(zhuǎn)入步驟(4); (3),進(jìn)行防火墻穿越,然后轉(zhuǎn)入步驟(7); (4),NAT類型探測(cè),同時(shí)完成地址收集的過(guò)程,此時(shí)僅收集主機(jī)候選地址和服務(wù)器返回候選地址;如果探測(cè)結(jié)果是不存在NAT環(huán)境,則進(jìn)行媒體協(xié)商,然后轉(zhuǎn)入步驟(7);如果探測(cè)結(jié)果是存在NAT環(huán)境,則判斷是否為對(duì)稱型NAT環(huán)境,如果是對(duì)稱型NAT環(huán)境,則進(jìn)行TURNserver地址分配,然后進(jìn)行地址配對(duì)和處理,再根據(jù)收集到的地址進(jìn)行連通性檢查,再轉(zhuǎn)入步驟(5);如果為非對(duì)稱型NAT環(huán)境,則根據(jù)收集到的地址進(jìn)行連通性檢查,然后轉(zhuǎn)入步驟(6); (5)進(jìn)行媒體協(xié)商,然后轉(zhuǎn)入步驟(7); (6)進(jìn)行媒體協(xié)商,然后轉(zhuǎn)入步驟(7); (7)結(jié)束。
3.根據(jù)權(quán)利要求2所述的VoIP中基于語(yǔ)音可達(dá)性的融合穿越方法,其特征在于所述第(2)步中的防火墻探測(cè)具體如下 (21)UDP端口檢測(cè) 客戶端給服務(wù)器的UDP端口發(fā)送消息,然后根據(jù)在規(guī)定時(shí)間內(nèi)客戶端是否收到服務(wù)器的返回消息來(lái)判斷是否允許UDP數(shù)據(jù)包通過(guò),如果允許,則轉(zhuǎn)入步驟(22),如果不允許,則轉(zhuǎn)入步驟(23);(22)DTLS 端口檢測(cè) 客戶端向服務(wù)器的DTLS端口發(fā)檢測(cè)消息,如果收到檢測(cè)通過(guò)的回復(fù)消息,則說(shuō)明該端口開放,判定為不存在防火墻,然后轉(zhuǎn)入步驟(25);如果沒(méi)有收到回復(fù)消息,則轉(zhuǎn)入步驟(23); (23)TLS端口檢測(cè) 客戶端通過(guò)TLS端口和服務(wù)器建立連接,并且發(fā)送一個(gè)檢測(cè)消息到服務(wù)器,服務(wù)器的回復(fù)消息應(yīng)該是檢測(cè)通過(guò); 客戶端保持這個(gè)連接,從接收到檢測(cè)通過(guò)的回復(fù)消息開始計(jì)時(shí),若干分鐘后發(fā)送重新檢測(cè)消息到服務(wù)器,服務(wù)器的回復(fù)消息應(yīng)該是重新檢測(cè)通過(guò); 如果在這兩步檢測(cè)中服務(wù)器返回正確的回復(fù)消息,則表示允許TLS通過(guò),判定為不存在防火墻,轉(zhuǎn)入步驟(25),否則表示不允許TLS通過(guò),轉(zhuǎn)入步驟(24);(24)HTTP 端口檢測(cè) 客戶端建立到服務(wù)器的TCP端口的連接,服務(wù)器向客戶端發(fā)送HTTP數(shù)據(jù)包,客戶端接收到服務(wù)器數(shù)據(jù)包后開始計(jì)時(shí),若干分鐘后發(fā)送重新檢測(cè)消息到服務(wù)器,如果服務(wù)器返回的消息是重新檢測(cè)通過(guò),則表示客戶端支持HTTP通信,判定為不存在防火墻,轉(zhuǎn)入步驟(25),否則判定為存在防火墻,轉(zhuǎn)入步驟(25); (25)防火墻探測(cè)結(jié)束。
4.根據(jù)權(quán)利要求3所述的VoIP中基于語(yǔ)音可達(dá)性的融合穿越方法,其特征在于所述步驟(3)中的進(jìn)行防火墻穿越包括以下步驟 (31),從本地網(wǎng)卡上抓取要發(fā)送的數(shù)據(jù)包; (32),分析數(shù)據(jù)包,確定應(yīng)用層協(xié)議類型; (33),與S0CKS5服務(wù)器協(xié)商,建立邏輯通道; (34),根據(jù)不同協(xié)議的傳輸層承載采用對(duì)應(yīng)的S0CKS5代理方式代理數(shù)據(jù)包; (35),將從對(duì)端收到的代理數(shù)據(jù)包的返回消息包放回到本地網(wǎng)卡上,完成了防火墻穿越。
5.根據(jù)權(quán)利要求2所述的VoIP中基于語(yǔ)音可達(dá)性的融合穿越方法,其特征在于所述步驟(4)中的NAT類型探測(cè)具體包括以下步驟 Al等待,當(dāng)從本地網(wǎng)卡上收集到主機(jī)候選地址后開始; A2第一次進(jìn)行測(cè)試一,然后判斷是否獲得返回消息,如果否,則轉(zhuǎn)入第A3步,如果是,則轉(zhuǎn)入第A4步; A3判定為阻塞的UDP,然后轉(zhuǎn)入第All步; A4收到返回消息后,判斷映射IP和端口是否與主機(jī)相同,如果不同,則轉(zhuǎn)入第A5步,如果相同,則轉(zhuǎn)入第AlO步;所述返回消息中攜帶服務(wù)器返回候選地址; A5進(jìn)行測(cè)試二,然后判斷是否獲得返回消息,如果否,則轉(zhuǎn)入第A6步,如果是,則轉(zhuǎn)入第A9步; A6第二次進(jìn)行測(cè)試一,但該次測(cè)試使用與第一次測(cè)試一不同IP地址的服務(wù)器,然后判斷映射IP與端口是否與第一次測(cè)試一返回的IP和端口相同,如果相同,則轉(zhuǎn)入第A7步,如果不同,則轉(zhuǎn)入第AS步; A7判定NAT類型為受限型NAT環(huán)境,然后轉(zhuǎn)入第All步;所述受限型NAT環(huán)境包括端口受限型NAT環(huán)境和地址受限型NAT環(huán)境; A8判定NAT類型為對(duì)稱型NAT環(huán)境,然后轉(zhuǎn)入第All步; A9判定NAT類型為全錐形NAT環(huán)境,然后轉(zhuǎn)入第All步; AlO進(jìn)行測(cè)試二,然后判斷是否獲得返回消息,如果是,則判定為公網(wǎng)IP,然后轉(zhuǎn)入第All步,如果否,則判定為對(duì)稱防火墻,然后轉(zhuǎn)入第All步; All結(jié)束NAT類型探測(cè)。
6.根據(jù)權(quán)利要求5所述的VoIP中基于語(yǔ)音可達(dá)性的融合穿越方法,其特征在于所述測(cè)試一是指給服務(wù)器發(fā)送消息,從服務(wù)器的返回消息中獲得NAT環(huán)境給本機(jī)映射的IP和端口號(hào); 所述測(cè)試二是指給服務(wù)器發(fā)送消息,要求服務(wù)器用不同的IP和端口號(hào)作為返回消息的源IP和端口號(hào)。
全文摘要
本發(fā)明提供了一種VoIP中基于語(yǔ)音可達(dá)性的融合穿越方法,屬于通信領(lǐng)域。所述方法首先對(duì)系統(tǒng)架構(gòu)中的防火墻進(jìn)行探測(cè),如果存在防火墻,則進(jìn)行防火墻穿越;如果不存在防火墻,則進(jìn)行NAT類型檢測(cè),檢測(cè)結(jié)果為對(duì)稱型NAT環(huán)境或非對(duì)稱型NAT環(huán)境;對(duì)于對(duì)稱型NAT環(huán)境,所述方法只針對(duì)主機(jī)候選地址和中繼候選地址的連通性進(jìn)行檢查;對(duì)于非對(duì)稱型NAT環(huán)境,所述方法只針對(duì)主機(jī)候選地址和服務(wù)器返回候選地址的連通性進(jìn)行檢查。本發(fā)明方法融合了防火墻穿越和NAT穿越兩種穿越方案,能為處于防火墻和NAT獨(dú)存或共存的各類不同網(wǎng)絡(luò)環(huán)境下的用戶終端提供一種通用的穿越方案。
文檔編號(hào)H04L29/08GK102685141SQ20121016088
公開日2012年9月19日 申請(qǐng)日期2012年5月22日 優(yōu)先權(quán)日2012年5月22日
發(fā)明者雙鍇, 徐鵬, 朱瀟, 王玉龍, 蘇森 申請(qǐng)人:北京郵電大學(xué)