WebRTC — технология веб-связи¶
WebRTC (Web Real-Time Communication) — открытый стандарт браузерных технологий, обеспечивающий прямой обмен аудио-, видео- и произвольными данными между участниками в реальном времени без установки сторонних плагинов. Стандарт разработан рабочей группой W3C при участии проекта IETF и поддерживается основными браузерами — Chrome, Firefox, Safari, Edge, Opera, а также мобильными платформами Android и iOS.
¶История
Инициатива создания WebRTC принадлежит компании Google, которая в 2011 году представила первые реализации на базе приобретённой технологии GIPS (Global IP Solutions). В том же году проект был передан в IETF и W3C для стандартизации. Первые спецификации описывали передачу медиапотоков (audio/video), позднее появился стандарт RTCDataChannel для обмена произвольными данными.
В 2013 году рабочая группа W3C опубликовала первые черновики API, а в 2017–2018 годах спецификации получили статус рекомендованных. К 2020-м годам WebRTC стал де-факто стандартом для браузерной реалтайм-связи и был включён в набор технологий W3C Web Platform.
¶Архитектура и принцип работы
WebRTC объединяет несколько уровней:
- Транспортный уровень — протоколы ICE, STUN и TURN для установления соединения между участниками, в том числе за NAT и файрволами.
- Сигнальный канал — не входит в сам стандарт, но обязателен для обмена метаданными (SDP-описаниями медиа) между собеседниками. Реализуется любым доступным каналом: WebSocket, HTTP, XMPP и др.
- Медиауровень — захват, кодирование и декодирование звука и видео. Аудио кодируется Opus, видео — VP8, VP9, H.264 или AV1.
- Уровень данных — RTCDataChannel, надёжный или ненадёжный канал передачи произвольных бинарных данных поверх SCTP.
¶Установление соединения
Для прямого peer-to-peer соединения WebRTC использует механизм ICE (Interactive Connectivity Establishment). Каждая сторона формирует кандидатов — сетевые адреса и порты, через которые возможно соединение. Кандидаты обмениваются через сигнальный канал. Если прямое соединение невозможно (типичный случай — симметричный NAT), используется ретрансляционный сервер TURN, который пересылает трафик между участниками.
Протокол STUN позволяет клиенту определить свой публичный IP-адрес за NAT. Механизм ICE последовательно пробует различные комбинации кандидатов, выбирая наилучший рабочий путь.
¶Криптографическая защита
Все медиапотоки и данные в WebRTC шифруются по умолчанию с использованием DTLS ( Datagram Transport Layer Security) для обмена ключами и SRTP (Secure Real-time Transport Protocol) для защиты медиапотоков. Шифрование обязательно: браузеры не позволяют передавать медиа в открытом виде.
¶Основные API
| API | Назначение |
|---|---|
RTCPeerConnection | Установление и поддержание peer-to-peer соединения |
RTCDataChannel | Передача произвольных данных между участниками |
getUserMedia | Доступ к микрофону и камере |
RTCRtpSender/Receiver | Управление отправкой и приёмом медиапотоков |
¶Применение
WebRTC применяется в широком спектре приложений:
- Видеоконференции — Zoom, Google Meet, Discord, Microsoft Teams используют WebRTC как основу медиатранспорта.
- Голосовая связь — VoIP-сервисы, звонки через браузер в банках и колл-центрах.
- Обмен файлами — передача данных напрямую между браузерами через RTCDataChannel, в том числе в мессенджерах.
- Игры и стриминг — синхронизация состояния, прямые трансляции.
- Удалённое управление и мониторинг — прямая передача видео с устройств.
В России технология активно используется в отечественных платформах видеосвязи, в том числе в системах дистанционного образования и телемедицине.
¶Ограничения
WebRTC не обеспечивает сигнальный канал — разработчик самостоятельно реализует обмен SDP-предложениями и ответами. Технология требует наличия TURN-серверов для работы в сложных сетевых сценариях, что создаёт нагрузку на инфраструктуру. Качество соединения зависит от пропускной способности и задержек сети. Отсутствие встроенной групповой коммуникации: для многопользовательских сессий требуется либо mesh-топология (каждый с каждым), либо серверная SFU/MCU-архитектура.
¶Стандартизация
Спецификации WebRTC ведутся одновременно в двух организациях: W3C отвечает за браузерный JavaScript API, IETF — за сетевые протоколы (ICE, DTLS-SRTP, SCTP-over-UDP). Основные документы: RFC 8825 (обзор архитектуры), RFC 8831 (передача медиа), RFC 8834 (маршрутизация).
Источники:
- W3C WebRTC Working Group — спецификации API
- IETF RTCWEB Working Group — RFC 8825, 8831, 8834
- MDN Web Docs — WebRTC API
- Книга «WebRTC: Up and Running» (B. Collomosse)
