《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 通信與網(wǎng)絡(luò) > 設(shè)計(jì)應(yīng)用 > SIP協(xié)議的NAT穿越技術(shù)
SIP協(xié)議的NAT穿越技術(shù)
摘要: NAT指的是網(wǎng)絡(luò)地址轉(zhuǎn)換(NetwordAddressTranslation)。這一技術(shù)使得大部分人可以在家里用多于一臺(tái)的計(jì)算機(jī)上網(wǎng)但只用一個(gè)IP地址。
關(guān)鍵詞: NAT SIP RTP
Abstract:
Key words :

NAT 指的是網(wǎng)絡(luò)地址轉(zhuǎn)換(Netword Address Translation)。這一技術(shù)使得大部分人可以在家里用多于一臺(tái)的計(jì)算機(jī)上網(wǎng)但只用一個(gè)IP地址。多半時(shí)間里,一臺(tái)有NAT功能的路由器支持從內(nèi)部 網(wǎng)絡(luò)(帶有內(nèi)部IP地址)中取得數(shù)據(jù),并將其發(fā)送到Internet,同時(shí)將每一個(gè)包的內(nèi)部IP地址替換為外部地址。如下圖所示:

<a class=SIP協(xié)議的NAT穿越技術(shù)" src="http://files.chinaaet.com/images/2012/04/27/063b2459-cdfe-4794-8dd6-469a278ba5d3.jpg" />
SIP協(xié)議的NAT穿越技術(shù)

什么是RTP

RTP 指的是實(shí)時(shí)傳輸協(xié)議(Real-Time Transport Protocol),這個(gè)協(xié)議的目的是在主叫和被叫之間傳輸語(yǔ)音數(shù)據(jù)。問(wèn)題是,當(dāng)你試圖用RTP協(xié)議呼叫一個(gè)人的時(shí)候,你要事先知道他的IP地址和端口號(hào) (PORT),這使得RTP協(xié)議單獨(dú)使用起來(lái)有相當(dāng)?shù)睦щy,因?yàn)楹艚械碾p方?jīng)]有辦法事先知道彼此的IP和端口。這就是為什么人們還需要SIP。

什么是SIP?

SIP 也就是會(huì)話初始協(xié)議(Session Initiation Protocol),語(yǔ)法上很象HTTP協(xié)議,是可讀的文本。它的目的是讓主叫方可以找到被叫方的IP和端口,同時(shí)它也幫助雙方協(xié)商媒體的類(lèi)型和格式。比 如,你想通過(guò)家里的一臺(tái)PC機(jī)上運(yùn)行的Free World Diadup(它使用SIP協(xié)議)來(lái)呼叫你遠(yuǎn)在羅馬尼亞的朋友,如下圖:

SIP協(xié)議的NAT穿越技術(shù)
SIP協(xié)議的NAT穿越技術(shù)

SIP發(fā)送一個(gè)INVITE包到FWD SERVER,其中包含有主叫方的RTP的IP地址和端口,F(xiàn)WD將這個(gè)包轉(zhuǎn)到對(duì)應(yīng)的被叫方,被叫方接受了呼叫并將它自己的RTP的IP地址和端口返回來(lái)。

SIP+NAT,一個(gè)不能解決的問(wèn)題?

SIP的NAT的問(wèn)題,其實(shí)不是SIP的問(wèn)題,而是RTP的問(wèn)題。SIP來(lái)聲明RTP的地址和端口,但是如果客戶(hù)端在NAT之后的話,它聲明的端口就會(huì)與NAT在外部分配的不同。如下圖:

SIP協(xié)議的NAT穿越技術(shù)
SIP協(xié)議的NAT穿越技術(shù)

即使很多SIP的實(shí)現(xiàn)都基于NAT總是分配一個(gè)與內(nèi)網(wǎng)端口相同的一個(gè)外部端口這樣一個(gè)假設(shè),但這個(gè)假設(shè)是錯(cuò)誤的。在產(chǎn)品環(huán)境下,你不能告訴奶奶說(shuō)她不能與孫子說(shuō)話是因?yàn)橛行┞酚善鞣峙淞艘粋€(gè)不同的端口號(hào)。

SIP協(xié)議的NAT穿越技術(shù)
SIP協(xié)議的NAT穿越技術(shù)

如果你是一個(gè)carrier,解決辦法要簡(jiǎn)單一點(diǎn),因?yàn)槟阋硭械臄?shù)據(jù),就是用SIP會(huì)話邊界控制器(SIP Session Border Controller),簡(jiǎn)稱(chēng)SIP SBC。SIP SBC通常位于carrier的內(nèi)部SIP網(wǎng)絡(luò)的前面,它來(lái)解決NAT穿越問(wèn)題,同時(shí)也保護(hù)SIP網(wǎng)絡(luò)。

SIP協(xié)議的NAT穿越技術(shù)
SIP協(xié)議的NAT穿越技術(shù)

這種情況下解決NAT穿越問(wèn)題需要一些小技巧。

第一個(gè)小技巧是讓NAT上從客戶(hù)端到服務(wù)器的洞保持打開(kāi)狀態(tài),這通常是讓SIP客戶(hù)端至少每隔30發(fā)送一個(gè)兩個(gè)字節(jié)的包到服務(wù)器。一些路由器會(huì)將30秒內(nèi)沒(méi)用的映射顯式的刪除掉,GNU/Linux通常是3分鐘后才刪除。

第二個(gè)小技巧是在我們?cè)趛ate項(xiàng)目中用到的,就是從到達(dá)服務(wù)器本地的RTP IP和端口的第一個(gè)包中計(jì)算客戶(hù)端的RTP IP和端口,而不是用在SDP中聲明的那個(gè)IP和端口。這個(gè)技巧可以解決NAT的穿越問(wèn)題,不論客戶(hù)端在多少層NAT之后。這個(gè)方法的主要缺點(diǎn)是,在一些 情況下,客戶(hù)端不能收到起初的媒體流(since at that point, it sends out no voice packets)并將聽(tīng)不到振鈴音。

如果你不是一個(gè)carrier,你想實(shí)現(xiàn)一個(gè)Peer to Peer的呼叫,并且呼叫的雙方都在NAT之后,你必須用一個(gè)外部的SIP代理或網(wǎng)關(guān)來(lái)在兩點(diǎn)之間傳遞SIP,希望NAT們一個(gè)接一個(gè)的為RTP接連打開(kāi) 合適的端口。然而,對(duì)于這種情況,沒(méi)有最終的解決方案。兩個(gè)建議的解決方案是STUN和ICE,但是當(dāng)前每個(gè)解決方案有時(shí)都可能達(dá)到的你目的。Skype 發(fā)現(xiàn)了一種非常簡(jiǎn)單好用的解決這個(gè)問(wèn)題的方法:他們用沒(méi)在NAT內(nèi)的客戶(hù)端來(lái)做在NAT內(nèi)的客戶(hù)端的代理。

SIP協(xié)議的NAT穿越技術(shù)
SIP協(xié)議的NAT穿越技術(shù)

這個(gè)解決方案從技術(shù)上講是非常好的。但是,有一些道義和政策上的原因不能用Skype的方法。原因之一是,如果你是一個(gè)在NAT外的客戶(hù)端,你不知道誰(shuí)的數(shù)據(jù)從你這里傳遞過(guò)去了。另一個(gè)原因是,這會(huì)占用你的帶寬。最后,你不得不為代理語(yǔ)音流而為多余的帶寬付費(fèi)。

我個(gè)人希望在不久的將來(lái)有更多的SIP實(shí)現(xiàn)用YATE現(xiàn)在用的這兩個(gè)小技巧來(lái)實(shí)現(xiàn)NAT的穿越。Skype或許在長(zhǎng)時(shí)間內(nèi)還會(huì)在家庭用戶(hù)中廣為流傳,但是企 業(yè)用戶(hù)會(huì)慢慢的移向Voip提供者,隨著大量的努力和一點(diǎn)運(yùn)氣,他們將會(huì)像PSTN提供者一個(gè)可靠,因?yàn)榧夹g(shù)會(huì)越來(lái)越好。

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。
主站蜘蛛池模板: 国产丶欧美丶日韩丶不卡影视 | 国产精品亚洲欧美日韩区 | 日韩高清欧美精品亚洲 | 国产ppp视频在线观看 | www.午夜| 免费黄a| 九九99视频在线观看视频观看 | 国产精品91视频 | 成人影院免费在线观看 | 欧美激情xxxx| 国产精品成人网 | 成人午夜久久 | 玖玖玖精品视频免费播放 | 人人做人人干 | 日本一区二区不卡视频 | 欧美日韩在线吹潮视频 | 国产成人a v在线影院 | 波多野结衣在线观看一区 | 午夜影院色 | 精品免费在线视频 | 欧美午夜大片 | 一二三四视频社区在线播放中国 | 中国黄色网页 | 一级视频在线免费观看 | 高清国产一区二区三区 | 操美女在线 | 极品美女一级毛片 | 一级黄免费 | 国卡一卡二卡三免费网站 | 免费精品一区二区三区在线观看 | 午夜片网站 | 精品在线观看国产 | 午夜小视频男女在线观看 | 成年网站在线 | 欧美性色黄在线视 | 欧美国产日韩综合 | 一级特黄性色生活片一区二区 | 天堂黄色网| 亚洲精品手机在线 | 日韩美一区二区 | 亚洲欧美一区二区三区国产精品 |