WebRTC
WebRTC (Web Real-Time Communication) – wolny i otwartoźródłowy projekt, część standardu HTML5 zapewniająca przeglądarkom internetowym oraz aplikacjom mobilnym możliwość komunikacji w czasie rzeczywistym poprzez zestaw prostych interfejsów programowania (API). Podstawowym celem projektu jest umożliwienie komunikacji audio/video na stronach internetowych poprzez bezpośrednią komunikację typu peer-to-peer, eliminując w ten sposób potrzebę instalacji wtyczek czy ściągania natywnych aplikacji[1]. Projekt jest wspierany przez takie firmy jak Apple, Google, Microsoft, Mozilla i Opera. Specyfikacja techniczna została opublikowana przez World Wide Web Consortium (W3C) i Internet Engineering Task Force (IETF)[2][3]
Według strony webrtc.org celem tego projektu jest „umożliwienie stworzenia bogatych, wysokiej jakości aplikacji RTC dla przeglądarek, platform mobilnych, i urządzeń internetu rzeczy i pozwolenie im na komunikację wspólnym zestawem protokołów”[4].
Historia
W maju 2010 roku Google zakupiło przedsiębiorstwo Global IP Solutions (GISP), które specjalizowało się w technologiach Wideokonferencyjnych i VoIP, a które stworzyło wiele komponentów wymaganych do komunikacji w czasie rzeczywistym (RTC), takich jak kodeki, czy techniki eliminacji echa[5]. Następnie przeniesiono posiadane technologie GISP do domeny otwarto-źródłowej i rozpoczęto proces współpracy z organami standaryzującymi takimi jak IETF, czy W3C by zapewnić nowemu standardowi wsparcie branży[6][5]. W maju 2011 Google wypuściło otwarto źródłowy projekt dla przeglądarek internetowych znany wtedy już pod nazwą WebRTC, jednak dalszym ciągu kontynuowane prace nad protokołami w IETF[7] i API przeglądarki w W3C[8].
W styczniu 2011 Ericsson Labs zbudowało pierwszą implementację WebRTC wykorzystując do tego bibliotekę WebKit[9][10]. W Październiku 2011, W3C opublikowało pierwszą roboczą specyfikacji projektu[11], by już dwa lata później (Luty 2013) wykonać pierwszą rozmowę i przesył danych z wykorzystaniem przeglądarki. Od Czerwca 2014 Google Hangouts już do pewnego stopnia również wykorzystał WebRTC do przesyłu danych[12].
Projekt API W3C został oparty na wstępnych pracach wykonanych w WHATWG[13]. API otrzymało nazwę ConnectionPeer, a pierwsze implementacja (poprzedzająca jeszcze standaryzację) została stworzona w Ericsson Labs.[10] Grupa Robocza WebRTC oczekuje, że ta specyfikacja będzie znacząco ewoluować na podstawie:
- wyników trwających dyskusji w grupie RTCWEB w IETF w celu zdefiniowania zestawu protokołów, które wraz z tym dokumentem definiują komunikację w czasie rzeczywistym w przeglądarkach internetowych; chociaż specyfikacja standardu nie narzuca żadnego protokołu sygnalizacyjnego, bardzo często do tego zadania stosowany jest SIP oparty na WebSocketach;
- problemów z prywatnością, które pojawiają się podczas ujawniania lokalnych możliwości i lokalnych strumieni;
- dyskusji technicznych w grupie, dotyczących w szczególności implementacji kanałów danych[14];
- doświadczenia zdobytego podczas wczesnych eksperymentów;
- Informacji zwrotnych od innych grup i osób.
W listopadzie 2017 r. specyfikacja WebRTC 1.0 przeszła z poziomu Working Draft do Candidate Recommendation[15].
W styczniu 2021 r. specyfikacja WebRTC 1.0 przeszła z poziomu Candidate Recommendation do Recommendation[2].
Opis
Projekt
Główne komponenty WebRTC opierają się. o kilka JavaScript’owych API:
getUserMedia pozyskuje media typu audio i wideo (np. uzyskując dostęp do kamery i mikrofonu urządzenia)[16].
RTCPeerConnection umożliwia komunikację audio i wideo pomiędzy klientami. Obsługuje przetwarzanie sygnału, kodeki, komunikację peer-to-peer, odpowiada za bezpieczeństwo i przepustowość[17].
RTCDataChannel umożliwia dwukierunkową komunikację dowolnych danych pomiędzy peerami. Używa tego samego interfejsu API, co WebSocket i ma bardzo niskie opóźnienie[17].
WebRTC API zawiera również funkcję statystyk:
getStats umożliwia aplikacji internetowej pobieranie zestawu statystyk dotyczących sesji WebRTC. Te dane statystyczne są opisane w osobnym dokumencie W3C.[17]
Standard RFC 7874 ↓ wymaga implementacji minimum PCMA/PCMU (RFC 3551 ↓), DTMF (RFC 4733 ↓) oraz kodeka audio Opus (RFC 6716 ↓). Opcjonalne kodeki audio to m.in.: iLBC, iSAC, G.711, G.722, natomiast video to: H.264, VP8, VP9[18]. Interfejsy API przeglądarki PeerConnection, kanału danych i przechwytywania mediów są szczegółowo opisane w W3C.
Przykłady
Chociaż początkowo WebRTC zostało opracowane dla przeglądarek internetowych, jest on z powodzeniem wykorzystywany poza nimi, np. w platformach mobilnych, czy internetu rzeczy. Przykłady obejmują także telefonię VoIP opartą na przeglądarkach, zwaną telefonami w chmurze lub telefonami internetowymi, które umożliwiają wykonywanie i odbieranie połączeń z poziomu przeglądarki internetowej, zastępując wymóg pobierania i instalowania telefonu programowego[19]. O uniwersalności WebRTC świadczyć może to, że za jego pomocą został zaimplementowany klient protokołu BitTorrent dostępny w przeglądarce[20].
Wsparcie
WebRTC jest wspierane przez następujące przeglądarki
GStreamer bezpośrednio udostępnia darmową implementację WebRTC[24].
Wsparcie kodeków w różnych przeglądarkach
Obsługa poszczególnych kodeków nie jest jednolita. WebRTC ustanawia standardowy zestaw kodeków, które muszą wdrożyć wszystkie zgodne przeglądarki. Niektóre przeglądarki mogą zezwalać również na kodeki spoza bazowej specyfikacji[25].
Wsparcie dla kodeków wideo
Nazwa kodeka
|
Profile
|
Wspierające przeglądarki
|
H.264
|
Constrained Baseline (CB)
|
Chrome (52+), Edge, Firefox[1], Safari
|
VP8
|
–
|
Chrome, Edge, Firefox, Safari (12.1+)[26]
|
VP9
|
–
|
Chrome (48+), Firefox
|
Wsparcie dla kodeków audio
Nazwa kodeka
|
Wspierające przeglądarki
|
Opus
|
Chrome, Edge, Firefox, Safari
|
G.711 PCM (A-law)
|
Chrome, Firefox, Safari
|
G.711 PCM (µ-law)
|
Chrome, Firefox, Safari
|
G.722
|
Chrome, Firefox, Safari
|
iLBC
|
Chrome, Safari
|
iSAC
|
Chrome, Safari
|
Kontrowersje
W styczniu 2015 r. TorrentFreak zgłosił poważną lukę w zabezpieczeniach przeglądarek obsługujących WebRTC, mówiąc, że naruszył bezpieczeństwo tuneli VPN, ujawniając prawdziwy adres IP użytkownika[27]. Żądania odczytu adresu IP nie są widoczne w konsoli programisty przeglądarki i nie są blokowane przez większość wtyczek zarządzającymi prywatnością, umożliwiając śledzenie online przez reklamodawców i inne podmioty pomimo środków ostrożności (jednak wtyczka uBlock Origin może rozwiązać ten problem).
Przypisy
- ↑ How WebRTC Is Revolutionizing Telephony [online], Trilogy-LTE [dostęp 2021-07-25] (ang.).
- ↑ a b Web Real-Time Communications (WebRTC) transforms the communications landscape; becomes a World Wide Web Consortium (W3C) Recommendation and multiple Internet Engineering Task Force (IETF) standards [online], www.w3.org [dostęp 2021-07-25] (ang.).
- ↑ Rtcweb Status Pages [online], tools.ietf.org [dostęp 2021-07-25] (ang.).
- ↑ WebRTC [online], WebRTC [dostęp 2021-07-25] (ang.).
- ↑ a b Google makes $68.2 million cash offer for Global IP Solutions [online], TechCrunch [dostęp 2021-07-25] (ang.).
- ↑ Are the WebRTC components from Google’s acquisition of Global IP Solutions? [online] [dostęp 2021-07-25] [zarchiwizowane z adresu 2011-06-07] (ang.).
- ↑ Real-Time Communication in WEB-browsers (rtcweb) – [online], datatracker.ietf.org [dostęp 2021-07-25] (ang.).
- ↑ WebRTC 1.0: Real-Time Communication Between Browsers [online], www.w3.org [dostęp 2021-07-25] (ang.).
- ↑ StefanS. Håkansson StefanS., Welcome to Ericsson Blog [online], www.ericsson.com, 21 lipca 2021 [dostęp 2021-07-25] (ang.).
- ↑ a b Beyond HTML5: Peer-to-Peer Conversational Video | Ericsson Research Blog [online], web.archive.org, 25 lutego 2017 [dostęp 2021-07-25] [zarchiwizowane z adresu 2017-02-25] (ang.).
- ↑ WebRTC 1.0: Real-time Communication Between Browsers [online], www.w3.org [dostęp 2021-07-25] (ang.).
- ↑ WebRTC – so much more than just video conferencing! [online], szimek.github.io [dostęp 2021-07-25] (ang.).
- ↑ HTML Standard [online], html.spec.whatwg.org [dostęp 2021-07-25] (ang.).
- ↑ draft-jesup-rtcweb-data-protocol-00 [online], datatracker.ietf.org [dostęp 2021-07-25] (ang.).
- ↑ WebRTC 1.0: Real-time Communication Between Browsers [online], www.w3.org [dostęp 2021-07-25] (ang.).
- ↑ Media Capture and Streams [online], www.w3.org [dostęp 2021-07-25] (ang.).
- ↑ a b c WebRTC 1.0: Real-Time Communication Between Browsers [online], www.w3.org [dostęp 2021-07-25] (ang.).
- ↑ Codecs used by WebRTC – Web media technologies | MDN [online], developer.mozilla.org [dostęp 2021-07-25] (ang.).
- ↑ JohnJ. Kennedy JohnJ., Catch the Babelfish: Irish telco devises a new kind of cloud phone [online], Silicon Republic, 1 listopada 2017 [dostęp 2021-07-25] (ang.).
- ↑ WebTorrent FAQ [online], webtorrent.io [dostęp 2021-07-25] (ang.).
- ↑ Microsoft EdgeM.E. Blog Microsoft EdgeM.E., ORTC API is now available in Microsoft Edge [online], Microsoft Edge Blog, 18 września 2015 [dostęp 2021-07-25] (ang.).
- ↑ Firefox Notes – Desktop [online], website-archive.mozilla.org [dostęp 2021-07-25] (ang.).
- ↑ Download Opera 18 for desktop – Blog [online], Opera News, 19 listopada 2013 [dostęp 2021-07-25] (ang.).
- ↑ GStreamer 1.14 release notes [online], gstreamer.freedesktop.org [dostęp 2021-07-25] (ang.).
- ↑ Codecs used by WebRTC – Web media technologies | MDN [online], developer.mozilla.org [dostęp 2021-07-29] (ang.).
- ↑ YouennY. Fablet YouennY., On the Road to WebRTC 1.0, Including VP8 [online], WebKit, 12 marca 2019 [dostęp 2021-07-29] (ang.).
- ↑ Huge Security Flaw Leaks VPN Users’ Real IP-Addresses * TorrentFreak [online] [dostęp 2021-07-25] (ang.).
Linki zewnętrzne
- H.H. Schulzrinne H.H., S.S. Casner S.S., RTP Profile for Audio and Video Conferences with Minimal Control, STD 65, RFC 3551, IETF, lipiec 2003, DOI: 10.17487/RFC3551, ISSN 2070-1721, OCLC 943595667 (ang.).
- RTP Payload for DTMF Digits, Telephony Tones, and Telephony Signals, RFC 4733, IETF, grudzień 2006, DOI: 10.17487/RFC4733, ISSN 2070-1721, OCLC 943595667 (ang.).
- Timothy B.T.B. Terriberry Timothy B.T.B., Definition of the Opus Audio Codec, RFC 6716, IETF, wrzesień 2012, DOI: 10.17487/RFC6716, ISSN 2070-1721, OCLC 943595667 (ang.).
- JM.J. Valin JM.J., C.C. Bran C.C., WebRTC Audio Codec and Processing Requirements, RFC 7874, IETF, maj 2016, DOI: 10.17487/RFC7874, ISSN 2070-1721, OCLC 943595667 (ang.).
|
|