![what is WebRTC](png/what-is-webrtc.png)
What is WebRTC: Revolutionizing online communication
SEPTEMBER 27, 2023
Author: Kirill Shnyrev - Browsers Team Lead at Multilogin
WebRTC is a revolutionary suite of technologies and protocols designed to facilitate instant, real-time communication over the Internet. This technology enables web browsers and compatible apps to share audio, video, and data effortlessly. It eliminates the need for additional plugins or software.
WebRTC makes creating and launching real-time communication apps on the web more accessible. This technology allows for more efficient and engaging online interactions.
This article offers an in-depth look into WebRTC, how it works, and its various applications. Whether you're a developer, a business owner, or simply someone curious about web technologies, this guide will provide extensive insights into WebRTC.
What is WebRTC?
WebRTC is a collection of technologies and protocols that enables real-time communication, such as audio, video, and data sharing, directly between web browsers or other compatible applications.
It eliminates the need for third-party plugins or software installations, making developing and deploying real-time communication applications on the web more accessible.
Applications of WebRTC
WebRTC has become a popular technology for building applications such as video conferencing, voice calling, live streaming, and collaborative tools directly in web browsers.
WebRTC is not just for video calls. Its applications are vast and varied:
Telehealth: Doctors and patients can have a secure, real-time video consultation.
Online Education: Instructors and students can interact as if they were in a physical classroom.
Business Conferencing: Businesses can hold global meetings without expensive conferencing software.
Live Streaming: Real-time data channels make live streaming more efficient.
WebRTC in Modern Browsers
WebRTC is supported by modern browsers like Google Chrome, Firefox, and Safari, making it widely accessible for web application development. JavaScript APIs enable WebRTC functionalities, making it easier for developers to integrate real-time communication features.
Real-Time Communication in Web Applications
WebRTC equips web applications with the capabilities for real-time interactions, such as voice and video conversations, transferring files, and sharing your computer screen.
In other words, WebRTC simplifies making video calls, whether catching up with friends or conducting business meetings, by offering a comprehensive set of features for a seamless experience.
How Does WebRTC work?
Signaling
Before establishing a direct connection, the communicating parties must exchange information about network addresses and session metadata. This signaling process is not standardized in WebRTC and can be implemented using different protocols, such as WebSocket or HTTP.
Media Stream Capture
WebRTC allows web browsers to access media devices, such as webcams and microphones, using the getUserMedia API. This enables the capture of audio and video streams from the user's device.
Peer Connections
Once the signaling process is complete and both parties have exchanged the necessary information, a direct peer-to-peer connection is established between the browsers. The RTCPeerConnection API facilitates this connection.
NAT Traversal
Network Address Translation (NAT) is a standard route used to allow multiple devices to share a public IP address. WebRTC incorporates techniques, such as ICE (Interactive Connectivity Establishment) and STUN (Session Traversal Utilities for NAT), to traverse NATs and establish direct communication between peers.
Codec Negotiation
WebRTC supports a range of audio and video codecs to encode and decode media streams. The browsers negotiate the supported codecs and agree on a standard to ensure interoperability.
Encryption and Security
WebRTC ensures security and privacy through encryption. It uses Datagram Transport Layer Security (DTLS) to encrypt the media streams, protecting against eavesdropping and tampering.
Media Transmission
Once the connection is established and the codecs are negotiated, the media streams are transmitted directly between the browsers using the Real-Time Protocol (RTP) over User Datagram Protocol (UDP) or Transmission Control Protocol (TCP).
Data Channels
WebRTC also includes a DataChannel API, which enables peer-to-peer data transfer between browsers. It allows developers to establish a reliable, ordered, and encrypted channel for sending arbitrary data, which can be used for chat, file sharing, and other data-intensive applications.
Interactive Connectivity Establishment (ICE) Framework
ICE is a comprehensive framework encompassing multiple techniques, including STUN and TURN, to enable efficient NAT traversal and establish direct peer-to-peer connections.
With ICE, WebRTC applications can dynamically adapt to various network configurations and establish real-time communication even in challenging network environments.
Key Aspects of ICE
NAT Traversal: ICE's primary purpose is to enable communication between devices behind different NATs.
Candidate Gathering: ICE gathers a list of candidate addresses that can be used for communication.
Connectivity Checks: ICE performs connectivity checks to determine the best candidate pair for communication.
Candidate Prioritization: ICE assigns priorities to the gathered candidates based on address type, network conditions, and user preferences.
Handling Firewall Traversal: ICE also addresses firewall traversal by using techniques such as sending STUN packets over different ports to discover open ports in firewalls.
STUN vs TURN
STUN and TURN are both techniques used in WebRTC for network traversal. STUN is used for address discovery and helps establish direct peer-to-peer connections, while TURN servers act as relays to facilitate communication when direct connectivity is not possible.
STUN (Session Traversal Utilities for NAT):
STUN is a protocol defined in RFC 5389.
STUN enables a client to discover its public IP address and determine the type of NAT it is behind.
It allows a client to gather information about its network configuration, including mapping its private IP address to a public IP address and port.
Clients use STUN servers to send requests and obtain responses containing their public IP address and port.
The client uses the information from an STUN server to establish direct peer-to-peer connections whenever possible.
STUN does not provide a relay function. It merely assists in the discovery of network addresses and aids in the establishment of direct connections.
TURN (Traversal Using Relays around NAT):
TURN is a protocol defined in RFC 5766.
TURN servers, also known as relays, act as intermediaries between devices to relay media streams.
When direct peer-to-peer communication is impossible due to restrictive network conditions, devices can use a TURN server to relay their media streams.
The TURN server receives media streams from one device (the sender) and forwards them to the other device (the receiver), bypassing network restrictions like symmetric NATs or firewalls.
TURN servers have public IP addresses directly accessible outside the restricted network, allowing devices behind NATs or firewalls to establish connections with the TURN server.
TURN servers introduce an additional network hop and may incur increased latency and bandwidth usage due to the relay function.
TURN servers typically support encrypted relay of media streams to ensure security and privacy.
STUN Server IP Address Revelation
A STUN (Session Traversal Utilities for NAT) server assists in revealing your public IP address via address discovery:
NAT and IP Address Mapping: Devices behind a NAT router have private IPs. These are inaccessible from the internet.
STUN Request: To find its public IP, your device sends a STUN request to the server with the required info.
Network Path: The STUN request travels over the internet through your router, which changes the source IP to the router's public IP.
STUN Response: The server replies with your public IP and port.
Address Revelation: Your device extracts this info, showing how it's seen externally.
Communication Use: The obtained public IP and port allow direct peer-to-peer communication.
Notably, the STUN server doesn't expose your IP to all. It helps your device discover its public details, and your device decides how to share them.
TURN Server IP Address Concealment
A TURN (Traversal Using Relays around NAT) server doesn't directly reveal your IP:
Media Relay: When direct peer-to-peer connections fail due to network issues, devices use a TURN server as a relay.
Encrypted Relay: TURN servers encrypt media before relaying for security.
Address Translation: Other devices see the TURN server's IP and port, not the original devices'.
Providing TURN Server Info: Devices know the TURN server's IP and port through external signaling.
Client-to-TURN Connection: Devices connect with the TURN server for relaying and control.
Privacy Focus: Reputable TURN servers prioritize privacy, disclosing data only as legal or security required.
In summary, a TURN server does not directly expose the IP addresses of the communicating devices to others. It acts as a relay for media streams, translating addresses and ensuring secure communication between devices that cannot establish a direct connection.
The TURN server's IP address is known to the devices involved in the communication, but it is not indicative of the IP addresses of the communicating devices.
Advantages and Limitations of WebRTC
Pros
No Plugins Required: Everything is browser-based.
High Quality: WebRTC offers high-quality voice and video communication.
Secure: All communications are encrypted.
Cons
Bandwidth: Each user must establish a peer-to-peer connection, which can be bandwidth-intensive.
Server Costs: For larger implementations, powerful servers may be required.
Conclusion
WebRTC has significantly impacted the landscape of real-time communication on the web. Its versatility and ease of use make it a go-to technology for developers and businesses. As we continue to see advancements in this field, WebRTC promises to offer even more exciting possibilities for real-time communication.
FAQs
What is WebRTC used for?
WebRTC is used for enabling real-time communication in web applications. It supports audio and video communication, data transfers, and more.
How does WebRTC connection work?
WebRTC works by establishing a peer-to-peer connection between browsers after a signaling process. It uses various APIs for capturing media and transferring data.
Does Google own WebRTC?
No, WebRTC is an open-source project supported by various companies, including Google.
Is WebRTC necessary?
WebRTC has become a standard for real-time communication on the web, making it essential for modern web applications.