postimage

Czy wiesz że WebRTC korzysta z serwera STUN, aby umożliwić połączenie P2P, a w ostateczności z serwera TURN aby przepuścić ruch przez niego i umożliwić połączenie?

Rzadko kiedy zwykły użytkownik posiada na swoim komputerze publiczne IP, przez co przekazanie informacji drugiej osobie “moje ip to 192.168.0.X” nie umożliwi połączenia P2P.

Nieudane połączenie P2P Nieudane połączenie P2P
źródło: MDN - dostęp: 2020-08-20

Dopiero wykorzystanie serwera STUN do określenia publicznego IP oraz ewentualnych ograniczeń może, w większości przypadków, pomóc przy zestawieniu połączenia P2P.

Wykorzystanie serwera STUN Wykorzystanie serwera STUN
źródło: MDN - dostęp: 2020-08-20

Dzięki temu użytkownik A i B mogą przesłać do siebie adresy przez serwer pośredniczący (tzw. signaling) i ustanowić połączenie P2P.

Niestety w niektórych przypadkach samo wykorzystanie STUN nie umożliwia połączenia P2P (np. kiedy użytkownik jest za symetrycznym NATem).

Wtedy możliwe jest wykorzystanie serwera TURN, który będzie działał jak proxy dla przesyłanych pakietów.

Niestety wiąże się to z większym wykorzystaniem zasobów oraz łącza sieciowego przy przesyłaniu pakietów przez dostawcę usługi WebRTC.

Wykorzystanie serwera TURN Wykorzystanie serwera TURN
źródło: MDN - dostęp: 2020-08-20

W tym wariancie połączenie bezpośrednie nie było możliwe, ale przesyłanie pakietów przez TURN pozwala użytkownikom nadal się połączyć z przez WebRTC.

Połączenie w tym wypadku nadal będzie bezpieczne, ponieważ pakiety są szyfrowane i TURN nie ma możliwości ich odczytania, służy tylko jako pośrednik.

Darmowym serwerem STUN/TURN jest coTURN (https://github.com/coturn/coturn). A jeśli chcesz zobaczyć, pod jakim adresem Cię widać z zewnątrz możesz wykorzystać to narzędzie online: https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/.

Źródła

https://developer.mozilla.org/en-US/docs/Web/API/WebRTC_API/Protocols https://blog.ivrpowers.com/post/technologies/what-is-stun-turn-server/ https://www.html5rocks.com/en/tutorials/webrtc/infrastructure/

💡 "Czy wiesz, że?" to wewnątrzfirmowa inicjatywa, której celem jest szerzenie ciekawostek z różnych obszarów IT. Najlepsze z nich trafiają na bloga dla szerszego grona odbiorców.