Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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

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

История [ править ]

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

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

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

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

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

В январе 2021 года спецификация WebRTC 1.0 перешла с статуса кандидата в рекомендацию . [4]

Обзор [ править ]

Дизайн [ править ]

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

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

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

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

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

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

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

Примеры [ править ]

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

Поддержка [ править ]

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

  • Настольный ПК
    • Microsoft Edge 12+ [27]
    • Google Chrome 28+
    • Mozilla Firefox 22+ [28]
    • Safari 11+ [29]
    • Opera 18+ [30]
    • Вивальди 1.9+
    • Храбрый
  • Android
    • Google Chrome 28+ (включен по умолчанию с 29)
    • Mozilla Firefox 24+ [31]
    • Opera Mobile 12+
  • Chrome OS
  • ОС Firefox
  • BlackBerry 10
  • iOS
    • MobileSafari / WebKit ( iOS 11 +)
  • Tizen 3.0

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

Проблемы [ править ]

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

См. Также [ править ]

  • Глобальные IP-решения (GIPS)
  • Транспортный протокол в реальном времени (RTP)
  • Протокол описания сеанса (SDP)
  • WebRTC шлюз

Ссылки [ править ]

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

Дальнейшее чтение [ править ]

  • Пруст, С., изд. (Май 2016). Дополнительные аудиокодеки WebRTC для взаимодействия . IETF . DOI : 10,17487 / RFC7875 . RFC 7875 . Проверено 12 октября 2016 .
  • Валин, JM; Бран, К. (май 2016 г.). Аудиокодек WebRTC и требования к обработке . IETF . DOI : 10,17487 / RFC7874 . RFC 7874 . Проверено 12 октября 2016 .
  • Роуч, AB (март 2016 г.). Требования к обработке видео и кодекам WebRTC . IETF . DOI : 10,17487 / RFC7742 . RFC 7742 . Проверено 12 октября 2016 .
  • Perumal, M .; Крыло, Д .; Ravindranath, R .; Редди, Т .; Томсон, М. (октябрь 2015 г.). Утилиты обхода сеанса для использования NAT (STUN) для обеспечения свежести согласия . IETF . DOI : 10,17487 / RFC7675 . RFC 7675 . Проверено 12 октября 2016 .
  • Holmberg, C .; Hakansson, S .; Эрикссон, Г. (март 2015 г.). Сценарии и требования для использования веб-коммуникаций в реальном времени . IETF . DOI : 10,17487 / RFC7478 . RFC 7478 . Проверено 12 октября 2016 .

Внешние ссылки [ править ]

  • Официальный веб-сайт
  • Рабочая группа W3C по веб-коммуникациям в реальном времени
  • Рабочая группа IETF в режиме реального времени в веб-браузерах (rtcweb)
  • Демо-приложение для видеочата на базе WebRTC
  • Автономная реализация каналов данных WebRTC с открытым исходным кодом