吳剛
摘要:VoIP(Voice over Internet Protocol)以其強(qiáng)大的功能,低廉的價(jià)格以及高度的靈活性越來(lái)越受到世人的廣泛關(guān)注。在VoIP業(yè)務(wù)應(yīng)用中,出于安全性和其他原因,往往在網(wǎng)絡(luò)邊界放置了NAT和FW,但該技術(shù)采用的協(xié)議(主要為SIP協(xié)議)無(wú)法順利通過(guò)。研究VoIP如何更好地穿透NAT/FW是目前開(kāi)展該業(yè)務(wù)的關(guān)鍵。
關(guān)鍵詞:NAT/FW穿透 proxy方案
中圖分類(lèi)號(hào):TP393 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1007-9416(2014)08-0049-02
1 引言
因特網(wǎng)的快速發(fā)展使得IP地址資源越來(lái)越稀少,同時(shí)大量存在的局域網(wǎng)資源希望接入Internet。為了解決這些問(wèn)題,往往采用私有網(wǎng)絡(luò)通過(guò)邊界的NAT或FW接入公網(wǎng)。NAT技術(shù)主要應(yīng)用于UDP/TCP層,而VOIP使用的SIP協(xié)議屬于應(yīng)用層協(xié)議,數(shù)據(jù)包中含有許多有關(guān)路由轉(zhuǎn)換以及建立呼叫連接所需要的地址信息。當(dāng)有SIP消息穿透NAT/FW時(shí),后者不會(huì)對(duì)SIP數(shù)據(jù)包中的私有地址進(jìn)行轉(zhuǎn)換,這就給數(shù)據(jù)包流轉(zhuǎn)造成了一些困難。
2 SIP協(xié)議
目前VOIP采用的協(xié)議包括H.323和SIP,其中SIP即會(huì)話啟動(dòng)協(xié)議,是一套用于創(chuàng)建、修改以及終止IP會(huì)話的信令協(xié)議,在該協(xié)議中定義了不同的實(shí)體,通過(guò)實(shí)體之間的請(qǐng)求和響應(yīng)來(lái)完成通話雙方之間的對(duì)話。
SIP消息分為請(qǐng)求消息和響應(yīng)消息兩種,消息中含有進(jìn)行通話應(yīng)答的基本信息。
2.1 請(qǐng)求消息
請(qǐng)求消息[1]包包括請(qǐng)求行、消息頭、消息體。
請(qǐng)求行由請(qǐng)求的方法+請(qǐng)求的SIP URI+SIP版本號(hào)組成,其中SIP URI是用來(lái)標(biāo)識(shí)在SIP網(wǎng)絡(luò)中的一個(gè)唯一實(shí)體。
請(qǐng)求行格式如下:INVITE sip:172.10.132.39@172.10.132.39:5060 SIP/2.0,此例中請(qǐng)求方法為INVITE,請(qǐng)求的SIP URI就是被叫方的SIP地址(被叫方的用戶(hù)名為172.10.132.39,IP為172.10.132.39,SIP監(jiān)聽(tīng)端口為5060)。
SIP協(xié)議的請(qǐng)求方法主要包括6種:
INVITE:向被叫方發(fā)送呼叫邀請(qǐng);
ACK:確認(rèn)呼叫;
BYE:終止呼叫;
CANCEL:終止還未OK的呼叫;
REGISTER:提供的注冊(cè)服務(wù);
OPTIONS:詢(xún)問(wèn)一個(gè)用戶(hù)代理能夠識(shí)別消息和編碼的能力。
2.2 SIP響應(yīng)消息
響應(yīng)消息由狀態(tài)行,消息頭,消息體組成。其中狀態(tài)行由SIP版本號(hào)+狀態(tài)碼+狀態(tài)碼說(shuō)明組成,如SIP/2.0 200 OK,經(jīng)常會(huì)用到的響應(yīng)消息如下:
100 Trying:消息已收到,但是最終用戶(hù)代理尚未進(jìn)行處理;
180 Ringing:最終用戶(hù)代理已經(jīng)收到消息,正在提示用戶(hù);
200 OK:最終用戶(hù)已經(jīng)接受消息;
487 Request Terminated:請(qǐng)求被BYE或者CANCEL所終止。
3 穿透NAT/FW的研究與發(fā)展
IETF關(guān)于SIP的NAT/FW穿透問(wèn)題給出了多種解決方案,其中主要包括ALG、MIDCOM、STUN、Proxy等解決方案,這里就不一一分析,這些方案適用于不同的應(yīng)用環(huán)境,都有各自的缺點(diǎn)。
3.1 四種穿透技術(shù)比較分析[2]
ALG方案和MidCom方案需要對(duì)現(xiàn)有布置在網(wǎng)絡(luò)邊界的設(shè)備進(jìn)行替換,同時(shí)還需要在現(xiàn)有網(wǎng)絡(luò)中增加路由,這顯然不能滿足VoIP業(yè)務(wù)中快速升級(jí)和節(jié)省計(jì)費(fèi)的要求。
相比較而言STUN方案是一個(gè)很好的解決方案,但STUN并不支持對(duì)稱(chēng)NAT的穿透,這也局限了這種方案的實(shí)際應(yīng)用,因?yàn)閷?duì)稱(chēng)NAT安全系數(shù)相對(duì)較高,當(dāng)前許多學(xué)校或者企業(yè)使用局域網(wǎng)絡(luò)的NAT類(lèi)型都是對(duì)稱(chēng)型NAT(如表1-1所示)。
3.2 proxy方案的研究
Proxy方案是通過(guò)對(duì)網(wǎng)絡(luò)之間呼叫通信所使用的信令和媒體同時(shí)做出響應(yīng)來(lái)實(shí)現(xiàn)NAT/FW的穿透,這種方案不需要對(duì)現(xiàn)有的網(wǎng)絡(luò)設(shè)備進(jìn)行任何的改造,只需要對(duì)網(wǎng)絡(luò)邊界服務(wù)器進(jìn)行設(shè)置和處理,具有很強(qiáng)的靈活性且升級(jí)簡(jiǎn)單,能夠滿足網(wǎng)絡(luò)中各種用戶(hù)的接入,因此成為研究方向的重點(diǎn)。
3.2.1 網(wǎng)絡(luò)內(nèi)部流向外部的SIP消息
對(duì)于從網(wǎng)絡(luò)內(nèi)部流向外部的SIP消息,必須通過(guò)方案中的網(wǎng)關(guān)服務(wù)器進(jìn)行處理后才能轉(zhuǎn)發(fā),網(wǎng)關(guān)服務(wù)器實(shí)際是一個(gè)代理服務(wù)器,它的作用是為通往網(wǎng)絡(luò)外部的呼叫請(qǐng)求提供代理,而且由于網(wǎng)關(guān)服務(wù)器負(fù)責(zé)網(wǎng)絡(luò)內(nèi)部SIP終端的代理工作,這就要求這些終端只有先在網(wǎng)關(guān)服務(wù)器上注冊(cè)后才能進(jìn)行下一步工作。
例如網(wǎng)絡(luò)內(nèi)部向外部發(fā)送一個(gè)INVITE請(qǐng)求,私有IP地址在公網(wǎng)上是不能被尋址的,網(wǎng)關(guān)服務(wù)器對(duì)這些頭域(主要是消息中的VIA、FROM、CALL-ID和CONTACT頭域)進(jìn)行處理。其中包含的私有網(wǎng)絡(luò)IP地址信息,必須先把它替換成網(wǎng)關(guān)服務(wù)器本身的公有IP地址;如果網(wǎng)關(guān)服務(wù)器使用的SIP 端口和內(nèi)部網(wǎng)絡(luò)中SIP終端使用的端口不同,那么網(wǎng)關(guān)服務(wù)器必須將這些端口進(jìn)行相應(yīng)的替換。
經(jīng)過(guò)網(wǎng)關(guān)服務(wù)器處理之后,本次呼叫基本與原網(wǎng)絡(luò)沒(méi)有關(guān)系了,網(wǎng)關(guān)服務(wù)器把這個(gè)經(jīng)過(guò)處理的消息發(fā)送到公網(wǎng)上,并且把與本次呼叫的相關(guān)信息都保存到與之相關(guān)聯(lián)的上下文環(huán)境當(dāng)中。
3.2.2 網(wǎng)絡(luò)外部流向內(nèi)部的SIP消息
對(duì)于從網(wǎng)絡(luò)外部流向內(nèi)部的SIP消息,發(fā)送方無(wú)法知道網(wǎng)絡(luò)內(nèi)部的情況,它們只能找到處于網(wǎng)絡(luò)邊界的網(wǎng)關(guān)服務(wù)器,與網(wǎng)關(guān)服務(wù)器進(jìn)行溝通處理后進(jìn)行通信,對(duì)網(wǎng)絡(luò)外部的發(fā)送方來(lái)說(shuō),網(wǎng)關(guān)服務(wù)器相當(dāng)于一個(gè)SIP終端。
例如網(wǎng)絡(luò)介紹到一個(gè)來(lái)自外部網(wǎng)絡(luò)的INVITE請(qǐng)求,網(wǎng)關(guān)服務(wù)器對(duì)SIP消息的處理和“內(nèi)網(wǎng)終端呼叫外網(wǎng)終端”時(shí)的處理基本相同,但也存在兩個(gè)的不同之處。一是在于如何確定內(nèi)網(wǎng)終端地址的問(wèn)題,內(nèi)網(wǎng)上的終端通過(guò)REGISTER方法向網(wǎng)關(guān)服務(wù)器進(jìn)行注冊(cè)后,才能和外網(wǎng)上的SIP終端互連,其目的是在終端地址和SIP URI之間進(jìn)行綁定,因此網(wǎng)關(guān)服務(wù)器必須建立和維護(hù)一個(gè)SIP URI及其綁定信息的數(shù)據(jù)庫(kù),當(dāng)外網(wǎng)的呼叫到來(lái)時(shí),網(wǎng)關(guān)服務(wù)器通過(guò)查詢(xún)這個(gè)數(shù)據(jù)庫(kù)得到內(nèi)部終端的地址信息。二是由于網(wǎng)關(guān)服務(wù)器在內(nèi)外網(wǎng)上功能的非對(duì)稱(chēng)性引起的,在內(nèi)網(wǎng)終端呼叫外網(wǎng)終端的情況下,網(wǎng)關(guān)服務(wù)器必須替換INVITE中的所有私有網(wǎng)絡(luò)地址,但在外網(wǎng)呼叫內(nèi)網(wǎng)終端時(shí),INVITE消息正文中的公網(wǎng)地址信息不必進(jìn)行替換。
4 結(jié)語(yǔ)
VOIP網(wǎng)絡(luò)中的解決NAT/FW穿透問(wèn)題的技術(shù)和設(shè)備多種多樣,SIP協(xié)議簡(jiǎn)單、擴(kuò)展性好與Internet應(yīng)用結(jié)合緊密,比其它協(xié)議具有更高的功能性和增長(zhǎng)潛力,作為VOIP應(yīng)用中使用最為廣泛的協(xié)議,研究SIP協(xié)議,以及在穿透過(guò)程中協(xié)議字段的改變對(duì)解決實(shí)際問(wèn)題具有重要的意義。
參考文獻(xiàn)
[1]陳明.《SIP應(yīng)用中的媒體NAT穿透的研究》[D].華南理工大學(xué)碩士學(xué)位論文,2011:69.
[2]韓小燕,曾桂根,李敏.《SIP中NAT穿透技術(shù)的研究及實(shí)現(xiàn)》[J].計(jì)算機(jī)技術(shù)與發(fā)展,2011(1): 193-196+201.
摘要:VoIP(Voice over Internet Protocol)以其強(qiáng)大的功能,低廉的價(jià)格以及高度的靈活性越來(lái)越受到世人的廣泛關(guān)注。在VoIP業(yè)務(wù)應(yīng)用中,出于安全性和其他原因,往往在網(wǎng)絡(luò)邊界放置了NAT和FW,但該技術(shù)采用的協(xié)議(主要為SIP協(xié)議)無(wú)法順利通過(guò)。研究VoIP如何更好地穿透NAT/FW是目前開(kāi)展該業(yè)務(wù)的關(guān)鍵。
關(guān)鍵詞:NAT/FW穿透 proxy方案
中圖分類(lèi)號(hào):TP393 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1007-9416(2014)08-0049-02
1 引言
因特網(wǎng)的快速發(fā)展使得IP地址資源越來(lái)越稀少,同時(shí)大量存在的局域網(wǎng)資源希望接入Internet。為了解決這些問(wèn)題,往往采用私有網(wǎng)絡(luò)通過(guò)邊界的NAT或FW接入公網(wǎng)。NAT技術(shù)主要應(yīng)用于UDP/TCP層,而VOIP使用的SIP協(xié)議屬于應(yīng)用層協(xié)議,數(shù)據(jù)包中含有許多有關(guān)路由轉(zhuǎn)換以及建立呼叫連接所需要的地址信息。當(dāng)有SIP消息穿透NAT/FW時(shí),后者不會(huì)對(duì)SIP數(shù)據(jù)包中的私有地址進(jìn)行轉(zhuǎn)換,這就給數(shù)據(jù)包流轉(zhuǎn)造成了一些困難。
2 SIP協(xié)議
目前VOIP采用的協(xié)議包括H.323和SIP,其中SIP即會(huì)話啟動(dòng)協(xié)議,是一套用于創(chuàng)建、修改以及終止IP會(huì)話的信令協(xié)議,在該協(xié)議中定義了不同的實(shí)體,通過(guò)實(shí)體之間的請(qǐng)求和響應(yīng)來(lái)完成通話雙方之間的對(duì)話。
SIP消息分為請(qǐng)求消息和響應(yīng)消息兩種,消息中含有進(jìn)行通話應(yīng)答的基本信息。
2.1 請(qǐng)求消息
請(qǐng)求消息[1]包包括請(qǐng)求行、消息頭、消息體。
請(qǐng)求行由請(qǐng)求的方法+請(qǐng)求的SIP URI+SIP版本號(hào)組成,其中SIP URI是用來(lái)標(biāo)識(shí)在SIP網(wǎng)絡(luò)中的一個(gè)唯一實(shí)體。
請(qǐng)求行格式如下:INVITE sip:172.10.132.39@172.10.132.39:5060 SIP/2.0,此例中請(qǐng)求方法為INVITE,請(qǐng)求的SIP URI就是被叫方的SIP地址(被叫方的用戶(hù)名為172.10.132.39,IP為172.10.132.39,SIP監(jiān)聽(tīng)端口為5060)。
SIP協(xié)議的請(qǐng)求方法主要包括6種:
INVITE:向被叫方發(fā)送呼叫邀請(qǐng);
ACK:確認(rèn)呼叫;
BYE:終止呼叫;
CANCEL:終止還未OK的呼叫;
REGISTER:提供的注冊(cè)服務(wù);
OPTIONS:詢(xún)問(wèn)一個(gè)用戶(hù)代理能夠識(shí)別消息和編碼的能力。
2.2 SIP響應(yīng)消息
響應(yīng)消息由狀態(tài)行,消息頭,消息體組成。其中狀態(tài)行由SIP版本號(hào)+狀態(tài)碼+狀態(tài)碼說(shuō)明組成,如SIP/2.0 200 OK,經(jīng)常會(huì)用到的響應(yīng)消息如下:
100 Trying:消息已收到,但是最終用戶(hù)代理尚未進(jìn)行處理;
180 Ringing:最終用戶(hù)代理已經(jīng)收到消息,正在提示用戶(hù);
200 OK:最終用戶(hù)已經(jīng)接受消息;
487 Request Terminated:請(qǐng)求被BYE或者CANCEL所終止。
3 穿透NAT/FW的研究與發(fā)展
IETF關(guān)于SIP的NAT/FW穿透問(wèn)題給出了多種解決方案,其中主要包括ALG、MIDCOM、STUN、Proxy等解決方案,這里就不一一分析,這些方案適用于不同的應(yīng)用環(huán)境,都有各自的缺點(diǎn)。
3.1 四種穿透技術(shù)比較分析[2]
ALG方案和MidCom方案需要對(duì)現(xiàn)有布置在網(wǎng)絡(luò)邊界的設(shè)備進(jìn)行替換,同時(shí)還需要在現(xiàn)有網(wǎng)絡(luò)中增加路由,這顯然不能滿足VoIP業(yè)務(wù)中快速升級(jí)和節(jié)省計(jì)費(fèi)的要求。
相比較而言STUN方案是一個(gè)很好的解決方案,但STUN并不支持對(duì)稱(chēng)NAT的穿透,這也局限了這種方案的實(shí)際應(yīng)用,因?yàn)閷?duì)稱(chēng)NAT安全系數(shù)相對(duì)較高,當(dāng)前許多學(xué)校或者企業(yè)使用局域網(wǎng)絡(luò)的NAT類(lèi)型都是對(duì)稱(chēng)型NAT(如表1-1所示)。
3.2 proxy方案的研究
Proxy方案是通過(guò)對(duì)網(wǎng)絡(luò)之間呼叫通信所使用的信令和媒體同時(shí)做出響應(yīng)來(lái)實(shí)現(xiàn)NAT/FW的穿透,這種方案不需要對(duì)現(xiàn)有的網(wǎng)絡(luò)設(shè)備進(jìn)行任何的改造,只需要對(duì)網(wǎng)絡(luò)邊界服務(wù)器進(jìn)行設(shè)置和處理,具有很強(qiáng)的靈活性且升級(jí)簡(jiǎn)單,能夠滿足網(wǎng)絡(luò)中各種用戶(hù)的接入,因此成為研究方向的重點(diǎn)。
3.2.1 網(wǎng)絡(luò)內(nèi)部流向外部的SIP消息
對(duì)于從網(wǎng)絡(luò)內(nèi)部流向外部的SIP消息,必須通過(guò)方案中的網(wǎng)關(guān)服務(wù)器進(jìn)行處理后才能轉(zhuǎn)發(fā),網(wǎng)關(guān)服務(wù)器實(shí)際是一個(gè)代理服務(wù)器,它的作用是為通往網(wǎng)絡(luò)外部的呼叫請(qǐng)求提供代理,而且由于網(wǎng)關(guān)服務(wù)器負(fù)責(zé)網(wǎng)絡(luò)內(nèi)部SIP終端的代理工作,這就要求這些終端只有先在網(wǎng)關(guān)服務(wù)器上注冊(cè)后才能進(jìn)行下一步工作。
例如網(wǎng)絡(luò)內(nèi)部向外部發(fā)送一個(gè)INVITE請(qǐng)求,私有IP地址在公網(wǎng)上是不能被尋址的,網(wǎng)關(guān)服務(wù)器對(duì)這些頭域(主要是消息中的VIA、FROM、CALL-ID和CONTACT頭域)進(jìn)行處理。其中包含的私有網(wǎng)絡(luò)IP地址信息,必須先把它替換成網(wǎng)關(guān)服務(wù)器本身的公有IP地址;如果網(wǎng)關(guān)服務(wù)器使用的SIP 端口和內(nèi)部網(wǎng)絡(luò)中SIP終端使用的端口不同,那么網(wǎng)關(guān)服務(wù)器必須將這些端口進(jìn)行相應(yīng)的替換。
經(jīng)過(guò)網(wǎng)關(guān)服務(wù)器處理之后,本次呼叫基本與原網(wǎng)絡(luò)沒(méi)有關(guān)系了,網(wǎng)關(guān)服務(wù)器把這個(gè)經(jīng)過(guò)處理的消息發(fā)送到公網(wǎng)上,并且把與本次呼叫的相關(guān)信息都保存到與之相關(guān)聯(lián)的上下文環(huán)境當(dāng)中。
3.2.2 網(wǎng)絡(luò)外部流向內(nèi)部的SIP消息
對(duì)于從網(wǎng)絡(luò)外部流向內(nèi)部的SIP消息,發(fā)送方無(wú)法知道網(wǎng)絡(luò)內(nèi)部的情況,它們只能找到處于網(wǎng)絡(luò)邊界的網(wǎng)關(guān)服務(wù)器,與網(wǎng)關(guān)服務(wù)器進(jìn)行溝通處理后進(jìn)行通信,對(duì)網(wǎng)絡(luò)外部的發(fā)送方來(lái)說(shuō),網(wǎng)關(guān)服務(wù)器相當(dāng)于一個(gè)SIP終端。
例如網(wǎng)絡(luò)介紹到一個(gè)來(lái)自外部網(wǎng)絡(luò)的INVITE請(qǐng)求,網(wǎng)關(guān)服務(wù)器對(duì)SIP消息的處理和“內(nèi)網(wǎng)終端呼叫外網(wǎng)終端”時(shí)的處理基本相同,但也存在兩個(gè)的不同之處。一是在于如何確定內(nèi)網(wǎng)終端地址的問(wèn)題,內(nèi)網(wǎng)上的終端通過(guò)REGISTER方法向網(wǎng)關(guān)服務(wù)器進(jìn)行注冊(cè)后,才能和外網(wǎng)上的SIP終端互連,其目的是在終端地址和SIP URI之間進(jìn)行綁定,因此網(wǎng)關(guān)服務(wù)器必須建立和維護(hù)一個(gè)SIP URI及其綁定信息的數(shù)據(jù)庫(kù),當(dāng)外網(wǎng)的呼叫到來(lái)時(shí),網(wǎng)關(guān)服務(wù)器通過(guò)查詢(xún)這個(gè)數(shù)據(jù)庫(kù)得到內(nèi)部終端的地址信息。二是由于網(wǎng)關(guān)服務(wù)器在內(nèi)外網(wǎng)上功能的非對(duì)稱(chēng)性引起的,在內(nèi)網(wǎng)終端呼叫外網(wǎng)終端的情況下,網(wǎng)關(guān)服務(wù)器必須替換INVITE中的所有私有網(wǎng)絡(luò)地址,但在外網(wǎng)呼叫內(nèi)網(wǎng)終端時(shí),INVITE消息正文中的公網(wǎng)地址信息不必進(jìn)行替換。
4 結(jié)語(yǔ)
VOIP網(wǎng)絡(luò)中的解決NAT/FW穿透問(wèn)題的技術(shù)和設(shè)備多種多樣,SIP協(xié)議簡(jiǎn)單、擴(kuò)展性好與Internet應(yīng)用結(jié)合緊密,比其它協(xié)議具有更高的功能性和增長(zhǎng)潛力,作為VOIP應(yīng)用中使用最為廣泛的協(xié)議,研究SIP協(xié)議,以及在穿透過(guò)程中協(xié)議字段的改變對(duì)解決實(shí)際問(wèn)題具有重要的意義。
參考文獻(xiàn)
[1]陳明.《SIP應(yīng)用中的媒體NAT穿透的研究》[D].華南理工大學(xué)碩士學(xué)位論文,2011:69.
[2]韓小燕,曾桂根,李敏.《SIP中NAT穿透技術(shù)的研究及實(shí)現(xiàn)》[J].計(jì)算機(jī)技術(shù)與發(fā)展,2011(1): 193-196+201.
摘要:VoIP(Voice over Internet Protocol)以其強(qiáng)大的功能,低廉的價(jià)格以及高度的靈活性越來(lái)越受到世人的廣泛關(guān)注。在VoIP業(yè)務(wù)應(yīng)用中,出于安全性和其他原因,往往在網(wǎng)絡(luò)邊界放置了NAT和FW,但該技術(shù)采用的協(xié)議(主要為SIP協(xié)議)無(wú)法順利通過(guò)。研究VoIP如何更好地穿透NAT/FW是目前開(kāi)展該業(yè)務(wù)的關(guān)鍵。
關(guān)鍵詞:NAT/FW穿透 proxy方案
中圖分類(lèi)號(hào):TP393 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1007-9416(2014)08-0049-02
1 引言
因特網(wǎng)的快速發(fā)展使得IP地址資源越來(lái)越稀少,同時(shí)大量存在的局域網(wǎng)資源希望接入Internet。為了解決這些問(wèn)題,往往采用私有網(wǎng)絡(luò)通過(guò)邊界的NAT或FW接入公網(wǎng)。NAT技術(shù)主要應(yīng)用于UDP/TCP層,而VOIP使用的SIP協(xié)議屬于應(yīng)用層協(xié)議,數(shù)據(jù)包中含有許多有關(guān)路由轉(zhuǎn)換以及建立呼叫連接所需要的地址信息。當(dāng)有SIP消息穿透NAT/FW時(shí),后者不會(huì)對(duì)SIP數(shù)據(jù)包中的私有地址進(jìn)行轉(zhuǎn)換,這就給數(shù)據(jù)包流轉(zhuǎn)造成了一些困難。
2 SIP協(xié)議
目前VOIP采用的協(xié)議包括H.323和SIP,其中SIP即會(huì)話啟動(dòng)協(xié)議,是一套用于創(chuàng)建、修改以及終止IP會(huì)話的信令協(xié)議,在該協(xié)議中定義了不同的實(shí)體,通過(guò)實(shí)體之間的請(qǐng)求和響應(yīng)來(lái)完成通話雙方之間的對(duì)話。
SIP消息分為請(qǐng)求消息和響應(yīng)消息兩種,消息中含有進(jìn)行通話應(yīng)答的基本信息。
2.1 請(qǐng)求消息
請(qǐng)求消息[1]包包括請(qǐng)求行、消息頭、消息體。
請(qǐng)求行由請(qǐng)求的方法+請(qǐng)求的SIP URI+SIP版本號(hào)組成,其中SIP URI是用來(lái)標(biāo)識(shí)在SIP網(wǎng)絡(luò)中的一個(gè)唯一實(shí)體。
請(qǐng)求行格式如下:INVITE sip:172.10.132.39@172.10.132.39:5060 SIP/2.0,此例中請(qǐng)求方法為INVITE,請(qǐng)求的SIP URI就是被叫方的SIP地址(被叫方的用戶(hù)名為172.10.132.39,IP為172.10.132.39,SIP監(jiān)聽(tīng)端口為5060)。
SIP協(xié)議的請(qǐng)求方法主要包括6種:
INVITE:向被叫方發(fā)送呼叫邀請(qǐng);
ACK:確認(rèn)呼叫;
BYE:終止呼叫;
CANCEL:終止還未OK的呼叫;
REGISTER:提供的注冊(cè)服務(wù);
OPTIONS:詢(xún)問(wèn)一個(gè)用戶(hù)代理能夠識(shí)別消息和編碼的能力。
2.2 SIP響應(yīng)消息
響應(yīng)消息由狀態(tài)行,消息頭,消息體組成。其中狀態(tài)行由SIP版本號(hào)+狀態(tài)碼+狀態(tài)碼說(shuō)明組成,如SIP/2.0 200 OK,經(jīng)常會(huì)用到的響應(yīng)消息如下:
100 Trying:消息已收到,但是最終用戶(hù)代理尚未進(jìn)行處理;
180 Ringing:最終用戶(hù)代理已經(jīng)收到消息,正在提示用戶(hù);
200 OK:最終用戶(hù)已經(jīng)接受消息;
487 Request Terminated:請(qǐng)求被BYE或者CANCEL所終止。
3 穿透NAT/FW的研究與發(fā)展
IETF關(guān)于SIP的NAT/FW穿透問(wèn)題給出了多種解決方案,其中主要包括ALG、MIDCOM、STUN、Proxy等解決方案,這里就不一一分析,這些方案適用于不同的應(yīng)用環(huán)境,都有各自的缺點(diǎn)。
3.1 四種穿透技術(shù)比較分析[2]
ALG方案和MidCom方案需要對(duì)現(xiàn)有布置在網(wǎng)絡(luò)邊界的設(shè)備進(jìn)行替換,同時(shí)還需要在現(xiàn)有網(wǎng)絡(luò)中增加路由,這顯然不能滿足VoIP業(yè)務(wù)中快速升級(jí)和節(jié)省計(jì)費(fèi)的要求。
相比較而言STUN方案是一個(gè)很好的解決方案,但STUN并不支持對(duì)稱(chēng)NAT的穿透,這也局限了這種方案的實(shí)際應(yīng)用,因?yàn)閷?duì)稱(chēng)NAT安全系數(shù)相對(duì)較高,當(dāng)前許多學(xué)?;蛘咂髽I(yè)使用局域網(wǎng)絡(luò)的NAT類(lèi)型都是對(duì)稱(chēng)型NAT(如表1-1所示)。
3.2 proxy方案的研究
Proxy方案是通過(guò)對(duì)網(wǎng)絡(luò)之間呼叫通信所使用的信令和媒體同時(shí)做出響應(yīng)來(lái)實(shí)現(xiàn)NAT/FW的穿透,這種方案不需要對(duì)現(xiàn)有的網(wǎng)絡(luò)設(shè)備進(jìn)行任何的改造,只需要對(duì)網(wǎng)絡(luò)邊界服務(wù)器進(jìn)行設(shè)置和處理,具有很強(qiáng)的靈活性且升級(jí)簡(jiǎn)單,能夠滿足網(wǎng)絡(luò)中各種用戶(hù)的接入,因此成為研究方向的重點(diǎn)。
3.2.1 網(wǎng)絡(luò)內(nèi)部流向外部的SIP消息
對(duì)于從網(wǎng)絡(luò)內(nèi)部流向外部的SIP消息,必須通過(guò)方案中的網(wǎng)關(guān)服務(wù)器進(jìn)行處理后才能轉(zhuǎn)發(fā),網(wǎng)關(guān)服務(wù)器實(shí)際是一個(gè)代理服務(wù)器,它的作用是為通往網(wǎng)絡(luò)外部的呼叫請(qǐng)求提供代理,而且由于網(wǎng)關(guān)服務(wù)器負(fù)責(zé)網(wǎng)絡(luò)內(nèi)部SIP終端的代理工作,這就要求這些終端只有先在網(wǎng)關(guān)服務(wù)器上注冊(cè)后才能進(jìn)行下一步工作。
例如網(wǎng)絡(luò)內(nèi)部向外部發(fā)送一個(gè)INVITE請(qǐng)求,私有IP地址在公網(wǎng)上是不能被尋址的,網(wǎng)關(guān)服務(wù)器對(duì)這些頭域(主要是消息中的VIA、FROM、CALL-ID和CONTACT頭域)進(jìn)行處理。其中包含的私有網(wǎng)絡(luò)IP地址信息,必須先把它替換成網(wǎng)關(guān)服務(wù)器本身的公有IP地址;如果網(wǎng)關(guān)服務(wù)器使用的SIP 端口和內(nèi)部網(wǎng)絡(luò)中SIP終端使用的端口不同,那么網(wǎng)關(guān)服務(wù)器必須將這些端口進(jìn)行相應(yīng)的替換。
經(jīng)過(guò)網(wǎng)關(guān)服務(wù)器處理之后,本次呼叫基本與原網(wǎng)絡(luò)沒(méi)有關(guān)系了,網(wǎng)關(guān)服務(wù)器把這個(gè)經(jīng)過(guò)處理的消息發(fā)送到公網(wǎng)上,并且把與本次呼叫的相關(guān)信息都保存到與之相關(guān)聯(lián)的上下文環(huán)境當(dāng)中。
3.2.2 網(wǎng)絡(luò)外部流向內(nèi)部的SIP消息
對(duì)于從網(wǎng)絡(luò)外部流向內(nèi)部的SIP消息,發(fā)送方無(wú)法知道網(wǎng)絡(luò)內(nèi)部的情況,它們只能找到處于網(wǎng)絡(luò)邊界的網(wǎng)關(guān)服務(wù)器,與網(wǎng)關(guān)服務(wù)器進(jìn)行溝通處理后進(jìn)行通信,對(duì)網(wǎng)絡(luò)外部的發(fā)送方來(lái)說(shuō),網(wǎng)關(guān)服務(wù)器相當(dāng)于一個(gè)SIP終端。
例如網(wǎng)絡(luò)介紹到一個(gè)來(lái)自外部網(wǎng)絡(luò)的INVITE請(qǐng)求,網(wǎng)關(guān)服務(wù)器對(duì)SIP消息的處理和“內(nèi)網(wǎng)終端呼叫外網(wǎng)終端”時(shí)的處理基本相同,但也存在兩個(gè)的不同之處。一是在于如何確定內(nèi)網(wǎng)終端地址的問(wèn)題,內(nèi)網(wǎng)上的終端通過(guò)REGISTER方法向網(wǎng)關(guān)服務(wù)器進(jìn)行注冊(cè)后,才能和外網(wǎng)上的SIP終端互連,其目的是在終端地址和SIP URI之間進(jìn)行綁定,因此網(wǎng)關(guān)服務(wù)器必須建立和維護(hù)一個(gè)SIP URI及其綁定信息的數(shù)據(jù)庫(kù),當(dāng)外網(wǎng)的呼叫到來(lái)時(shí),網(wǎng)關(guān)服務(wù)器通過(guò)查詢(xún)這個(gè)數(shù)據(jù)庫(kù)得到內(nèi)部終端的地址信息。二是由于網(wǎng)關(guān)服務(wù)器在內(nèi)外網(wǎng)上功能的非對(duì)稱(chēng)性引起的,在內(nèi)網(wǎng)終端呼叫外網(wǎng)終端的情況下,網(wǎng)關(guān)服務(wù)器必須替換INVITE中的所有私有網(wǎng)絡(luò)地址,但在外網(wǎng)呼叫內(nèi)網(wǎng)終端時(shí),INVITE消息正文中的公網(wǎng)地址信息不必進(jìn)行替換。
4 結(jié)語(yǔ)
VOIP網(wǎng)絡(luò)中的解決NAT/FW穿透問(wèn)題的技術(shù)和設(shè)備多種多樣,SIP協(xié)議簡(jiǎn)單、擴(kuò)展性好與Internet應(yīng)用結(jié)合緊密,比其它協(xié)議具有更高的功能性和增長(zhǎng)潛力,作為VOIP應(yīng)用中使用最為廣泛的協(xié)議,研究SIP協(xié)議,以及在穿透過(guò)程中協(xié)議字段的改變對(duì)解決實(shí)際問(wèn)題具有重要的意義。
參考文獻(xiàn)
[1]陳明.《SIP應(yīng)用中的媒體NAT穿透的研究》[D].華南理工大學(xué)碩士學(xué)位論文,2011:69.
[2]韓小燕,曾桂根,李敏.《SIP中NAT穿透技術(shù)的研究及實(shí)現(xiàn)》[J].計(jì)算機(jī)技術(shù)與發(fā)展,2011(1): 193-196+201.