SIP通過(guò)NAT的實(shí)例解析_第1頁(yè)
SIP通過(guò)NAT的實(shí)例解析_第2頁(yè)
SIP通過(guò)NAT的實(shí)例解析_第3頁(yè)
SIP通過(guò)NAT的實(shí)例解析_第4頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

下面對(duì)SIP協(xié)議產(chǎn)生NAT穿透問題,作一些解釋;及提出解決的辦法。1、 大致有4種類型的NAT。a)FullCone完全圓錐體restrictedcone受限制的圓錐體portrestricted端口受限制的圓錐體symmetric對(duì)稱的其中a,b,c也稱作非對(duì)稱的NAT。2、 SIP終端在NAT后面,其工作有可能出現(xiàn)問題。原因是SIP信令走的路徑,和媒體流走的路徑不一樣。3、 FullCone完全圓錐體NAT因特網(wǎng)上的任何PC,可以發(fā)送數(shù)據(jù)包到IP:port對(duì);而NAT將這個(gè)IP:port對(duì)(公網(wǎng)上的)映射到內(nèi)網(wǎng)的IP:port對(duì)(私有網(wǎng)絡(luò)的)。4、 restrictedcone受限制的圓錐體NATNAT外面的PC,只有那些內(nèi)網(wǎng)中已有PC與之聯(lián)系過(guò)的PC,才能通過(guò)這個(gè)映射進(jìn)來(lái)。例如,我通過(guò)內(nèi)網(wǎng)的一臺(tái)機(jī)器,IP地址是:123,與PC(a)聯(lián)系,則PC(a)也可以通過(guò)這個(gè)NAT的映射,聯(lián)系到我。而PC(b)則不行。:123---NAT--->8:10000 pc(a)如果pc(b)也發(fā)送數(shù)據(jù)到8:10000,則不會(huì)有數(shù)據(jù)送到:123。補(bǔ)充說(shuō)明:如果我也聯(lián)系過(guò)pc(b),則pc(b)也可以進(jìn)來(lái)了。:123---NAT--->8:10000 pc(b)如果pc(b)也發(fā)送數(shù)據(jù)到8:10000,則數(shù)據(jù)送到:123。5、 portrestricted端口受限制的圓錐體NAT除了4的條件外,即不但要檢測(cè)pc(a)的源IP地址,還要檢測(cè)其端口是否與前面也一樣。:123--->NAT >8:10000 >pc(a)[213.123.324.34:8000]這個(gè)NAT只會(huì)接收從IP地址213.123.324.34且端口為8000來(lái)的數(shù)據(jù),讓進(jìn)入到:123。6、 對(duì)稱的NAT這是關(guān)系描述最簡(jiǎn)單的一個(gè):1000 NAT >4:1234pc(a):1000 NAT >4:2222pc(b)這種NAT的IP:port對(duì),對(duì)每個(gè)外部的程序,都是不同的。因而每一個(gè)外部的程序,都有自己的映射(NAT分配的IP:port對(duì))。而前面的三種,多個(gè)外部程序,可能共用一個(gè)NAT的IP:port對(duì)。7、 RTP的問題在RTP的消息正文內(nèi),有UA能夠成功通信所需要的一些信息。這種消息正文,就叫做SDP消息。問題在于,SIP終端(UA)可能對(duì)NAT—無(wú)所知。因而在SDP中包含的IP地址,通常使用內(nèi)部的IP地址,也就是SIP終端知道的IP。這樣,當(dāng)通信的對(duì)方想與SIP終端通信時(shí),就查看SDP消息中的IP地址,但是什么也沒有得到,因?yàn)檫@里使用的是內(nèi)部IP地址。下面舉個(gè)例子說(shuō)明:INVITEsip:040600@:5060SIP/2.0.Record-Route:<sip:5;ftag=3a7ceb24a6ac50c4;lr=on>.Via:SIP/2.0/UDP5;branch=z9hG4bK758e.976609c7.0.Via:SIP/2.0/UDP;rport=1024;received=09;branch=z9hG4bK34efcab2403aa20d.From:"Iqbal"<sip:040618@>;tag=3a7ceb24a6ac50c4.To:<sip:040600@>.Contact:<sip:040618@09:1024>.Supported:replaces.Call-ID:7f2c327896a5b0e1@.CSeq:8717INVITE.User-Agent:GrandstreamHT4878.Max-Forwards:16.Allow:INVITE,ACK,CANCEL,BYE,NOTIFY,REFER,OPTIONS,INFO,SUBSCRIBE.Content-Type:application/sdp.Content-Length:343.v=0.o=04061880001INIP4.s=SIPCall.c=INIP4.t=00.m=audio38660RTP/AVP0841821599.a=sendrecv.a=rtpmap:0PCMU/8000/3.a=rtpmap:8PCMA/8000/3.SIP消息的標(biāo)題頭,類似于郵件的標(biāo)題頭。從后往前看,從From行開始,看到第一個(gè)Via行,這是SIP終端自己認(rèn)為的IP地址,例如。但是SIP代理服務(wù)器是聰明的,它知道這個(gè)消息是從哪里發(fā)過(guò)來(lái)的,它添加了rport和接收到的標(biāo)志:Via:SIP/2.0/UDP;rport=1024;received=09;branch=z9hG4bK34efcab2403aa20d.也就是說(shuō),SIP代理服務(wù)器,知道發(fā)消息的SIP終端的公網(wǎng)地址是09:1024。這樣,SIP代理服務(wù)器是可以與SIP終端通信的,因?yàn)樗繱IP終端的公網(wǎng)地址。但是,可憐的老式的RTP被阻塞了,因?yàn)樗臉?biāo)題頭如下:v=0.o=04061880001INIP4.s=SIPCall.c=INIP4.t=00.m=audio38660RTP/AVP0841821599.a=sendrecv.a=rtpmap:0PCMU/8000/3.a=rtpmap:8PCMA/8000/3.SIP終端期望從端口portm=38660且IP地址IPc=來(lái)接收RTP數(shù)據(jù),而這個(gè):38660,就是通信的對(duì)方試圖發(fā)RTP數(shù)據(jù)的目的地址。這就是SIP電話振鈴總是能夠聽到,而接起來(lái)卻沒有聲音的原因。8解決辦法告訴SIP終端,不要如此傻地工作,而要想辦法知道NAT分配給自己的端口映射。并將公網(wǎng)的IP地址:端口放到SDP消息中。這樣,SIP終端就問NAT....?;蛘呤菃柟W(wǎng)的某個(gè)服務(wù)器,NAT分配給自己的映射是什么。9問NAT。這種辦法就是使用UPnP協(xié)議,另外去參見UPnP的資料。10問公網(wǎng)上的某個(gè)服務(wù)器。如STUN服務(wù)器。SIP終端發(fā)送一個(gè)探測(cè)數(shù)據(jù)包,到公網(wǎng)上的服務(wù)器。公網(wǎng)上的服務(wù)器會(huì)發(fā)回?cái)?shù)據(jù)包,會(huì)包含有關(guān)NAT的詳細(xì)信息。有了這些信息,SIP終端就會(huì)知道它是否在NAT后面。這種探測(cè)方法,可以用于上面4種NAT,都有效。例如SIP終端從:1000發(fā)送一個(gè)數(shù)據(jù)包,則SDP消息中包含的是m=1000andc=。但是,如果SIP終端先進(jìn)行NAT探測(cè),則會(huì)知道NAT會(huì)分配公網(wǎng)的IP:端口是3:12345。則SIP終端直接在SDP消息寫m=12345,c=3。產(chǎn)生的問題因?yàn)镹AT的端口分配是動(dòng)態(tài)的,因而有可能會(huì)改變。這樣,在發(fā)送了NAT探測(cè)消息后,要很快地發(fā)送出SIP消息。而且,SIP終端發(fā)送數(shù)據(jù)的端口和接收數(shù)據(jù)的端口要是一樣的。注意受限制的圓錐體(包括端口受限制的圓錐體)NAT,它不讓回來(lái)的消息進(jìn)來(lái),除非SIP終端先發(fā)了一個(gè)數(shù)據(jù)包給它。因而,SIP終端需要先發(fā)一個(gè)數(shù)據(jù)包給對(duì)方。這樣以后對(duì)方來(lái)的數(shù)據(jù),就可以進(jìn)入NAT內(nèi)部了(不過(guò),不需要為這個(gè)操作擔(dān)心,有辦法的)。上面的辦法在對(duì)稱的NAT后面,不能夠工作。因?yàn)?,?duì)稱的NAT,它在分配給SIP終端外部的IP:port時(shí),每次都變化(不同的對(duì)方不一樣)。也就是SIP終端在探測(cè)NAT時(shí),得到的IP:port,與它后來(lái)發(fā)SIP消息時(shí),分配的IP:port不一樣。這樣,對(duì)方來(lái)的語(yǔ)音數(shù)據(jù)就進(jìn)不來(lái),因?yàn)閷?duì)方得不到正確的IP:port。11、上面描述的過(guò)程,其實(shí)就是采用STUN協(xié)議時(shí),解決問題的過(guò)程。就是SIP終端向STUN服務(wù)器發(fā)探測(cè)NAT的數(shù)據(jù)包。12、對(duì)稱的NAT解決辦法就是在公網(wǎng)上放一個(gè)中轉(zhuǎn)語(yǔ)音流的服務(wù)器。這個(gè)中轉(zhuǎn)語(yǔ)音流的服務(wù)器有時(shí)就是一個(gè)OutBoundproxy。注意,這個(gè)中轉(zhuǎn)語(yǔ)音流的服務(wù)器,可能會(huì)成為瓶頸。由于語(yǔ)音要經(jīng)過(guò)中轉(zhuǎn)語(yǔ)音流的服務(wù)器,所以路徑增長(zhǎng)了,音質(zhì)會(huì)變差。所以,對(duì)稱的NAT,要SIP能夠工作,總之是個(gè)麻煩。不過(guò),目前大多數(shù)的NAT,都可以做“虛擬服務(wù)器的端口轉(zhuǎn)發(fā)”,即將SIP工作需要的端口轉(zhuǎn)發(fā)到SIP終端上去。如果在NAT設(shè)備上,做了“虛擬服務(wù)器的端口轉(zhuǎn)發(fā)”則NAT會(huì)保留SIP工作需要的端口,專用于SIP終端,這樣SIP終端就相當(dāng)于是在一個(gè)FullCone完全圓錐體的NAT后面,SIP用STUN工作沒有問題。SIP終端需要的端口數(shù)是這樣確定的,一個(gè)端口用于SIP信令,比如5060。RTP端口的數(shù)量,取決于通話的路數(shù)。一路通話需要2個(gè)RTP端口。每增加一路通話,則需要多

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論