P2P學習(三)網絡傳輸基本知識


一:NAT (Network Address Translator)

P2P技術詳解(一):NAT詳解——詳細原理、P2P簡介

NAT的四種類型

二:STUN(Simple Traversal of UDP Through NAT)

(一)簡單了解

有了NAT之后,可以將內網地址轉成公網地址,那兩個公網之間是不是就可以通訊了呢?

那中間還是缺了一步的,他們雖然 都存在這個世界上,但是彼此並不認識,怎么辦呢?那必須要有一個第三方的服務做一個介紹,這個就是STUN服務。 STUN服務說白了就是做一個中介,把各自的公網信息進行一下交換,讓他們彼此進行認識,這個STUN服務也非常簡單

(二)詳解

P2P技術詳解(四):P2P技術之STUN、TURN、ICE詳解

STUN,首先在RFC3489中定義,作為一個完整的NAT穿透解決方案,英文全稱是Simple Traversal of UDP Through NATs,即簡單的用UDP穿透NAT

STUN是個輕量級的協議,是基於UDP的完整的穿透NAT的解決方案。它允許應用程序發現它們與公共互聯網之間存在的NAT和防火牆及其他類型。它也可以讓應用程序確定NAT分配給它們的公網IP地址和端口號。STUN是一種Client/Server的協議,也是一種Request/Response的協議,默認端口號是3478。 

三:TURN(Traversal Using Relays around NAT)

(一)簡單了解

經過介紹認識之后,A和B這兩台主機就可以建立連接了,連接一旦建立完畢就可以傳輸數據,那光有STUN服務他們之間是不是就一定能夠創建成功這個連接呢

其實不一定,在美國有一項數據表示在進行P2P穿越的時候,有70%是可以穿越成功的,但是實際上在國內來說就很難達到這個70%的成功率,50%可能都到不了。那在現實過程中,我又要實現瀏覽器之間的傳輸,那當P2P連接不成功的情況下,如何保證音視頻還能互通呢?

這就引入了TURN服務,TURN 就是在雲端架設一個服務器,這個服務器就負責之間雙方流媒體數據的轉發,讓他們進入到同一個房間里之后呢,這個TURN就會給房間里的所有人進行轉發,那么對端就能收到了,A 發送信息通過TURN到了B,同樣的B發送信息通過TURN發送給A。這樣就在P2P連接不成功的情況下 ,它有了一條路線可以進行音視頻的傳輸。這就是TURN服務。

(二)詳解

P2P技術詳解(四):P2P技術之STUN、TURN、ICE詳解

TURN,在RFC5766中定義,英文全稱Traversal Using Relays around NAT(TURN):Relay Extensions to Session Traversal Utilities for NAT(STUN),即使用中繼穿透NAT:STUN的中繼擴展

TURN與STUN

共同點:都是通過修改應用層中的私網地址達到NAT穿透的效果,

不同點:是TURN是通過兩方通訊的“中間人”方式實現穿透。突破了原先STUN協議無法在兩台主機不能夠點對點直接連接下提供作用的限制。

如果一個主機位於NAT的后面,在某些情況下它不能夠與其他主機點對點直接連接。在這些情況下,它需要使用中間網點提供的中繼連接服務。TURN協議就是用來允許主機控制中繼的操作並且使用中繼與對端交換數據。

TURN與其他中繼控制協議不同的是它能夠允許一個客戶端使用一個中繼地址與多個對端連接TURN協議被設計為ICE的一部分,用於NAT穿越,雖然如此,它也可以在沒有ICE的地方單獨使用。

四:ICE (Interactive Connectivity Establishment)

ICE的全稱Interactive Connectivity Establishment(互動式連接建立),由IETF的MMUSIC工作組開發出來的,它所提供的是一種框架,使各種NAT穿透技術可以實現統一。ICE跟STUN和TURN不一樣,ICE不是一種協議,而是一個框架(Framework),它整合了STUN和TURN

(一)簡單了解

ICE就是將上面介紹的NAT、TURN等服務打包一起做一個最優的選擇。

1.那它首先嘗試進行P2P,P2P在你的主機上有可能有雙網卡或者是多個端口,當其中有一個端口或者某一個網卡不通的時候,它可以換其他的,如果兩條都是通的時候,它選擇一條更高效的,也就是說哪個網卡性能更好它會使用哪個。

2.那當P2P不通的時候它又會選擇TURN服務中轉,TURN也不一定能通,尤其是中國,很有可能被攔掉,那怎么辦呢?那有可能選擇了多個節點,有可能是在上海一個節點,在日本東京一個節點,當上海的節點不通的時候還可以 選擇東京的節點,ICE就是將這些所有的可能性都羅列好,會在這其中找到一條最優的路徑,將數據傳送過去。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM