2012-12-11 11 views
9

Potrzebujemy wysłać dane do urządzeń naszych użytkowników za pomocą protokołu TFTP, który jest prostym protokołem FTP podobnym do UDP.Czy mogę użyć WebRTC do otwarcia połączenia UDP?

Ponieważ nie możemy otworzyć gniazda UDP za pomocą javascript, używamy naszego serwera jako proxy, wysyłając dane na nasz serwer i otwierając połączenie UDP z serwera do urządzenia. Ma to tę wadę, że nasi użytkownicy muszą dowiedzieć się o translacji NAT i skonfigurować przekierowanie portów.

Pytanie brzmi, czy możemy użyć WebRTC do otwarcia bezpośredniego gniazda UDP do wysyłania i odbierania między przeglądarką a urządzeniami?

http://www.webrtc.org/reference/webrtc-internals/vienetwork#TOC-SendUDPPacket sugeruje, że możemy wysłać kilka surowych danych UDP nad gniazdem (to znaczy, jeśli jest to możliwe, aby uzyskać dostęp do warstwy nad javascript. Nie jestem tego pewien), ale nie widzę sposobu, aby pobrać surowego UDP odpowiedź.

Każda pomoc mile widziane

+19

Powinienem powiedzieć ci mój nowy żart UDP, ale ... może go nigdy nie dostaniesz. – jAndy

Odpowiedz

12

Nie. Jest zbyt wiele problemów związanych z bezpieczeństwem, które pozwalają WebRTC na wysyłanie do losowego adresu/portu - musimy upewnić się, że nie działa on jako platforma DDOS, więc wymagamy, aby cel implementował ICE jako niejawne zezwolenie do wysyłania danych, a także nie zezwalamy na wysyłanie dowolnych danych, tylko meduzreams SRTP i danych w kanałach DataChannels (ponad SCTP ponad DTLS przez UDP + ICE).

+2

Po co martwić się o DDOS w WebRTC? Czy nie możesz już zrobić z klienta, tworząc bez końca obrazy, przesyłając formularze, XHRs, a co nie? Co jest takiego specjalnego w zapobieganiu DDoS z WebRTC? Wiadomość po wiadomości na liście mailingowej webrtc i pytanie po pytaniu podkreśla wielką chęć korzystania z WebRTC do wysyłania danych z powrotem na serwer, a nie tylko do peer-to-peer. Nie rozumiem nawet, dlaczego najpierw stworzono peer to peer. Możliwość rozmów głosowych tylko z jedną osobą ma ograniczone zastosowanie. Natychmiastowe pytanie brzmi: jak dodać kolejnego użytkownika do mojego połączenia? Z MCU. Niełatwe. –

+0

Można ograniczyć z powrotem do serwera webrtc z tą samą zasadą tego samego pochodzenia, która już istnieje, lub jakiś plik w oryginalnej domenie w taki sposób, jak robi to flash. Lub nagłówki CORS. –

+0

Kod rozpowszechniany na stronach internetowych/reklamach/itp. Może działać jako DDOS, jeśli może wysyłać dowolnie duże ilości (wypełnić rurę upstream) na adres IP. Proszę zapoznać się ze szkicem uwag dotyczących bezpieczeństwa rtcweb dla przykładów. Witryny mogą łatwiej radzić sobie z atakami DDOS zorientowanymi na połączenie, ponieważ mogą kontrolować akceptowanie połączeń (tempo itp.). Zauważyłem, że wniosek tutaj dotyczył UDP w trybie peer-to-peer, który jest czymś zupełnie innym, a nie tym, o co się pytasz. – jesup

3

Nie, nie można wysyłać surowe dane UDP za pomocą WebRTC tak.

Biblioteka ViENetwork, w której można znaleźć metodę SendUDPPacket, jest używana w przeglądarce Chrome do obsługi transmisji pakietów, obsługi funkcji Windows QoS i innych ustawień sieciowych, ale nie masz do niej bezpośredniego dostępu.

Jedną z głównych cech usługi WebRTC jest Data Channel, dzięki której można nawiązać połączenie peer-to-peer między dwiema przeglądarkami, aby umożliwić wymianę surowych danych. To wciąż jest w budowie w Chrome i Firefox, jak widać here.

To może być to, czego szukasz, ponieważ możesz ustanowić połączenie do wysyłania nieprzetworzonych danych i będziesz musiał tylko martwić się, aby znaleźć sposób na połączenie z twoim drugim punktem końcowym, jeśli tego chcesz.

+0

To nie zadziała, ponieważ mówimy o bardzo specyficznym sprzęcie na drugim końcu (głównie Arduino), który może rozmawiać tylko przez TFTP. Pitty jednak ... – tzikis

Powiązane problemy