ВебRTC
![]() | |
Оригинальный автор(ы) | Джастин Уберти Питер Тэтчер |
---|---|
Первоначальный выпуск | 2011 год |
Стабильная версия | 1.0 [1] / 4 мая 2018 г |
Репозиторий | вебртк |
Написано в | С++ , [2] JavaScript |
Стандарт (ы) | w3 |
Лицензия | Лицензия BSD [ нужна ссылка ] |
Веб-сайт | вебртк |
WebRTC ( Web Real-Time Communication ) — это бесплатный проект с открытым исходным кодом, обеспечивающий веб-браузерам и мобильным приложениям связь в реальном времени (RTC) через интерфейсы прикладного программирования (API). Он позволяет аудио- и видеосвязи и потоковой передаче работать внутри веб-страниц, обеспечивая прямую одноранговую связь, устраняя необходимость установки плагинов или загрузки собственных приложений. [3]
Спецификации WebRTC, поддерживаемые Apple , Google , Microsoft , Mozilla и Opera , были опубликованы Консорциумом Всемирной паутины (W3C) и Инженерной группой Интернета (IETF). [4] [5]
Согласно веб-сайту webrtc.org, цель проекта — «позволить разрабатывать многофункциональные высококачественные приложения RTC для браузера, мобильных платформ и устройств IoT и позволить им всем взаимодействовать через общий набор протоколов». ". [6]
История [ править ]
В мае 2010 года Google купила Global IP Solutions или GIPS, компанию, занимающуюся программным обеспечением для VoIP и видеоконференций , которая разработала множество компонентов, необходимых для RTC, таких как кодеки и методы эхоподавления. Google открыла исходный код технологии GIPS и взаимодействовала с соответствующими органами по стандартизации IETF и W3C , чтобы обеспечить консенсус в отрасли. [7] [8] В мае 2011 года Google выпустила проект с открытым исходным кодом для общения в реальном времени через браузер, известный как WebRTC. [9] За этим последовала постоянная работа по стандартизации соответствующих протоколов в IETF. [10] и API браузера в W3C. [11]
В январе 2011 года Ericsson Labs создала первую реализацию WebRTC с использованием модифицированной библиотеки WebKit . [12] [13] В октябре 2011 года W3C опубликовал первый проект спецификации. [14] Вехи WebRTC включают первый кросс-браузерный видеозвонок (февраль 2013 г.), первую кросс-браузерную передачу данных (февраль 2014 г.), а по состоянию на июль 2014 года Google Hangouts «своего рода» использовал WebRTC. [15]
Проект API W3C был основан на предварительной работе, проделанной в WHATWG . [16] Он назывался ConnectionPeer API, и в Ericsson Labs была создана предварительная реализация концепции. [12] Рабочая группа WebRTC ожидает, что эта спецификация будет значительно развиваться на основе:
- Результаты текущего обмена мнениями в сопутствующей группе RTCWEB в IETF [17] определить набор протоколов , которые вместе с этим документом определяют связь в реальном времени в веб-браузерах. Хотя ни один протокол сигнализации не является обязательным, SIP через WebSockets ( RFC 7118 ) часто используется частично из-за применимости SIP. [18] для большинства предусмотренных сценариев связи, а также наличие программного обеспечения с открытым исходным кодом, такого как JsSIP .
- Проблемы конфиденциальности , возникающие при раскрытии локальных возможностей и локальных потоков.
- Технические дискуссии внутри группы, в частности, по реализации каналов передачи данных. [19]
- Опыт, полученный в результате ранних экспериментов
- Отзывы других групп и отдельных лиц
В ноябре 2017 года спецификация WebRTC 1.0 перешла из рабочего проекта в кандидатскую рекомендацию. [20]
В январе 2021 года спецификация WebRTC 1.0 перешла из категории «Кандидат в рекомендацию» в «Рекомендация» . [4]
Дизайн [ править ]
Основные компоненты WebRTC включают несколько JavaScript API :
getUserMedia
получает аудио- и видеоноситель (например, путем доступа к камере и микрофону устройства). [21]RTCPeerConnection
обеспечивает аудио- и видеосвязь между одноранговыми узлами. Он выполняет обработку сигналов , обработку кодеков , одноранговую связь, безопасность и полосой пропускания . управление [22]RTCDataChannel
обеспечивает двустороннюю передачу произвольных данных между узлами. Данные передаются с использованием SCTP через DTLS . [23] Он использует тот же API, что и WebSockets , и имеет очень низкую задержку . [24]
API WebRTC также включает функцию статистики:
getStats
позволяет веб-приложению получать набор статистических данных о сеансах WebRTC. Эти статистические данные описаны в отдельном документе W3C. [25]
API WebRTC не включает в себя никаких средств для сигнализации , то есть обнаружения одноранговых узлов для подключения и определения способа установления соединений между ними. Приложения используют Interactive Connectivity Setting для соединений и отвечают за управление сеансами, возможно, полагаясь на любой из протоколов инициации сеанса , расширяемого протокола обмена сообщениями и присутствия ( XMPP ), транспорта телеметрии очереди сообщений , Matrix или другого протокола. Сигнализация может зависеть от одного или нескольких серверов. [26] [27]
RFC 7478 требует реализации для обеспечения PCMA / PCMU ( RFC 3551 ), Телефонное событие как DTMF ( RFC 4733 ) и Опус ( RFC 6716 ) аудиокодеки как минимальные возможности. API-интерфейсы браузера PeerConnection, канала данных и захвата мультимедиа подробно описаны в спецификации W3C.
W3C разрабатывает ORTC (Объектные коммуникации в реальном времени) для WebRTC. [28]
Приложения [ править ]
WebRTC позволяет браузерам передавать файлы напрямую друг другу, уменьшая или полностью устраняя необходимость в хостинге файлов на стороне сервера. WebTorrent использует транспорт WebRTC для обеспечения однорангового обмена файлами с использованием протокола BitTorrent в браузере. [29] Некоторые веб-сайты для обмена файлами используют его, чтобы пользователи могли отправлять файлы напрямую друг другу в своих браузерах, хотя для этого пользователю, загрузившему файл, необходимо держать вкладку открытой до тех пор, пока файл не будет загружен. [30] [31] [32] Некоторые CDN , такие как Peer5, принадлежащий Microsoft, используют полосу пропускания клиента для загрузки мультимедиа на другие подключенные узлы, позволяя каждому узлу действовать как пограничный сервер. [33] [34]
Хотя изначально WebRTC был разработан для веб-браузеров, у него есть приложения для небраузерных устройств, включая мобильные платформы и устройства IoT . телефонию на основе браузера Примеры включают VoIP- , также называемую облачными телефонами или веб-телефонами, которая позволяет совершать и принимать вызовы из веб-браузера, заменяя необходимость загрузки и установки программного телефона. [35]
Поддержка [ править ]
WebRTC поддерживается следующими браузерами (неполный список; указана самая старая поддерживаемая версия):
- Настольный ПК
- Андроид
- Google Chrome 28+ (включен по умолчанию с версии 29)
- Мозилла Фаерфокс 24+ [40]
- Опера Мобайл 12+
- ChromeOS
- ОС Firefox
- Блэкберри 10
- iOS
- MobileSafari/WebKit ( iOS 11+ )
- Тизен 3.0
GStreamer напрямую предоставляет бесплатную реализацию WebRTC. [41]
Поддержка кодеков в браузерах [ править ]
WebRTC устанавливает стандартный набор кодеков, которые должны поддерживать все совместимые браузеры. Некоторые браузеры также могут поддерживать другие кодеки. [42]
Имя кодека | Профиль(и) | Совместимость с браузером |
---|---|---|
H.264 | Ограниченная базовая линия (CB) | Chrome (52+), Firefox [1] , Сафари |
ВП8 | - | Chrome, Firefox, Сафари (12.1+) [43] |
ВП9 | - | Хром (48+), Firefox |
Имя кодека | Совместимость с браузером |
---|---|
Опус | Хром, Фаерфокс, Сафари |
G.711 PCM (A-закон) | Хром, Фаерфокс, Сафари |
G.711 PCM (μ-закон) | Хром, Фаерфокс, Сафари |
G.722 | Хром, Фаерфокс, Сафари |
iLBC | Хром, Сафари |
ИСАКА | Хром, Сафари |
Уязвимость [ править ]
В январе 2017 года TorrentFreak сообщил о серьезной уязвимости в безопасности браузеров, поддерживающих WebRTC, которая поставила под угрозу безопасность VPN- пользователя туннелей, раскрывая истинный IP-адрес . [44] Запросы на чтение IP-адреса не отображаются в консоли разработчика браузера и не блокируются большинством по блокировке рекламы , конфиденциальности и безопасности , что позволяет отслеживать их в режиме онлайн, несмотря на меры предосторожности. надстроек [45]
Сообщалось, что причиной утечки адреса является не ошибка, которую можно исправить, а основа работы WebRTC; однако есть несколько решений, позволяющих смягчить проблему. Утечку WebRTC можно проверить, и решения предлагаются для большинства браузеров. [46] WebRTC можно отключить, если это не требуется, в большинстве браузеров. Надстройка uBlock Origin может решить эту проблему (так как некоторые браузеры теперь решают эту проблему самостоятельно, начиная с uBlock Origin v1.38 и далее эта опция отключена в этих браузерах). [47] ).
См. также [ править ]
Ссылки [ править ]
- ^ «WebRTC 1.0: связь между браузерами в реальном времени» . Консорциум Всемирной паутины . 27 сентября 2018 г. Архивировано из оригинала 7 апреля 2019 г. . Проверено 25 марта 2019 г.
- ^ «Src/webrtc — Git в Google» . Архивировано из оригинала 23 апреля 2018 г. Проверено 22 апреля 2018 г.
- ^ Как WebRTC совершает революцию в телефонии. Архивировано 7 апреля 2014 г. в Wayback Machine . Blogs.trilogy-lte.com (21 февраля 2014 г.). Проверено 11 апреля 2014 г.
- ↑ Перейти обратно: Перейти обратно: а б «Веб-коммуникации в реальном времени (WebRTC) трансформируют коммуникационную среду, поскольку они становятся стандартами рекомендаций Консорциума Всемирной паутины (W3C) и Рабочей группы по проектированию Интернета (IETF)» . Консорциум Всемирной паутины . 26 января 2021 г. Архивировано из оригинала 27 июля 2022 г. Проверено 27 января 2021 г.
- ^ «Страницы состояния Rtcweb» . www.tools.ietf.org . Архивировано из оригинала 20 апреля 2020 г. Проверено 18 февраля 2021 г.
- ^ «ВебРТК» . ВебРТК . Архивировано из оригинала 28 января 2018 года . Проверено 6 февраля 2018 года .
{{cite web}}
: CS1 maint: bot: исходный статус URL неизвестен ( ссылка ) - ^ «Являются ли компоненты WebRTC результатом приобретения Google компании Global IP Solutions?» . ВебРТК . Архивировано из оригинала 7 июня 2011 года . Проверено 6 февраля 2018 года .
- ^ Воутерс, Робин (18 мая 2010 г.). «Google делает предложение на сумму 68,2 миллиона долларов за Global IP Solutions» . ТехКранч . Архивировано из оригинала 7 февраля 2018 года . Проверено 6 февраля 2018 года .
- ^ Харальд Альвестранд (31 мая 2011 г.). «Выпуск исходного кода WebRTC от Google» . [электронная почта защищена] . Архивировано из оригинала 27 февраля 2013 г. Проверено 12 сентября 2012 г.
- ^ «Устав рабочей группы «Коммуникация в реальном времени в WEB-браузерах (rtcweb)» . Архивировано из оригинала 11 ноября 2013 г. Проверено 11 ноября 2013 г.
- ^ «WebRTC 1.0: связь между браузерами в реальном времени» . W3.org. Архивировано из оригинала 5 сентября 2012 г. Проверено 12 сентября 2012 г.
- ↑ Перейти обратно: Перейти обратно: а б «За пределами HTML5: одноранговое разговорное видео» . Блог Ericsson Research . Labs.ericsson.com. 25 января 2011 года. Архивировано из оригинала 25 февраля 2017 года . Проверено 21 марта 2021 г.
- ^ Стефан Хоканссон; Стефан Олунд (26 мая 2011 г.). «За пределами HTML5: экспериментируйте с общением в реальном времени в браузере» . Блог Ericsson Research . Архивировано из оригинала 7 февраля 2018 года . Проверено 6 февраля 2018 года .
- ^ «WebRTC 1.0: связь между браузерами в реальном времени (рабочий проект W3C, 27 октября 2011 г.)» . Консорциум Всемирной паутины . 27 октября 2011 года. Архивировано из оригинала 29 октября 2011 года . Проверено 6 февраля 2018 года .
- ^ Новак, Шимон. «WebRTC: гораздо больше, чем видеоконференции» . Гитхаб . Архивировано из оригинала 7 февраля 2018 года . Проверено 6 февраля 2018 года .
- ^ «Введение — Стандарт HTML» . Whatwg.org. Архивировано из оригинала 16 августа 2014 г. Проверено 12 сентября 2012 г.
- ^ «Страницы состояния Rtcweb» . Tools.ietf.org. Архивировано из оригинала 5 сентября 2012 г. Проверено 12 сентября 2012 г.
- ^ SIP-транкинг, ОСАГО (18 июля 2023 г.). «SIP-транкинг VoIP с помощью WebRTC SDK» . Лунные Технолабы . Архивировано из оригинала 5 августа 2023 года . Проверено 18 июля 2023 г.
- ^ «draft-jesup-rtcweb-data-protocol-00 — протокол канала передачи данных WebRTC» . Tools.ietf.org. Архивировано из оригинала 31 октября 2012 г. Проверено 12 сентября 2012 г.
- ^ «WebRTC 1.0: связь между браузерами в реальном времени (кандидатская рекомендация W3C от 2 ноября 2017 г.)» . 2 ноября 2017 года. Архивировано из оригинала 2 ноября 2017 года . Проверено 25 марта 2019 г.
- ^ «Захват мультимедиа и потоки: getUserMedia» . W3C. 03 сентября 2013 г. Архивировано из оригинала 2 января 2014 г. Проверено 15 января 2014 г.
- ^ «WebRTC: интерфейс RTCPeerConnection» . W3C. 10 сентября 2013 г. Архивировано из оригинала 5 сентября 2012 г. Проверено 15 января 2014 г.
- ^ «RFC 8831 — Каналы передачи данных WebRTC» . datatracker.ietf.org . Архивировано из оригинала 10 марта 2022 г. Проверено 10 марта 2022 г.
- ^ «WebRTC: RTCDataChannel» . W3C. 10 сентября 2013 г. Архивировано из оригинала 5 сентября 2012 г. Проверено 15 января 2014 г.
- ^ «Идентификаторы API статистики WebRTC» . W3C. 29 сентября 2014 г. Архивировано из оригинала 15 июля 2017 г. Проверено 2 декабря 2017 г.
- ^ Цахи Левент-Леви (13 апреля 2020 г.). «Сервер WebRTC: что это такое?» . BlogGeek.me . Архивировано из оригинала 11 мая 2020 года . Проверено 10 июня 2020 г.
- ^ Цахи Левент-Леви (13 ноября 2014 г.). «Matrix.org и WebRTC: Интервью с Мэтью Ходжсоном» . BlogGeek.me . Архивировано из оригинала 25 февраля 2021 года . Проверено 10 июня 2020 г.
- ^ «Группа сообщества W3C ORTC (Объектные коммуникации в реальном времени)» . Архивировано из оригинала 29 октября 2014 г. Проверено 29 октября 2014 г.
- ^ «Часто задаваемые вопросы по WebTorrent» . webtorrent.io . Архивировано из оригинала 11 марта 2022 г. Проверено 10 марта 2022 г.
- ^ «Как передавать файлы между Linux, Android и iOS с помощью Snapdrop» . МУО . 04.08.2021. Архивировано из оригинала 29 января 2022 г. Проверено 10 марта 2022 г.
- ^ Пинола, Мелани (7 апреля 2014 г.). «Самый простой и быстрый способ передачи файлов между устройствами в одной сети» . Компьютерный мир . Архивировано из оригинала 28 июня 2022 г. Проверено 10 марта 2022 г.
- ^ «FilePizza: делитесь файлами без посредников в вашем браузере — gHacks Tech News» . Новости технологий gHacks . 12 мая 2015 г. Архивировано из оригинала 23 января 2022 г. Проверено 10 марта 2022 г.
- ^ Фоли, Мэри Джо. «Microsoft приобретает Peer5, чтобы дополнить потоковое видео Teams» . ЗДНет . Архивировано из оригинала 10 марта 2022 г. Проверено 10 марта 2022 г.
- ^ «Обзор — Документация по Peer5 P2P» . docs.peer5.com . Архивировано из оригинала 16 марта 2022 г. Проверено 10 марта 2022 г.
- ^ «Поймай рыбку-бабелфи: ирландская телекоммуникационная компания разрабатывает новый вид облачного телефона» . Ноябрь 2017 г. Архивировано из оригинала 1 ноября 2017 г. Проверено 20 ноября 2017 г.
- ^ «ORTC API теперь доступен в Microsoft Edge» . Майкрософт. 18 сентября 2015 г. Архивировано из оригинала 9 октября 2015 г. Проверено 20 сентября 2015 г.
- ^ Заметки Firefox — рабочий стол. Архивировано 21 августа 2014 г. на Wayback Machine . Mozilla.org (25 июня 2013 г.). Проверено 11 апреля 2014 г.
- ^ «Сафари 11.0» . Apple Inc. Архивировано из оригинала 14 ноября 2017 года . Проверено 6 июня 2017 г.
- ↑ Opera News . Архивировано 7 сентября 2015 г. в Wayback Machine . blogs.opera.com (19 ноября 2013 г.). Проверено 17 сентября 2015 г.
- ^ Заметки Firefox — рабочий стол. Архивировано 1 апреля 2021 г. на Wayback Machine . Mozilla.org (17 сентября 2013 г.). Проверено 4 августа 2014 г.
- ^ «Примечания к выпуску GStreamer 1.14» . gstreamer.freedesktop.org . Архивировано из оригинала 20 марта 2018 г. Проверено 19 декабря 2019 г. начиная с версии 1.15
- ^ «Кодеки, используемые WebRTC — Технологии веб-медиа | MDN» . http://developer.mozilla.org . Архивировано из оригинала 27 июля 2021 г. Проверено 29 июля 2021 г.
- ^ Фаблет, Юэнн (12 марта 2019 г.). «На пути к WebRTC 1.0, включая VP8» . Вебкит . Архивировано из оригинала 29 июля 2021 г. Проверено 29 июля 2021 г.
- ^ Огромная ошибка безопасности приводит к утечке реальных IP-адресов пользователей VPN. Архивировано 8 января 2021 г. на Wayback Machine TorrentFreak.com (30 января 2015 г.). Проверено 21 февраля 2015 г.
- ^ Запросы IP-адреса STUN для WebRTC. Архивировано 18 февраля 2015 г. на Wayback Machine . Получено 21 февраля 2015 г.
- ^ Тиммерман, Кристал (28 февраля 2022 г.). «WebRTC сливает реальные IP-адреса (даже с VPN)» . IPVanish . Архивировано из оригинала 13 августа 2022 года . Проверено 12 августа 2022 г.
- ^ Рэймонд Хилл (17 сентября 2021 г.). «Предотвратить утечку локального IP-адреса через WebRTC» . Документация uBlock Origin . Архивировано из оригинала 21 февраля 2016 года . Проверено 18 декабря 2021 г.
Дальнейшее чтение [ править ]
- Пруст, С., изд. (май 2016 г.). Дополнительные аудиокодеки WebRTC для совместимости . IETF . дои : 10.17487/RFC7875 . РФК 7875 . Проверено 12 октября 2016 г.
- Валин, Дж. М.; Бран, К. (май 2016 г.). Аудиокодек WebRTC и требования к обработке . IETF . дои : 10.17487/RFC7874 . RFC 7874 . Проверено 12 октября 2016 г.
- Роуч, AB (март 2016 г.). Требования к обработке видео WebRTC и кодекам . IETF . дои : 10.17487/RFC7742 . РФК 7742 . Проверено 12 октября 2016 г.
- Перумал, М.; Винг, Д.; Равиндранат, Р.; Редди, Т.; Томсон, М. (октябрь 2015 г.). Утилиты обхода сеанса для использования NAT (STUN) для обновления согласия . IETF . дои : 10.17487/RFC7675 . РФК 7675 . Проверено 12 октября 2016 г.
- Холмберг, К.; Хаканссон, С.; Эрикссон, Г. (март 2015 г.). Варианты использования и требования к веб-коммуникациям в реальном времени . IETF . дои : 10.17487/RFC7478 . РФК 7478 . Проверено 12 октября 2016 г.