WebRTC - Wikipedia
Jump to content
From Wikipedia, the free encyclopedia
API that supports browser-to-browser communication
WebRTC
Original authors
Justin Uberti
Peter Thatcher
Initial release
2011
; 15 years ago
2011
Stable release
1.0
/ May 4, 2018
; 7 years ago
2018-05-04
Written in
C++
JavaScript
Standard
w3
.org
/TR
/webrtc
License
BSD license
Website
webrtc
.org
Repository
webrtc
.googlesource
.com
WebRTC
Web Real-Time Communication
) is a
free and open-source
project providing
web browsers
and
mobile applications
with
real-time communication
(RTC) via
application programming interfaces
(APIs). It allows audio and video communication and streaming to work inside web pages by allowing direct
peer-to-peer
communication, eliminating the need to install
plugins
or download native apps.
Supported by
Apple
Google
Microsoft
Mozilla
, and
Opera
, WebRTC specifications have been published by the
World Wide Web Consortium
(W3C) and the
Internet Engineering Task Force
(IETF).
ICE
STUN
and
TURN
are the
NAT traversal
techniques used to connect to remote peers.
History
edit
In May 2010, Google bought
Global IP Solutions
or GIPS, a
VoIP
and
videoconferencing
software company that had developed many components required for RTC, such as codecs and echo cancellation techniques. Google open-sourced the GIPS technology and engaged with relevant standards bodies at the
IETF
and
W3C
to ensure industry consensus.
In May 2011,
Google
released an
open-source
project for browser-based real-time communication known as WebRTC.
10
This has been followed by ongoing work to standardize the relevant
protocols
in the
IETF
11
and browser APIs in the W3C.
12
In January 2011,
Ericsson
Labs built the first implementation of WebRTC using a modified
WebKit
library.
13
14
In October 2011, the
W3C
published its first draft for the spec.
15
WebRTC milestones include the first cross-browser video call (February 2013), first cross-browser data transfers (February 2014), and as of July 2014
Google Hangouts
was "kind of" using WebRTC.
16
The W3C draft API was based on preliminary work done in the
WHATWG
17
It was referred to as the ConnectionPeer API, and a pre-standards concept implementation was created at
Ericsson
Labs.
13
The WebRTC Working Group expects this specification to evolve significantly based on:
Outcomes of ongoing exchanges in the companion RTCWEB group at
IETF
18
to define the set of
protocols
that, together with this document, define
real-time communications
in web browsers. While no one signaling protocol is mandated,
SIP
over
WebSockets
RFC
7118
) is often used partially due to the applicability of SIP
19
to most of the envisaged communication scenarios as well as the availability of open-source software such as
JsSIP
Privacy issues
that arise when exposing local capabilities and local streams
Technical discussions within the group, on implementing data channels in particular
20
Experience gained through early experimentation
Feedback from other groups and individuals
In November 2017, the WebRTC 1.0 specification transitioned from Working Draft to Candidate Recommendation.
21
In January 2021, the WebRTC 1.0 specification transitioned from Candidate Recommendation to
Recommendation
Design
edit
Major components of WebRTC include several
JavaScript
APIs
getUserMedia
acquires the audio and video media (e.g., by accessing a device's camera and microphone).
22
RTCPeerConnection
enables audio and video communication between peers. It performs
signal processing
codec
handling, peer-to-peer communication, security, and
bandwidth
management.
23
RTCDataChannel
allows bidirectional communication of arbitrary data between peers. The data is transported using
SCTP
over
DTLS
24
It uses the same API as
WebSockets
and has very low
latency
25
The WebRTC API also includes a statistics function:
getStats
allows the web application to retrieve a set of statistics about WebRTC sessions. These statistics data are being described in a separate W3C document.
26
The WebRTC API includes
no provisions for signaling
, that is discovering peers to connect to and determine how to establish connections among them. Applications use
Interactive Connectivity Establishment
for connections and are responsible for managing sessions, possibly relying on any of
Session Initiation Protocol
, Extensible Messaging and Presence Protocol (
XMPP
),
Message Queuing Telemetry Transport
Matrix
, or another protocol. Signaling may depend on one or more servers.
27
28
RFC
7478
requires implementations to provide
PCMA
PCMU
RFC
3551
), Telephone Event as
DTMF
RFC
4733
), and
Opus
RFC
6716
audio codecs
as minimum capabilities. The PeerConnection, data channel and media capture browser APIs are detailed in the W3C specification.
W3C is developing ORTC (Object Real-Time Communications) for WebRTC.
29
Applications
edit
WebRTC allows browsers to stream files directly to one another, reducing or entirely removing the need for server-side file hosting.
WebTorrent
uses a WebRTC transport to enable peer-to-peer file sharing using the
BitTorrent
protocol in the browser.
30
Some
file-sharing
websites use it to allow users to send files directly to one another in their browsers, although this requires the uploader to keep the tab open until the file has been downloaded.
31
32
33
A few
CDNs
, such as the Microsoft-owned Peer5, use the client's bandwidth to upload media to other connected peers, enabling each peer to act as an edge server.
34
35
Although initially developed for web browsers, WebRTC has applications for non-browser devices, including mobile platforms and
IoT devices
. Examples include browser-based
VoIP
telephony, also called cloud phones or web phones, which allow calls to be made and received from within a web browser, replacing the requirement to download and install a softphone.
36
Support
edit
WebRTC is supported by the following browsers (incomplete list; oldest supported version specified):
Desktop PC
Microsoft Edge
12+
37
Google Chrome
28+
Mozilla Firefox
22+
38
Safari
11+
39
Opera
18+
40
Vivaldi
1.9+
Brave
Android
Google Chrome 28+ (enabled by default since 29)
Mozilla Firefox 24+
41
Opera Mobile 12+
ChromeOS
Firefox OS
BlackBerry 10
iOS
MobileSafari/WebKit (
iOS 11
+)
Tizen
3.0
Codec support across browsers
edit
WebRTC establishes a standard set of codecs which all compliant browsers are required to implement (underlined). Some browsers may also support other codecs.
42
Video codec compatibility
Codec name
Profile
Browser compatibility
H.264
Constrained Baseline (CB)
Chrome, Edge, Firefox, Safari (12.1+)
VP8
Chrome (52+), Edge, Firefox, Safari
43
VP9
Chrome (48+), Firefox
AV1
Chrome (113+), Firefox (136+)
Audio codec compatibility
Codec name
Browser compatibility
Opus
Chrome, 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
Vulnerability
edit
In January 2015,
TorrentFreak
reported a serious security flaw in browsers supporting WebRTC, that compromised the security of
VPN
tunnels by exposing a user's true
IP address
44
The IP address read requests are not visible in the browser's developer console, and they are not blocked by most
ad blocking
and
security
add-ons, enabling online tracking despite precautions.
45
It has been reported that the cause of the address leak is not a bug that can be patched, but is foundational to the way WebRTC operates; however, there are several solutions to mitigate the problem. WebRTC leakage can be tested for, and solutions are offered for most browsers.
46
WebRTC can be disabled, if not required, in most browsers. The
uBlock Origin
add-on can fix this problem (as some browsers now fix this problem by themselves, from uBlock Origin v1.38 onwards this option has been disabled on these browsers
47
).
Limitations
edit
Like
HTTP3
QUIC
, WebRTC cannot be tunneled over TOR because TOR doesn't support UDP, thus most WebRTC applications don't work without bypassing TOR or using TURN servers.
See also
edit
CU-RTC-WEB
Real-time Transport Protocol
(also known as RTP) is used internally by WebRTC (specifically, it uses SRTP)
48
References
edit
"WebRTC 1.0: Real-time Communication Between Browsers"
World Wide Web Consortium
. 27 September 2018.
Archived
from the original on 7 April 2019
. Retrieved
25 March
2019
"Src/webrtc - Git at Google"
Archived
from the original on 2018-04-23
. Retrieved
2018-04-22
"WebRTC License"
How WebRTC Is Revolutionizing Telephony
Archived
2014-04-07 at the
Wayback Machine
. Blogs.trilogy-lte.com (2014-02-21). Retrieved on 2014-04-11.
"Web Real-Time Communications (WebRTC) transforms the communications landscape as it becomes a World Wide Web Consortium (W3C) Recommendation and Internet Engineering Task Force (IETF) standards"
World Wide Web Consortium
. 26 Jan 2021.
Archived
from the original on 27 July 2022
. Retrieved
27 Jan
2021
"Rtcweb Status Pages"
tools.ietf.org
Archived
from the original on 2020-04-20
. Retrieved
2021-02-18
"Introduction"
W3C WebRTC
"Are the WebRTC components from Google's acquisition of Global IP Solutions?"
WebRTC
. Archived from
the original
on 7 June 2011
. Retrieved
6 February
2018
Wauters, Robin (18 May 2010).
"Google makes $68.2 million cash offer for Global IP Solutions"
TechCrunch
Archived
from the original on 7 February 2018
. Retrieved
6 February
2018
Harald Alvestrand (2011-05-31).
"Google release of WebRTC source code"
. public-webrtc@w3.org.
Archived
from the original on 2013-02-27
. Retrieved
2012-09-12
"Charter of the Real-Time Communication in WEB-browsers (rtcweb) working group"
Archived
from the original on 2013-11-11
. Retrieved
2013-11-11
"WebRTC 1.0: Real-time Communication Between Browsers"
. W3.org.
Archived
from the original on 2012-09-05
. Retrieved
2012-09-12
"Beyond HTML5: Peer-to-Peer Conversational Video"
Ericsson Research blog
. Labs.ericsson.com. 25 January 2011. Archived from
the original
on 25 February 2017
. Retrieved
21 March
2021
Stefan Håkansson; Stefan Ålund (26 May 2011).
"Beyond HTML5: Experiment with Real-Time Communication in a Browser"
Ericsson Research blog
Archived
from the original on 7 February 2018
. Retrieved
6 February
2018
"WebRTC 1.0: Real-time Communication Between Browsers (W3C Working Draft 27 October 2011)"
World Wide Web Consortium
. 27 October 2011.
Archived
from the original on 29 October 2011
. Retrieved
6 February
2018
Nowak, Szymon.
"WebRTC: So Much More Than Videoconferencing"
GitHub
Archived
from the original on 7 February 2018
. Retrieved
6 February
2018
"Introduction — HTML Standard"
. Whatwg.org.
Archived
from the original on 2014-08-16
. Retrieved
2012-09-12
"Rtcweb Status Pages"
. Tools.ietf.org.
Archived
from the original on 2012-09-05
. Retrieved
2012-09-12
SIP Trunking, MTPL (18 July 2023).
"SIP Trunking VoIP with WebRTC SDK"
Moon Technolabs
Archived
from the original on 5 August 2023
. Retrieved
18 July
2023
Jesup, Randell; Loreto, Salvatore; Tüxen, Michael (5 March 2012).
"draft-jesup-rtcweb-data-protocol-00 - WebRTC Data Channel Protocol"
. Tools.ietf.org.
Archived
from the original on 2012-10-31
. Retrieved
2012-09-12
"WebRTC 1.0: Real-time Communication Between Browsers (W3C Candidate Recommendation 02 November 2017)"
. 2 November 2017.
Archived
from the original on 2 November 2017
. Retrieved
25 March
2019
"Media Capture and Streams: getUserMedia"
. W3C. 2013-09-03.
Archived
from the original on 2014-01-02
. Retrieved
2014-01-15
"WebRTC: RTCPeerConnection Interface"
. W3C. 2013-09-10.
Archived
from the original on 2012-09-05
. Retrieved
2014-01-15
Jesup, Randell; Loreto, Salvatore; Tüxen, Michael (January 2021).
"RFC 8831 - WebRTC Data Channels"
datatracker.ietf.org
Archived
from the original on 2022-03-10
. Retrieved
2022-03-10
"WebRTC: RTCDataChannel"
. W3C. 2013-09-10.
Archived
from the original on 2012-09-05
. Retrieved
2014-01-15
"Identifiers for WebRTC's Statistics API"
. W3C. 2014-09-29.
Archived
from the original on 2017-07-15
. Retrieved
2017-12-02
Tsahi Levent-Levi (13 April 2020).
"WebRTC Server: What is it exactly?"
BlogGeek.me
Archived
from the original on 11 May 2020
. Retrieved
10 June
2020
Tsahi Levent-Levi (13 November 2014).
"Matrix.org and WebRTC: An Interview with Matthew Hodgson"
BlogGeek.me
Archived
from the original on 25 February 2021
. Retrieved
10 June
2020
"W3C ORTC (Object Real-time Communications) Community Group"
. 19 August 2014.
Archived
from the original on 2014-10-29
. Retrieved
2014-10-29
"WebTorrent FAQ"
webtorrent.io
Archived
from the original on 2022-03-11
. Retrieved
2022-03-10
"How to Transfer Files Between Linux, Android, and iOS Using Snapdrop"
MUO
. 2021-08-04.
Archived
from the original on 2022-01-29
. Retrieved
2022-03-10
Pinola, Melanie (2014-04-07).
"The easiest and quickest way to transfer files between devices on the same network"
Computerworld
Archived
from the original on 2022-06-28
. Retrieved
2022-03-10
"FilePizza: share files without the middleman in your browser - gHacks Tech News"
gHacks Technology News
. 2015-05-12.
Archived
from the original on 2022-01-23
. Retrieved
2022-03-10
Foley, Mary Jo.
"Microsoft acquires Peer5 to supplement Teams' live video streaming"
ZDNet
Archived
from the original on 2022-03-10
. Retrieved
2022-03-10
"Overview - Peer5 P2P Docs"
docs.peer5.com
Archived
from the original on 2022-03-16
. Retrieved
2022-03-10
"Catch the Babelfish: Irish telco devises a new kind of cloud phone"
. November 2017.
Archived
from the original on 2017-11-01
. Retrieved
2017-11-20
"ORTC API is now available in Microsoft Edge"
. Microsoft. 2015-09-18.
Archived
from the original on 2015-10-09
. Retrieved
2015-09-20
Firefox Notes - Desktop
Archived
2014-08-21 at the
Wayback Machine
. Mozilla.org (2013-06-25). Retrieved on 2014-04-11.
"Safari 11.0"
. Apple Inc.
Archived
from the original on 14 November 2017
. Retrieved
6 June
2017
Opera News
Archived
2015-09-07 at the
Wayback Machine
. blogs.opera.com (2013-11-19). Retrieved on 2015-09-17.
Firefox Notes - Desktop
Archived
2021-04-01 at the
Wayback Machine
. Mozilla.org (2013-09-17). Retrieved on 2014-08-04.
"Codecs used by WebRTC - Web media technologies | MDN"
developer.mozilla.org
Archived
from the original on 2021-07-27
. Retrieved
2021-07-29
Fablet, Youenn (2019-03-12).
"On the Road to WebRTC 1.0, Including VP8"
WebKit
Archived
from the original on 2021-07-29
. Retrieved
2021-07-29
Huge Security Flaw Leaks VPN Users’ Real IP-addresses
Archived
2021-01-08 at the
Wayback Machine
TorrentFreak.com (2015-01-30). Retrieved on 2015-02-21.
STUN IP Address requests for WebRTC
Archived
2015-02-18 at the
Wayback Machine
Retrieved on 2015-02-21.
Timmerman, Crystal (28 February 2022).
"WebRTC leaks real IP addresses (even with VPN)"
IPVanish
Archived
from the original on 13 August 2022
. Retrieved
12 August
2022
Raymond Hill (17 Sep 2021).
"Prevent WebRTC from leaking local IP address"
uBlock Origin documentation
Archived
from the original on 21 February 2016
. Retrieved
18 Dec
2021
"Introduction to the Real-time Transport Protocol (RTP) - Web APIs | MDN"
developer.mozilla.org
. 26 July 2024.
Further reading
edit
Proust, S., ed. (May 2016).
Additional WebRTC Audio Codecs for Interoperability
IETF
doi
10.17487/RFC7875
RFC
7875
. Retrieved
2016-10-12
Valin, J. M.; Bran, C. (May 2016).
WebRTC Audio Codec and Processing Requirements
IETF
doi
10.17487/RFC7874
RFC
7874
. Retrieved
2016-10-12
Roach, A. B. (March 2016).
WebRTC Video Processing and Codec Requirements
IETF
doi
10.17487/RFC7742
RFC
7742
. Retrieved
2016-10-12
Perumal, M.; Wing, D.; Ravindranath, R.; Reddy, T.; Thomson, M. (October 2015).
Session Traversal Utilities for NAT (STUN) Usage for Consent Freshness
IETF
doi
10.17487/RFC7675
RFC
7675
. Retrieved
2016-10-12
Holmberg, C.; Hakansson, S.; Eriksson, G. (March 2015).
Web Real-Time Communication Use Cases and Requirements
IETF
doi
10.17487/RFC7478
RFC
7478
. Retrieved
2016-10-12
External links
edit
Official website
W3C Web Real-Time Communications Working Group
IETF Real-Time Communication in WEB-browsers (rtcweb) Working Group
Video chat demo app based on WebRTC
libdatachannel, open-source WebRTC network library
Web browsers
Features, standards & protocols
Features
Bookmarks
Extensions
Privacy mode
Web standards
HTML
v5
CSS
DOM
JavaScript
WebAssembly
Web storage
IndexedDB
WebGL
WebGPU
Protocols
HTTP
Encryption
third-party
OCSP
WebRTC
WebSocket
Active
Blink
-based
Proprietary
Google Chrome
Arc
Atlas
Avast
Cốc Cốc
Comet
Comodo
Ecosia
Epic
Huawei
Maxthon
Microsoft Edge
Opera
Mobile
Puffin
QQ
Samsung
Silk
Sleipnir
SRWare
UC
Vivaldi
Whale
Yandex
FOSS
Chromium
Brave
Dooble
Falkon
Otter
Supermium
ungoogled
Gecko
-based
Firefox
Floorp
GNU IceCat
LibreWolf
Midori
Mullvad
SlimBrowser
SeaMonkey
(uses unnamed Gecko
fork
Tor
Waterfox
Zen
Goanna
-based
Basilisk
K-Meleon
Pale Moon
WebKit
-based
Safari
GNOME Web
iCab
Orion
Multi-
engine
360
DuckDuckGo
Konqueror
Lunascape
NetFront
qutebrowser
Other
Dillo
eww
Flow
Ladybird
Links
Lynx
NetSurf
Opera Mini
w3m
Discontinued
Blink
-based
Beaker
Citrio
Flock
Redcore
Rockmelt
SalamWeb
Sputnik
Torch
Gecko
-based
Beonex
Camino
Classilla
Conkeror
Firefox Lite
Galeon
Ghostzilla
IceDragon
Kazehakase
Kylo
Lotus
MicroB
Minimo
Mozilla suite
PirateBrowser
Pogo
Strata
Swiftfox
TenFourFox
Timberwolf
Waterfox Classic
xB
MSHTML
-based
Internet Explorer
AOL
Deepnet
GreenBrowser
MediaBrowser
MSN Explorer
MSN Program Viewer
NeoPlanet
NetCaptor
SpaceTime
ZAC
WebKit
-based
Arora
BOLT
Dolphin
Fluid
Google TV
Iris
Mercury
Nokia Symbian
OmniWeb
Opera Coast
Origyn
QtWeb
Shiira
Steel
surf
Uzbl
WebPositive
xombrero
Other
abaco
Amaya
Arachne
Arena
Blazer
Cake
CM
Deepfish
Edge Legacy
ELinks
Gazelle
HotJava
IBM Home Page Reader
IBM WebExplorer
IBrowse
Internet Explorer for Mac
KidZui
Line Mode
Mosaic
MSN TV
NetPositive
Netscape
Skweezer
Skyfire
ThunderHawk
Vision
WinWAP
WorldWideWeb
List
Comparison
Category
Web interfaces
Server-side
Protocols
HTTP
v2
v3
Encryption
WebDAV
CGI
SCGI
FCGI
AJP
WSRP
WebSocket
Server APIs
C NSAPI
C ASAPI
C ISAPI
COM ASP
Jakarta Servlet
container
CLI OWIN
ASP.NET Handler
Python WSGI
Python ASGI
Ruby Rack
JavaScript JSGI
Perl PSGI
Portlet
container
Apache modules
mod_include
mod_jk
mod_lisp
mod_mono
mod_parrot
mod_perl
mod_php
mod_proxy
mod_python
mod_wsgi
mod_ruby
Phusion Passenger
Topics
Web service
vs.
Web resource
WOA
vs.
ROA
Open API
Webhook
Application server
comparison
Scripting
Client-side
Browser APIs
C NPAPI
LiveConnect
XPConnect
C NPRuntime
C PPAPI
NaCl
ActiveX
BHO
XBAP
Web APIs
WHATWG
Audio
Canvas
DOM
SSE
Video
WebSockets
Web messaging
Web storage
Web worker
XMLHttpRequest
W3C
DOM events
EME
File
Geolocation
IndexedDB
MSE
SVG
WebAssembly
WebAuthn
WebGPU
WebRTC
WebXR
Khronos
WebCL
WebGL
Others
Gears
Web SQL Database
(formerly W3C)
WebUSB
Topics
Ajax
and
Remote scripting
vs.
DHTML
Browser extension
Cross-site scripting
and
CORS
Hydration
Mashup
Persistent data
Web IDL
Scripting
Related topics
Frontend and backend
Microservices
REST
GraphQL
Push technology
Solution stack
Web page
Static
Dynamic
Web standards
Web API security
Web application
Rich
Single-page
Progressive
Web framework
Retrieved from "
Categories
WebRTC
Peer-to-peer
Software using the BSD license
Web development
Web standards
Hidden categories:
Webarchive template wayback links
Articles with short description
Short description is different from Wikidata
WebRTC
Add topic
US