Открыть сервисСервис

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)
Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru