《電子技術應用》
您所在的位置:首頁 > 通信與網絡 > 設計應用 > SIP協(xié)議的NAT穿越技術
SIP協(xié)議的NAT穿越技術
摘要: NAT指的是網絡地址轉換(NetwordAddressTranslation)。這一技術使得大部分人可以在家里用多于一臺的計算機上網但只用一個IP地址。
關鍵詞: NAT SIP RTP
Abstract:
Key words :

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

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

什么是RTP

RTP 指的是實時傳輸協(xié)議(Real-Time Transport Protocol),這個協(xié)議的目的是在主叫和被叫之間傳輸語音數據。問題是,當你試圖用RTP協(xié)議呼叫一個人的時候,你要事先知道他的IP地址和端口號 (PORT),這使得RTP協(xié)議單獨使用起來有相當的困難,因為呼叫的雙方沒有辦法事先知道彼此的IP和端口。這就是為什么人們還需要SIP。

什么是SIP?

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

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

SIP發(fā)送一個INVITE包到FWD SERVER,其中包含有主叫方的RTP的IP地址和端口,FWD將這個包轉到對應的被叫方,被叫方接受了呼叫并將它自己的RTP的IP地址和端口返回來。

SIP+NAT,一個不能解決的問題?

SIP的NAT的問題,其實不是SIP的問題,而是RTP的問題。SIP來聲明RTP的地址和端口,但是如果客戶端在NAT之后的話,它聲明的端口就會與NAT在外部分配的不同。如下圖:

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

即使很多SIP的實現都基于NAT總是分配一個與內網端口相同的一個外部端口這樣一個假設,但這個假設是錯誤的。在產品環(huán)境下,你不能告訴奶奶說她不能與孫子說話是因為有些路由器分配了一個不同的端口號。

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

如果你是一個carrier,解決辦法要簡單一點,因為你要代理所有的數據,就是用SIP會話邊界控制器(SIP Session Border Controller),簡稱SIP SBC。SIP SBC通常位于carrier的內部SIP網絡的前面,它來解決NAT穿越問題,同時也保護SIP網絡。

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

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

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

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

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

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

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

我個人希望在不久的將來有更多的SIP實現用YATE現在用的這兩個小技巧來實現NAT的穿越。Skype或許在長時間內還會在家庭用戶中廣為流傳,但是企 業(yè)用戶會慢慢的移向Voip提供者,隨著大量的努力和一點運氣,他們將會像PSTN提供者一個可靠,因為技術會越來越好。

此內容為AET網站原創(chuàng),未經授權禁止轉載。
主站蜘蛛池模板: 精品久久久久久影院免费 | 美女被强行扒开双腿激情视频 | 国产精品亚洲专一区二区三区 | 国产偷国产偷亚洲高清在线 | 亚洲国产精品成 | 免费一级夫妻a | 欧美性色黄大片在线观看 | 日本高清一本二本三本如色坊 | 日本a级毛片视频播放 | 一级片免费的 | 又粗又爽又色男女乱淫播放男女 | 精品一区二区久久 | 国内自拍在线观看 | 欧美专区一区二区三区 | 日韩精品无码一区二区三区 | 草久在线观看视频 | 久久精品7 | 一本久 | 亚洲精品二区中文字幕 | 国产成人精品福利网站在线 | 国内偷拍免费视频 | 亚洲精品欧洲一区二区三区 | 国产第一页久久亚洲欧美国产 | 未成人做爰视频www 窝窝午夜精品一区二区 | 亚洲视频99| 久久精品男人的天堂 | 国产欧美日韩在线人成aaaa | 最近最新中文字幕免费的一页 | 欧美成人毛片 | 成人网18免费软件大全 | 国产精品免费观在线 | 久久精品视频6 | 亚洲天堂二区 | 一区二区中文字幕在线观看 | 一区二区3区免费视频 | 国产成人免费片在线观看 | 国产九九在线观看播放 | 欧美一级毛片一级 | 亚洲视频国产视频 | 欧美三级在线视频 | 男人的天堂在线精品视频 |