Web real-time communication (WebRTC) стандарт, который появился совсем недавно и нацелен на осуществление общения в реальном времени с помощью веб-браузера с использованием одно ранговой сети.
Проект WebRTC является открытым и его целью является позволить браузерам нативно поддерживать пиринговую передачу данных в реальном времени.
В настоящее время много веб-сервисов используют RTC (связь в режиме реального времени), но при этом требуется установка приложений или специальных плагинов. К примеру – Skype, Facebook (так же работает через Skype) и Google Hangouts (использует плагин Google Talk). Установка и обновление плагинов может быть достаточно трудоёмким и нудным процессом, после которого могут появляться новые ошибки. С этой точки зрения технология WebRTC действительно привносит множество новшеств, таких как:
- Нет необходимости в лицензировании
- Интеграция являет собой процесс с использованием стандартных Web API
- Отсутствие проприетарных плагинов
- Нет необходимости в скачивании и установке чего-либо, достаточно просто зайти на веб-страницу.
Целями данной технологии являются, главным образом – минимум трудозатрат при связи, поддержка большинства браузеров, поддержка популярных в данный момент сервисов для голосовой или видеосвязи – Skype, WhatsApp и т.д. Главное – уменьшение капитальных затрат и повышение эффективности связи при использовании данной разработки.
Основные моменты
До первой коммуникации браузеры «не знают» о существовании друг друга
JavaScript управляет процессом установки соединения через сервер
Потоки медиа-данных используют кратчайшие пути с целью уменьшения задержки. На схеме ниже изображен процесс соединения абонентов:
Для веб-приложения WebRTC необходима следующая информация:
- Получение доступа к потоковой передачи голоса иили видео данных
- Получение сетевой информации – сетевой адрес, порт и обмен данной информацией с другими пирами
- Синхронизация сигнальной информации для открытия и закрытия сессий, выявления ошибок
- Обмен информацией о совместимости таких параметров как: тип браузера, разрешение и тип кодека
- Соединение входящего и исходящего потока медиа-данных
Что касается сигнализации при использовании данной технологии, первоначальной идеей было использовать SDP (Session Description Protocol), однако данный подход выявил несколько неразрешимых проблем. IETF принял решение стандартизировать протокол JSEP (Javascript Session Establishment Protocol), что дословно переводится как протокол открытия сессии с помощью Javascript. JSEP предоставляет интерфейс для приложения, позволяющий оперировать локальными и удаленными описаниями сессий. Подход с использованием данного протокола делегирует ответственность по управлению состоянием сигнализации исключительно приложению.
Что же с точки зрения безопасности?
Есть несколько путей, которыми может быть скомпрометировано приложение или плагин RTC:
- Незашифрованные медиа-данные могут быть перехвачены между абонентами или между абонентом и сервером
- Приложение может записывать звонки и распространять их без ведома пользователя
- Вирусы могут установлены вместе с приложением или плагином при установке из неблагонадежного источника
В технологии WebRTC было добавлено несколько функций, которые позволяют избежать вышеописанного:
- Реализации WebRTC используют безопасные протоколы, такие как DTLS и SRTP
- Шифрование обязательно для всех компонентов WebRTC, включая сигнальные механизмы.
- WebRTC не является плагином или отдельной программой – всего компоненты запускаются в браузере, причем не являясь отдельным процессом. Компоненты WebRTC обновляются при обновлении браузера.
Конечно, вышеописанное справедливо только при использовании поддерживаемых браузеров и соблюдении обычных правил безопасности в интернете.
Преграды для быстрого развития
Необходимость наличия сервера для осуществления четырех задач:
- Поиск пользователей
- Сигнализация
- Механизмы прохождения сигнальной и медиа информации через NAT
- Механизмы обеспечения прохождения информации через межсетевой экран
Отсутствие нативных приложений и SDK – WebRTC технология для связи абонентов через браузер, однако нет SDK, позволяющего разработать нативное приложение для IOS и Android
Невозможность конференций – благодаря своей пиринговой натуре (peer-to-peer), WebRTC является чрезвычайно легко масштабируемой технологией, но при этом отсутствует необходимый инструментарий для организации аудио и видеоконференций.
Выводы
Стандартизация различных API для WebRTC может снизить цены на связь и позволит использовать WebRTC во многих индустриях – телекоммуникационной, игровой, новостной и так далее. Кроме того, можно с уверенностью сказать, что WebRTC окажет сильное влияние на Интернет в общем – разработки веб-приложений с открытым кодом, на рост совместимости между браузерами и т.д