Jingle — это стандартная среда, используемая для одноранговой связи. Он позволяет установить мультимедийную связь между двумя устройствами Extensible Messaging and Presence Protocol (XMPP). Переговоры между ними выполняются по каналу XMPP, в то время как реальный носитель использует отдельный выделенный канал данных, в котором используется транспортный протокол реального времени (RTP).
Основная цель Jingle — облегчить общение с помощью VoIP и видеоконференций. Он был разработан Google и Фондом стандартов XMPP. [1] Он не предназначен для замены других протоколов, таких как SIP (протокол инициирования сеанса), которые обеспечивают более общую голосовую связь, а также не поддерживает полный спектр функций телефонии, таких как переадресация вызовов, переводы и т. д. Однако он предназначен для работы вместе с SIP, чтобы клиенты XMPP могли использовать существующие сети VoIP от специализированного международного оптового поставщика VoIP, такого как IDT.
Хорошо, это краткий обзор того, что такое Jingle и чем он занимается. Если вы все еще с нами и хотите узнать больше, прочтите дополнительную информацию об использовании фреймворка.
Как работает Джингл
Как мы видели, Jingle позволяет паре клиентов XMPP устанавливать, поддерживать и завершать мультимедийный сеанс. Мультимедиа в этом случае обычно охватывает голос и видео. Переговоры между ними происходят через XMPP, а передача мультимедиа происходит за его пределами.
Прежде чем идти дальше, нам нужно немного узнать о XMPP. XMPP — это набор стандартов с открытым исходным кодом для обмена мгновенными сообщениями и чата с использованием голоса и видео. Он был разработан главным образом для того, чтобы предоставить открытую, децентрализованную альтернативу закрытым, проприетарным системам обмена сообщениями, существовавшим на момент его появления.
Ключом к успеху XMPP является то, что он имеет децентрализованную инфраструктуру, такую же, как и электронная почта, так что каждый может запустить собственный сервер XMPP и контролировать свои коммуникации. XMPP также может работать безопасно, изолированно от общедоступных сетей, чтобы обеспечить конфиденциальную связь. С использованием XMPP можно использовать ряд технологий, среди которых Jingle — лишь одна.
Когда вы хотите начать мультимедийный сеанс, первый клиент «инициатор» отправляет приглашение, «предложение инициирования сеанса» второму. Второй клиент, «ответчик», подтверждает это и спрашивает пользователя, хотят ли они продолжить – хотя клиент может быть настроен на автоматический прием запросов от определенных инициаторов – в любом случае ответчик принимает сеанс от инициатора.
Приняв сеанс, ответчик ответит списком кодеков, которые он может принять. Инициатор принимает ответ, и затем они согласовывают, какой кодек будет использоваться для транспортировки мультимедиа, и начинают медиасеанс.
В конце разговора любая из сторон может попросить прекратить сеанс; как только другая сторона подтвердит это, связь между ними будет разорвана. Простой.
управление сессиями
Чтобы все это работало, Jingle должен контролировать поток сеанса. При настройке сеанса инициатор должен выяснить, какой из доступных ресурсов XMPP ответчика лучше всего подходит для приложения и какой метод транспорта можно использовать. Он также может дополнительно указать условие безопасности, которое должно быть выполнено (например, зашифрованная ссылка), прежде чем двум клиентам будет разрешено обмениваться данными.
Сеансы Jingle обладают определенной степенью гибкости, поэтому, когда сеанс активен, его конфигурация не обязательно должна оставаться неизменной. Активные сеансы можно изменить, чтобы изменить или удалить контент (например, сохранить голосовую связь при остановке видео) или изменить транспортный протокол. Jingle также может отправлять информационные сообщения между клиентами.
В Jingle доступны два разных типа транспорта. В датаграмме есть компоненты, которые обмениваются пакетами. Они могут быть любой длины и могут быть получены в любом порядке. При использовании дейтаграмм транспорт должен указать, какие компоненты необходимы и как они будут использоваться.
Альтернативой является потоковая передача; при этом происходит обмен двунаправленными потоками, аналогичный методу, используемому в TCP. Пакеты в потоке принимаются по порядку, и каждый из них должен иметь строковый идентификатор и максимальную длину пакета. Какой транспорт следует использовать, устанавливается в начале сеанса.
Защита Джингла
Как и в случае с любым онлайн-сервисом, безопасность является важным фактором при использовании Jingle. Использование какой-либо формы безопасности транспортного уровня — хорошее начало, и, как мы видели, вы можете сделать запуск сеанса обусловленным его наличием.
Jingle также может быть уязвим для DDoS-атак, бомбардирующих клиентов слишком большим количеством запросов, и важно защититься от этого, настроив систему так, чтобы она принимала соединения только от известных объектов. Аналогичным образом вы можете избежать перехвата и перенаправления вызовов, обеспечив совпадение идентификаторов сеансов.
[1] https://xmpp.org