摘要:國際互聯網工程任務組,簡稱創建里和標準來解決穿越的問題。是一個被穿越算法用來協助發現網絡環境信息的網絡協議包格式。這些類型不能被使用因為可能影響內部的處理流程。
前言
最近因為在研究WebRTC,因為對音頻視頻模塊基本都已經了解,就對其中的網絡模塊針對性的了解一下。
這里面Transport層主要涉及3個層次SRTP、Multiplexing、P2P(STUN+TURN+ICE),現在就主要針對P2P這部分STUN、TURN和ICE的來源和設計初衷做個簡單的介紹,不涉及具體的算法和技術實現,主要內容主要是翻譯自外網的這篇文章。里面有一些公司介紹廣告就不說了。
IP地址和視頻連接的一個棘手問題是NAT的限制和防火墻對建立可靠呼叫的影響(A setback to IP and Video connectivity has been the restriction NATs and firewalls pose to reliable call completion.這句原話的語法拆解了好久= =)。NAT和防火墻在安全和加強因特網的可用性上扮演了很重要的角色,但是同時也造成了在建立IP終端上嚴重的問題。IETF(國際互聯網工程任務組 The Internet Engineering Task Force,簡稱 IETF)創建里STUN, TURN和ICE標準來解決NAT穿越的問題。
STUN能幫助連接IP終端:
發現他們是否在NAT或者防火墻后面
確定公網IP地址和防火墻的類型。STUN然后使用這些信息去協助建立點對點的IP連接
雖然STUN在解決大部分用戶設備(路由器之類的)的NAT問題上很有效,但是它在很多公司網絡上問題上不是很有效。TURN,全稱Traversal Using Relay NAT,通過提供使用一個流媒體預備服務來實現終端之間的流媒體傳輸的降級NAT穿越技術。
ICE是一個權衡STUN、TURN來提供可以來的IP建立和媒體傳輸的框架,通過一個SIP提供一個終端交換候選IP地址和端口的模型(比如一個私有地址和TURN服務地址)。
什么是NATNAT是指Network Address Translation。概括來說就是路由器把本地私有子網IP地址轉換稱公網(通常是一個由因特爾服務供應商ISP分配的IP地址)IP地址的修改IP信息的過程。現有的一個主要挑戰就是在網絡中的客戶端之間建立直接連接。
現在有4中NAT在如今的路由器中,根據最少限制性到最多限制性來排序可以分為:
Full cone(全錐型)一旦一個內網地址(iAddr:iPort)被映射到一個外部網絡地址(eAddr:ePort),任何iAddr:iPort的包都會通過eAddr:ePort來發送。任何外部主機都可以通過給eAddr:ePort發送網絡包來給iAddr:iPort傳送信息。
Address-restricted cone(限制型錐形)一旦一個內網地址(iAddr:iPort)被映射到一個外部網絡地址(eAddr:ePort),任何iAddr:iPort的包都會通過eAddr:ePort來發送。但是一個外部的主機(hAddr:any)只有在iAddr:iPort之前給hAddr:any發送過網絡包的情況下才可以通過eAddr:ePort給iAddr:iPort發送網絡包,any這里指任意端口。(總結下來就是只有內部給外部主機發送過信息,才能通過外部地址端口往內部發送)。
Port-restricted cone(端口限制型錐型)一旦一個內網地址(iAddr:iPort)被映射到一個外部網絡地址(eAddr:ePort),任何iAddr:iPort的包都會通過eAddr:ePort來發送。但是一個外部的主機(hAddr:hPort)只有在iAddr:iPort之前給hAddr:hPort發送過網絡包的情況下才可以通過eAddr:ePort給iAddr:iPort發送網絡包,any這里指任意端口。和地址限制錐型差不多,只是還多了外部主機的端口的限制。
Symmetric(對稱型)每個從相同內部IP地址和端口到特定目標IP地址和端口的請求都會被映射到一個特殊的外部源IP地址和都端口上,如果相同的內部主機發送了包給相同的源地址和端口,但是是不同的目標,也會使用不同的映射。只有一個外部的主機從內部主機接收到過包,才能發送回去。
什么是STUNSTUN是指Session Traversal Utilities for NAT。是一個被NAT穿越算法用來協助發現網絡環境信息的網絡協議/包格式(IETF RFC 5389) 。發送方在發送服務器和發送客戶端之間傳輸使用STUN包。
如果端之間的路由器使用了全錐型,限制型錐形、端口限制型錐型,那么就會發現一個多帶帶STUN的直接連接。如果有有路由器使用了對稱型NAT,那么只有在其他路由不用對稱型或者端口限制型NAT的情況下才能發現一個STUN包的連接。但是不用擔心!發送方會自動的發現一個替換TURN的路徑。
TURN是指Traversal Using Relays around NAT。就像STUN,它是一個被NAT穿越算法用來協助發現網絡內終端直接連接路徑的網絡協議/包格式(IETF RFC 5766)。和STUN不同的是它用了一個公網的替換中介提換終端之間的包。當沒有其他選擇可用的時候,發送方使用TURN來交換流媒體包。因為它定制了服務資源所以也會因為這多的一步產生一定的延遲。
TURN只有在一個端使用了對稱型NAT,并且其他的端使用了對稱型NAT或者端口限制型NAT的時候才需要。
什么是ICEICE是指Interactive Connectivity Establishment。它定義了一個技術來使用SDP,STUN和TURN來發現網絡里端之間的路徑。發送方實現符合標準的ICE specification(IETF RFC 5245) ,就能兼容其他的端來實現同樣的spec。
每個RTP包都有一個7位的payload類型(0-127)和一個二進制payload。payload類型用于區分payload的格式,并且在創建發送方連接的時候需要定義好。IANA留出了一些payload type用于特定的格式。如果你在用一個不被IANA識別的編碼格式,那么根據他們的建議,最好用96-127中的數字。
發送方唯一的限制是payload類型72-76是留給RTCP的。這些payload類型不能被使用因為可能影響內部RTCP的處理流程。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/106403.html
摘要:為了使連接起作用,對等方必須獲取元數據的本地媒體條件例如,分辨率和編解碼器功能,并收集應用程序主機的可能網絡地址,用于來回傳遞這些關鍵信息的信令機制并未內置到中。所有特定于多媒體的元數據都使用協議傳遞。 這是專門探索 JavaScript 及其所構建的組件的系列文章的第 18 篇。 想閱讀更多優質文章請猛戳GitHub博客,一年百來篇優質文章等著你! 如果你錯過了前面的章節,可以在這里...
摘要:穿透的協議穿透協議系列介紹了協議協議版本變化屬于的協議通過與之間發送數據包通信以獲取一些信息。同樣和交互其作用是穿透失敗使用中繼,確保通信成功的低優先級策略。 UDP NAT穿透俗稱p2p打洞。講到NAT, 追溯一下NAT產生原因:使用ipv4的時候,地址數量有限,NAT設備可以讓接上它的其他設備在其上共享ip,緩解地址不夠用。當然ipv6的概念早就來臨了,國內推廣的程度和推廣慢原因這...
摘要:在處于使用了設備的私有網絡中的主機之間需要建立連接時需要使用穿越技術。目前已經有很多穿越技術,但沒有一項是完美的,因為的行為是非標準化的。 什么是WebRTC? 眾所周知,瀏覽器本身不支持相互之間直接建立信道進行通信,都是通過服務器進行中轉。比如現在有兩個客戶端,甲和乙,他們倆想要通信,首先需要甲和服務器、乙和服務器之間建立信道。甲給乙發送消息時,甲先將消息發送到服務器上,服務器對甲...
摘要:對于接收方來說,則必須實時解碼音頻和視頻流,并適應網絡抖動和時延。另外,由于主要是用來解決實時通信的問題,可靠性并不是很重要,因此,使用作為傳輸層協議低延遲和及時性才是關鍵。握手記錄嚴格按照協議規定的順序傳輸,順序不對就報錯。 Web Real-Time Communication(Web實時通信,WebRTC)由一組標準、協議和JavaScript API組成,用于實現瀏覽器之間(端...
摘要:本質上允許網頁程序創建點對點通信,我們將會在隨后的章節中進行介紹。信令涉及網絡檢索和穿透,會話創建及管理,通信安全,媒體功能元數據和調制及錯誤處理。這樣就會完全建立及激活節點間的網絡套接字會話。 原文請查閱這里,略有刪減,本文采用知識共享署名 4.0 國際許可協議共享,BY Troland。 這是 JavaScript 工作原理第十八章。 概述 何為 WebRTC ?首先,字面上已經...
閱讀 1058·2019-08-30 12:57
閱讀 2141·2019-08-30 11:11
閱讀 2183·2019-08-29 15:20
閱讀 1877·2019-08-29 14:12
閱讀 3279·2019-08-28 17:51
閱讀 2383·2019-08-26 13:23
閱讀 803·2019-08-26 10:34
閱讀 3864·2019-08-23 12:37