WebRTC - WebRTC
Оригинальный автор (ы) | Джастин Уберти Питер Тэтчер |
---|---|
изначальный выпуск | 2011 |
Стабильный выпуск | 1.0[1] / 4 мая 2018 г. |
Репозиторий | Webrtc |
Написано в | C ++,[2] JavaScript |
Лицензия | Лицензия BSD |
Интернет сайт | Webrtc |
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 поддерживают следующие браузеры:
- Настольный ПК
- Android
- Google Chrome 28+ (включен по умолчанию с 29)
- Mozilla Firefox 24+[30]
- Opera Mobile 12+
- Chrome OS
- ОС Firefox
- BlackBerry 10
- iOS
- MobileSafari / WebKit (iOS 11 +)
- Tizen 3.0
GStreamer непосредственно предоставляет бесплатную реализацию WebRTC.[31]
Обеспокоенность
В январе 2015 г. TorrentFreak сообщил о серьезном недостатке безопасности в браузерах, поддерживающих WebRTC, заявив, что он поставил под угрозу безопасность VPN туннелей, обнажая истинные айпи адрес пользователя.[32] Запросы на чтение IP-адреса не отображаются в консоли разработчика браузера и не блокируются большинством блокировка рекламы /Конфиденциальность /безопасность надстройки, позволяющие рекламодателям и другим лицам отслеживать онлайн, несмотря на меры предосторожности[33] (Тем не менее uBlock Origin надстройка может решить эту проблему). По состоянию на сентябрь 2019 года этот недостаток WebRTC все еще проявляется в Firefox 69.x и по-прежнему по умолчанию предоставляет доступ к внутреннему IP-адресу пользователя в Интернете.[34]
Смотрите также
- Глобальные IP-решения (GIPS)
- Транспортный протокол в реальном времени (RTP)
- Протокол описания сеанса (SDP)
- WebRTC шлюз
Рекомендации
- ^ «WebRTC 1.0: обмен данными между браузерами в реальном времени». Консорциум World Wide Web. 27 сентября 2018 г.. Получено 25 марта 2019.
- ^ "Src / webrtc - Git в Google".
- ^ Как WebRTC революционизирует телефонию. Blogs.trilogy-lte.com (21.02.2014). Проверено 11 апреля 2014.
- ^ а б «WebRTC». WebRTC. Архивировано из оригинал 9 января 2018 г.. Получено 6 февраля 2018.
- ^ "Являются ли компоненты WebRTC результатом приобретения Google Global IP Solutions?". WebRTC. Получено 6 февраля 2018.
- ^ Воутерс, Робин (18 мая 2010 г.). «Google предлагает $ 68,2 млн наличными для Global IP Solutions». TechCrunch. Получено 6 февраля 2018.
- ^ Харальд Альвестранд (31.05.2011). "Выпуск Google исходного кода WebRTC". [email protected]. Получено 2012-09-12.
- ^ Хартия рабочей группы по общению в веб-браузерах в реальном времени (rtcweb)
- ^ «WebRTC 1.0: обмен данными между браузерами в реальном времени». W3.org. Получено 2012-09-12.
- ^ Стефан Хоканссон; Стефан Алунд (26 мая 2011 г.). «За пределами HTML5: поэкспериментируйте с общением в реальном времени в браузере». Блог Ericsson Research. Получено 6 февраля 2018.
- ^ «WebRTC 1.0: обмен данными между браузерами в реальном времени (рабочий проект W3C, 27 октября 2011 г.)». Консорциум World Wide Web. 27 октября 2011 г.. Получено 6 февраля 2018.
- ^ Новак, Шимон. «WebRTC: гораздо больше, чем видеоконференции». GitHub. Получено 6 февраля 2018.
- ^ «Введение - Стандарт HTML». Whatwg.org. Получено 2012-09-12.
- ^ "За пределами HTML5: одноранговое диалоговое видео". Labs.ericsson.com. Получено 2012-09-12.
- ^ "Страницы состояния Rtcweb". Tools.ietf.org. Получено 2012-09-12.
- ^ "draft-jesup-rtcweb-data-protocol-00 - протокол канала данных WebRTC". Tools.ietf.org. Получено 2012-09-12.
- ^ «WebRTC 1.0: обмен данными между браузерами в реальном времени (рекомендация W3C от 2 ноября 2017 г.)». 2 ноября 2017.
- ^ «Захват мультимедиа и потоки: getUserMedia». W3C. 2013-09-03. Получено 2014-01-15.
- ^ «WebRTC: интерфейс RTCPeerConnection». W3C. 2013-09-10. Получено 2014-01-15.
- ^ "WebRTC: RTCDataChannel". W3C. 2013-09-10. Получено 2014-01-15.
- ^ «Идентификаторы API статистики WebRTC». W3C. 2014-09-29.
- ^ Цахи Левент-Леви (13 апреля 2020 г.). «Сервер WebRTC: что это такое?». BlogGeek.me.
- ^ Цахи Левент-Леви (13 ноября 2014 г.). «Matrix.org и WebRTC: интервью с Мэтью Ходжсоном». BlogGeek.me.
- ^ "Группа сообщества W3C ORTC (Object Real-time Communications)".
- ^ «Поймай рыбу-вейвера: ирландская телекоммуникационная компания разрабатывает новый тип облачного телефона». Ноябрь 2017 г.
- ^ «ORTC API теперь доступен в Microsoft Edge». Microsoft. 2015-09-18.
- ^ Примечания к Firefox - Рабочий стол. Mozilla.org (25 июня 2013 г.). Проверено 11 апреля 2014.
- ^ «Сафари 11.0». Apple Inc.. Получено 6 июн 2017.
- ^ Новости Opera. blogs.opera.com (2013-11-19). Проверено 17 сентября 2015.
- ^ Примечания к Firefox - Рабочий стол. Mozilla.org (17 сентября 2013 г.). Проверено 4 августа 2014.
- ^ «Примечания к выпуску GStreamer 1.14». gstreamer.freedesktop.org. Получено 2019-12-19. с версии 1.14
- ^ Утечка огромных брешей в системе безопасности реальных IP-адресов пользователей VPN TorrentFreak.com (30.01.2015). Проверено 21 февраля 2015.
- ^ Запросы IP-адресов STUN для WebRTC Проверено 21 февраля 2015.
- ^ Раймонд Хилл (26 марта 2016 г.). «Предотвратить утечку через WebRTC локального IP-адреса». Документация uBlock Origin. Получено 1 сен 2016.
дальнейшее чтение
- Пруст, С., изд. (Май 2016). Дополнительные аудиокодеки WebRTC для взаимодействия. IETF. Дои:10.17487 / RFC7875. RFC 7875. Получено 2016-10-12.
- Валин, Дж. М .; Бран, К. (май 2016 г.). Аудиокодек WebRTC и требования к обработке. IETF. Дои:10.17487 / RFC7874. RFC 7874. Получено 2016-10-12.
- Роуч, А. Б. (март 2016 г.). Требования к обработке видео и кодекам WebRTC. IETF. Дои:10.17487 / RFC7742. RFC 7742. Получено 2016-10-12.
- Perumal, M .; Крыло, Д .; Ravindranath, R .; Редди, Т .; Томсон, М. (октябрь 2015 г.). Утилиты обхода сеанса для использования NAT (STUN) для обеспечения свежести согласия. IETF. Дои:10.17487 / RFC7675. RFC 7675. Получено 2016-10-12.
- Holmberg, C .; Hakansson, S .; Эрикссон, Г. (март 2015 г.). Сценарии и требования к веб-коммуникациям в реальном времени. IETF. Дои:10.17487 / RFC7478. RFC 7478. Получено 2016-10-12.