WebRTC - WebRTC

WebRTC
WebRTC Logo.svg
Оригинальный автор (ы)Джастин Уберти
Питер Тэтчер
изначальный выпуск2011; 9 лет назад (2011)
Стабильный выпуск
1.0[1] / 4 мая 2018 г.; 2 года назад (2018-05-04)
РепозиторийWebrtc.googlesource.com
Написано вC ++,[2] JavaScript
ЛицензияЛицензия BSD
Интернет сайтWebrtc.org

WebRTC (Интернет-общение в реальном времени) является бесплатным, Открытый исходный код проект, который обеспечивает веб-браузеры и мобильные приложения с в реальном времени связь (RTC) через простой интерфейсы прикладного программирования (API). Он позволяет аудио- и видеосвязи работать внутри веб-страниц, позволяя напрямую пиринговый связь, устраняя необходимость установки плагины или загрузите собственные приложения.[3] При поддержке яблоко, Google, Microsoft, Mozilla, и Опера, WebRTC стандартизируется через Консорциум World Wide Web (W3C) и Инженерная группа Интернета (IETF).[4]

Его миссия состоит в том, чтобы «позволить разрабатывать богатые, высококачественные приложения RTC для браузеров, мобильных платформ и Интернет вещей устройств, и позволить им всем обмениваться данными через общий набор протоколы ".[4]

История

В мае 2010 года Google купил Глобальные IP-решения или GIPS, a VoIP и видео-конференция компания-разработчик программного обеспечения, которая разработала многие компоненты, необходимые для RTC, такие как кодеки и методы эхоподавления. Компания Google открыла исходный код технологии GIPS и взаимодействовала с соответствующими органами по стандартизации в IETF и W3C для обеспечения консенсуса в отрасли.[5][6] В мае 2011 г. Google выпустил Открытый исходный код проект для общения в реальном времени через браузер, известный как WebRTC.[7] За этим последовала постоянная работа по стандартизации соответствующих протоколы в IETF[8] и API браузера в W3C.[9]

В мае 2011 г. Ericsson Labs построили первую реализацию WebRTC с использованием модифицированного WebKit библиотека.[10] В октябре 2011 г. W3C опубликовал свой первый проект спецификации.[11] Вехи WebRTC включают первый кроссбраузерный видеозвонок (февраль 2013 г.), первую кроссбраузерную передачу данных (февраль 2014 г.) и по состоянию на июль 2014 г. Google Hangouts было «вроде» с использованием WebRTC.[12]

Проект API W3C был основан на предварительной работе, проделанной в WHATWG.[13] Он назывался ConnectionPeer API, и предварительная реализация концепции была создана в Ericsson Labs.[14] Рабочая группа WebRTC ожидает, что эта спецификация будет существенно развиваться на основе:

  • Результаты текущих обменов в сопутствующей группе RTCWEB на IETF[15] определить набор протоколы которые вместе с этим документом определяют связь в реальном времени в веб-браузерах. Хотя ни один протокол сигнализации не требуется, ГЛОТОК над WebSockets (RFC  7118 ) часто используется частично из-за применимости SIP к большинству предполагаемых сценариев связи, а также доступности программного обеспечения с открытым исходным кодом, такого как JsSIP.
  • Проблемы с конфиденциальностью которые возникают при раскрытии локальных возможностей и локальных потоков
  • Технические обсуждения в группе, в частности, по реализации каналов передачи данных[16]
  • Опыт, полученный в результате ранних экспериментов
  • Отзывы других групп и отдельных лиц

В ноябре 2017 года спецификация WebRTC 1.0 перешла из рабочего проекта в статус кандидата в рекомендации.[17]

Обзор

Дизайн

Основные компоненты WebRTC включают несколько JavaScript API:

  • getUserMedia получает аудио- и видеоматериалы (например, путем доступа к камере и микрофону устройства).[18]
  • RTCPeerConnection обеспечивает аудио- и видеосвязь между одноранговыми узлами. Он выполняет обработка сигналов, кодек обработка, одноранговая связь, безопасность и пропускная способность управление.[19]
  • RTCDataChannel позволяет двунаправленную передачу произвольных данных между одноранговыми узлами. Он использует тот же API, что и WebSockets и имеет очень низкий задержка.[20]

API WebRTC также включает функцию статистики:

  • getStats позволяет веб-приложению получать набор статистических данных о сеансах WebRTC. Эти статистические данные описаны в отдельном документе W3C.[21]

API WebRTC включает нет положений для сигнализации, то есть обнаружение одноранговых узлов для подключения и определение способов установления соединений между ними. Приложения используют Установление интерактивного подключения для подключений и каким-либо образом управлять сеансами, возможно, полагаясь на любой из Протокол инициирования сеанса, Расширяемый протокол обмена сообщениями и присутствия, Транспорт телеметрии очереди сообщений, Матрица (протокол), или другой протокол. Сигнализация может зависеть от одного или нескольких серверов.[22][23]

RFC 7874 требует, чтобы реализации обеспечивали PCMA /PCMU (RFC  3551 ), Телефонное событие как DTMF (RFC  4733 ), и Opus (RFC  6716 ) аудиокодеки как минимум возможности. API-интерфейсы PeerConnection, канала данных и браузера для захвата мультимедиа подробно описаны в W3C.

W3C разрабатывает ORTC (Object Real-Time Communications) для WebRTC.[24]

Примеры

Хотя изначально WebRTC был разработан для веб-браузеров, в нем есть приложения для небраузерных устройств, включая мобильные платформы и IoT устройства. Примеры включают браузерные VoIP телефония, также называемая облачными телефонами или веб-телефонами, которые позволяют совершать и принимать звонки из веб-браузера, заменяя требование загрузки и установки программного телефона.[25]

Поддерживать

WebRTC поддерживают следующие браузеры:

GStreamer непосредственно предоставляет бесплатную реализацию WebRTC.[31]

Обеспокоенность

В январе 2015 г. TorrentFreak сообщил о серьезном недостатке безопасности в браузерах, поддерживающих WebRTC, заявив, что он поставил под угрозу безопасность VPN туннелей, обнажая истинные айпи адрес пользователя.[32] Запросы на чтение IP-адреса не отображаются в консоли разработчика браузера и не блокируются большинством блокировка рекламы /Конфиденциальность /безопасность надстройки, позволяющие рекламодателям и другим лицам отслеживать онлайн, несмотря на меры предосторожности[33] (Тем не менее uBlock Origin надстройка может решить эту проблему). По состоянию на сентябрь 2019 года этот недостаток WebRTC все еще проявляется в Firefox 69.x и по-прежнему по умолчанию предоставляет доступ к внутреннему IP-адресу пользователя в Интернете.[34]

Смотрите также

Рекомендации

  1. ^ «WebRTC 1.0: обмен данными между браузерами в реальном времени». Консорциум World Wide Web. 27 сентября 2018 г.. Получено 25 марта 2019.
  2. ^ "Src / webrtc - Git в Google".
  3. ^ Как WebRTC революционизирует телефонию. Blogs.trilogy-lte.com (21.02.2014). Проверено 11 апреля 2014.
  4. ^ а б «WebRTC». WebRTC. Архивировано из оригинал 9 января 2018 г.. Получено 6 февраля 2018.
  5. ^ "Являются ли компоненты WebRTC результатом приобретения Google Global IP Solutions?". WebRTC. Получено 6 февраля 2018.
  6. ^ Воутерс, Робин (18 мая 2010 г.). «Google предлагает $ 68,2 млн наличными для Global IP Solutions». TechCrunch. Получено 6 февраля 2018.
  7. ^ Харальд Альвестранд (31.05.2011). "Выпуск Google исходного кода WebRTC". [email protected]. Получено 2012-09-12.
  8. ^ Хартия рабочей группы по общению в веб-браузерах в реальном времени (rtcweb)
  9. ^ «WebRTC 1.0: обмен данными между браузерами в реальном времени». W3.org. Получено 2012-09-12.
  10. ^ Стефан Хоканссон; Стефан Алунд (26 мая 2011 г.). «За пределами HTML5: поэкспериментируйте с общением в реальном времени в браузере». Блог Ericsson Research. Получено 6 февраля 2018.
  11. ^ «WebRTC 1.0: обмен данными между браузерами в реальном времени (рабочий проект W3C, 27 октября 2011 г.)». Консорциум World Wide Web. 27 октября 2011 г.. Получено 6 февраля 2018.
  12. ^ Новак, Шимон. «WebRTC: гораздо больше, чем видеоконференции». GitHub. Получено 6 февраля 2018.
  13. ^ «Введение - Стандарт HTML». Whatwg.org. Получено 2012-09-12.
  14. ^ "За пределами HTML5: одноранговое диалоговое видео". Labs.ericsson.com. Получено 2012-09-12.
  15. ^ "Страницы состояния Rtcweb". Tools.ietf.org. Получено 2012-09-12.
  16. ^ "draft-jesup-rtcweb-data-protocol-00 - протокол канала данных WebRTC". Tools.ietf.org. Получено 2012-09-12.
  17. ^ «WebRTC 1.0: обмен данными между браузерами в реальном времени (рекомендация W3C от 2 ноября 2017 г.)». 2 ноября 2017.
  18. ^ «Захват мультимедиа и потоки: getUserMedia». W3C. 2013-09-03. Получено 2014-01-15.
  19. ^ «WebRTC: интерфейс RTCPeerConnection». W3C. 2013-09-10. Получено 2014-01-15.
  20. ^ "WebRTC: RTCDataChannel". W3C. 2013-09-10. Получено 2014-01-15.
  21. ^ «Идентификаторы API статистики WebRTC». W3C. 2014-09-29.
  22. ^ Цахи Левент-Леви (13 апреля 2020 г.). «Сервер WebRTC: что это такое?». BlogGeek.me.
  23. ^ Цахи Левент-Леви (13 ноября 2014 г.). «Matrix.org и WebRTC: интервью с Мэтью Ходжсоном». BlogGeek.me.
  24. ^ "Группа сообщества W3C ORTC (Object Real-time Communications)".
  25. ^ «Поймай рыбу-вейвера: ирландская телекоммуникационная компания разрабатывает новый тип облачного телефона». Ноябрь 2017 г.
  26. ^ «ORTC API теперь доступен в Microsoft Edge». Microsoft. 2015-09-18.
  27. ^ Примечания к Firefox - Рабочий стол. Mozilla.org (25 июня 2013 г.). Проверено 11 апреля 2014.
  28. ^ «Сафари 11.0». Apple Inc.. Получено 6 июн 2017.
  29. ^ Новости Opera. blogs.opera.com (2013-11-19). Проверено 17 сентября 2015.
  30. ^ Примечания к Firefox - Рабочий стол. Mozilla.org (17 сентября 2013 г.). Проверено 4 августа 2014.
  31. ^ «Примечания к выпуску GStreamer 1.14». gstreamer.freedesktop.org. Получено 2019-12-19. с версии 1.14
  32. ^ Утечка огромных брешей в системе безопасности реальных IP-адресов пользователей VPN TorrentFreak.com (30.01.2015). Проверено 21 февраля 2015.
  33. ^ Запросы IP-адресов STUN для WebRTC Проверено 21 февраля 2015.
  34. ^ Раймонд Хилл (26 марта 2016 г.). «Предотвратить утечку через WebRTC локального IP-адреса». Документация uBlock Origin. Получено 1 сен 2016.

дальнейшее чтение

внешняя ссылка