2017-05-18 91 views
0

我正在實現一個TURN服務器,我將在我的問題中使用TURN rfc5766術語。TURN服務器Nat遍歷ICE STUN

有一部分我沒有得到。 假設我們有一個連接到TURN服務器的客戶端(A)和還沒有連接到任何東西的對等端(B)。我們從另一個機制中獲得peer(B)的反身地址,並使用SIP或電子郵件將它傳遞給客戶端(A)。不管是什麼情況。

接下來讓我們假設我們創建了用於客戶端(A)的分配,權限和中繼地址

它說的是,當客戶端(A)發送對等體(B),以TURN服務器進行中繼,其一個數據指示將對等(B)的服務器自反地址附加到指示。服務器然後從指示和對等體(B)的反射地址中提取udp,並將其發送給對等體(B) 。 我不明白的是,服務器如何能夠到達其NAT後面的對等體(B)。只知道同行(B)的服務器反身地址並不能解決問題。 如果peer(B)從未與服務器進行通信,則peer(B)的NAT永遠不會在TURN服務器上創建從Peer(B)到客戶端(A)的中繼地址的映射。 (A)(因爲客戶端知道對等體(B)的服務器自反地址)。如果服務器能夠到達對等體(B)的服務器反射地址而沒有ip:端口映射,那麼客戶機(A)(因爲客戶機知道對等體(B)的服務器自反地址)。而且它不需要轉向服務器。它只會使用STUN。

然後TURN服務器有什麼意義? 我錯過了什麼。

有人可能會認爲Maybe peer(B)事先向同一臺服務器做了STUN綁定請求,這就是我們如何得到peer(B)服務器反射地址,並且該請求在對等體(B)上創建了NAT映射。一邊。那麼,這隻適用於使用端點獨立映射和地址相關映射但不是地址和端口相關映射的NAT。因爲客戶端(A)的中繼地址不同於發送STUN綁定請求的Turn服務器的地址。 例如: Turn服務器地址:121.121.121.121:8080 客戶端中繼地址:121.121.121.121:8081(在同一個服務器不同的端口上)。 由於stun綁定消息轉到121.121.121.121:8080,因此在Peer(B)的121.121.121.121:8081的NAT上沒有映射。 基本上橋樑壞了。

謝謝。

回答

0

您的解釋中的問題是,對等端(B)在消息傳遞開始之前不會連接到TURN服務器。這不是真的。

對於WebRTC客戶端,需要配置STUN和TURN服務器地址。當客戶端創建PeerConnections時,它們都將在實際的消息傳遞開始之前連接到TURN服務器。爲了達到這個目的,兩個同伴都必須連接到TURN服務器,並執行「打洞」,然後允許通過NAT的流量。

當通過TURN服務器中繼流量時,客戶端不會知道對方的IP地址,只需要與TURN端點進行通信。