WebRTC傳輸基本知識——p2p

目錄

WebRTC傳輸基本知識

1  NAT

1.1 NAT 種類

2 STURN

3 TURN

4 ICE


WebRTC傳輸基本知識

  • NAT(Network Address Translator)
  • STUN(Simple Traversal of UDP Through NAT)
  • TURN(Traversal Using Relays around NAT)
  • ICE(Interactive Connectivity Establishment)

 

1  NAT

如圖所示:11.0.25.33的主機,在NAT Server的後面,左側三臺主機,是公網122.35.10.11映射出來的。

由於IPv4不夠,並且出於網絡完全的原因,所以出現了NAT Server。常見的,個人電腦的ip查詢,總是192.168.x.x 這就是nat之後的內網地址。而在瀏覽器直接輸入ip,獲得的是外網地址。

1.1 NAT 種類

 

內網的 X=ip, y=port, 映射後,得到外網的 A=ip, b=port.

X y, 向M P S 發送請求,M P S就知道了A b,通過A b, 就可以與Xy進行通信了。這是最好穿越的完全錐形NAT。安全性差。

X=ip, y=port, 映射後,A=ip, b=port. 還有將要請求的主機ip=P。 五元組。

先有內網向外網發送一個請求。X首先向P發送消息,記錄保留P,然後P的不同端口才可以向X發送消息。

其他主機的IP地址,不能通過,因爲內網沒有向他們發送請求,沒有記錄M和S,所以M S 都不能跟X連接。

X=ip, y=port, 映射後,A=ip, b=port. 還有將要請求的主機ip=P,port=q。 六元組。

先有內網向外網發送一個請求。X首先向Pq發送消息,記錄保留Pq,然後P的q端口纔可以向X發送消息,其他端口不可以。

其他主機的IP地址,不能通過,因爲內網沒有向他們發送請求,沒有記錄M和S,所以M S 都不能跟X連接。

X=ip, y=port, 映射後,A=ip, b=port. 還有將要請求的主機ip=P,port=q。 六元組。

先有內網向外網發送一個請求。X首先向Pq發送消息,記錄保留Pq,然後P的q端口纔可以向X發送消息,P的他端口不可以。且P只能向Ab發送數據,雖然Cd也是Xy映射出來的,但是並不接受Pq的數據。Cd是爲Mn服務的。

2 STURN

簡單記錄一下

 

3 TURN

(1)--------UDP/TCP/加密UDP-----------(2)--------------UDP-----------(3)

TURN Client在NAT之後,內網地址 10.1.1.5:49721

TURN Client的映射地址(出口地址)(外網):192.0.2.1:7000

TURN Server 地址:192.0.2.15:3478,3478一般是固定的接收請求的端口。TURN Server端看到的TURN Client端的地址,就是192.0.2.1:7000。

TURN Server接收到TURN Client請求的時候,會開闢一箇中轉的端口:192.0.2.15:50000。用來提供UDP中轉的服務。

Peer B 與TURN Server端是同一個網段,所以,兩者建立連接後,可以直接互相發送數據,通過50000端口和49191端口。當50000端口收到數據,經過內部中轉給3478端口,然後3478端口再中繼給TURN Client端。逆向也是這樣的。

在NAT之後的Peer-A, Peer-A 先穿越NAT,得到192.0.2.150:32102, 然後發送到TURN Server 端50000端口,然後TURN Server內部中轉到3478端口,3478端口再傳給7000端口,TURN Client就能接收到數據。TURN Client發送數據,也是經過NAT穿越,3478端口中轉50000端口,向32102端口發送數據,使得TURN Client端與Peer-A進行通信。

 

4 ICE

STUN Server可以有兩個,也可以有一個。STUN Server用於NAT穿越,也就是獲得外網ip和port。

Relay server 就是上面圖中的TURN server。Relay server也具有STUN Server的功能。可以映射公網IP,也有中繼的功能。

 ICE目的:就是讓Peer-A獲取到,所有可以連接到Peer-B的通路。

通路一共有多少種:

  • 本機網卡一個IP,局域網內,這就是一個通路了。
  • 兩端都穿越NAT,通過STUN server服務獲取NAT映射後的地址,外網地址,就可以嘗試P2P通信了。
  • P2P不通,就得通過Relay server進行通信。
  • 如果本機有多個網卡,還會有其他路線。
  • 如果本機有VPN,還會有VPN通信
  • 還可能是虛擬IP
  • ...

ICE 具體做哪些:

  1. 將所有的通路都收集起來。
  2. 對Candidate Pair排序
  3. 分別進行連通性檢測
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章