WebRTC - Web Real-Time Communication ======================================= .. panels:: :container: container pb-4 :column: col-lg-12 p-2 :card: shadow .. panels:: :container: container pb-4 :column: col-lg-12 p-2 :card: shadow **What is WebRTC?** WebRTC (Web Real-Time Communication) is an open-source project and protocol that enables real-time audio, video, and data sharing directly between browsers and devices without the need for plugins or additional software. .. panels:: :container: container pb-4 :column: col-lg-12 p-2 :card: shadow **Why is WebRTC useful?** * Enables peer-to-peer communication for video calls, voice calls, and data sharing. * Eliminates the need for intermediary servers for media traffic, reducing latency. * Built into modern browsers, so no installation is required. * Supports secure, encrypted communication. .. panels:: :container: container pb-4 :column: col-lg-12 p-2 :card: shadow **How it works?** * WebRTC uses signaling (via external servers) to exchange session information. * It performs NAT traversal with ICE, STUN, and TURN protocols. * Peers establish a direct connection to share media streams or data channels. * Media streams are encoded, transmitted, and decoded in real-time using codecs. * Encryption is applied to ensure privacy. .. panels:: :container: container pb-4 :column: col-lg-12 p-2 :card: shadow **Where is WebRTC used?** * Video conferencing apps (e.g., Google Meet, Zoom Web client). * Real-time chat and collaboration tools. * Live streaming and broadcasting platforms. * File sharing applications. * IoT device communications. .. panels:: :container: container pb-4 :column: col-lg-12 p-2 :card: shadow **Which OSI layer does this protocol belong to?** * WebRTC operates mainly at the Application Layer (Layer 7). * It relies on lower layers (Transport and Network) for data transmission. * It also involves protocols like ICE/STUN/TURN for connection management. .. panels:: :container: container pb-4 :column: col-lg-12 p-2 :card: shadow **Is WebRTC Windows specific?** No. * WebRTC is platform-independent. * Supported on Windows, macOS, Linux, Android, iOS, and browsers on all these platforms. .. panels:: :container: container pb-4 :column: col-lg-12 p-2 :card: shadow **Is WebRTC Linux specific?** No. * WebRTC is not Linux specific. * It runs on any platform with compatible browsers or WebRTC implementations. .. panels:: :container: container pb-4 :column: col-lg-12 p-2 :card: shadow **Which Transport Protocol is used by WebRTC?** * WebRTC uses UDP primarily for real-time low-latency media transport. * TCP is used as a fallback if UDP is blocked. * Data channels can use SCTP over DTLS for reliable data transport. .. panels:: :container: container pb-4 :column: col-lg-12 p-2 :card: shadow **Which Port is used by WebRTC?** * WebRTC uses dynamic ports negotiated during session setup. * It typically uses UDP ports 1024-65535 for media. * STUN and TURN servers commonly use ports 3478 (UDP/TCP). .. panels:: :container: container pb-4 :column: col-lg-12 p-2 :card: shadow **Is WebRTC using Client server model?** * WebRTC primarily uses a peer-to-peer model for media and data exchange. * However, signaling (session setup) requires servers. * TURN servers may be used to relay traffic when direct peer-to-peer connectivity fails. .. panels:: :container: container pb-4 :column: col-lg-12 p-2 :card: shadow Topics in this section, * :ref:`Learnings in this section ` * :ref:`Terminology ` * :ref:`Version Info ` * :ref:`WebRTC Version&IEEE Details ` * :ref:`WebRTC Basic Setup on Ubuntu using IPv4 ` * :ref:`WebRTC Basic Setup on Ubuntu using IPv6 ` * :ref:`WebRTC Protocol Packet Details ` * :ref:`WebRTC Usecases ` * :ref:`WebRTC Basic Features ` * :ref:`Reference links ` .. _WebRTC_step1: .. tab-set:: .. tab-item:: Learnings in this section * In this section, you are going to learn .. _WebRTC_step2: .. tab-set:: .. tab-item:: Terminology * Terminology .. _WebRTC_step3: .. tab-set:: .. tab-item:: Version Info * Version Info .. _WebRTC_step5: .. tab-set:: .. tab-item:: WebRTC Version&RFC Details * rfc details .. _WebRTC_step18: .. tab-set:: .. tab-item:: WebRTC Basic Setup on Ubuntu using IPv4 * setup .. _WebRTC_step19: .. tab-set:: .. tab-item:: WebRTC Basic Setup on Ubuntu using IPv6 * setup .. _WebRTC_step6: .. tab-set:: .. tab-item:: WebRTC Protocol Packet Details * packet details .. _WebRTC_step7: .. tab-set:: .. tab-item:: WebRTC Usecases * usecases .. _WebRTC_step8: .. tab-set:: .. tab-item:: WebRTC Basic Features * features .. _WebRTC_step17: .. tab-set:: .. tab-item:: Reference links * Reference links