Jingle è un framework standard utilizzato per le comunicazioni peer-to-peer. Consente di stabilire una comunicazione multimediale tra due dispositivi XMPP (Extensible Messaging and Presence Protocol). La negoziazione tra i due viene effettuata su un canale XMPP, mentre i media effettivi utilizzano un canale dati dedicato separato che utilizza il protocollo RTP (Real-time Transport Protocol).
Lo scopo principale di Jingle è facilitare la comunicazione utilizzando VoIP e videoconferenze. È stato progettato da Google e dalla XMPP Standards Foundation. [1] Non è destinato a sostituire altri protocolli come SIP (Session Initiation Protocol) che consentono comunicazioni vocali più generali, né supporta una gamma completa di funzioni di telefonia come l'inoltro di chiamata, i trasferimenti e così via. Tuttavia, è progettato per funzionare insieme a SIP in modo che i clienti XMPP possano utilizzare le reti VoIP esistenti di un fornitore all'ingrosso VoIP internazionale specializzato come IDT.
Ok, questa è una breve panoramica di ciò che Jingle è e fa. Se sei ancora con noi e vuoi saperne di più, continua a leggere per ulteriori dettagli sull'utilizzo del framework.
Come funziona Jingle
Come abbiamo visto, Jingle consente a una coppia di client XMPP di stabilire, mantenere e terminare una sessione multimediale. La multimedialità in questo caso generalmente copre voce e video. La negoziazione tra i due avviene su XMPP mentre il trasferimento multimediale avviene al di fuori di esso.
Prima di andare oltre, dobbiamo sapere qualcosa su XMPP. XMPP è un insieme di standard open source per la messaggistica istantanea e la chat tramite voce e video. È stato progettato principalmente per fornire un'alternativa aperta e decentralizzata ai sistemi di messaggistica proprietari e chiusi esistenti al momento della sua introduzione.
La chiave del successo di XMPP è che dispone di un'infrastruttura decentralizzata, allo stesso modo della posta elettronica, in modo che chiunque possa gestire il proprio server XMPP e controllare le proprie comunicazioni. XMPP può anche essere eseguito in modo sicuro, isolato dalle reti pubbliche, per fornire comunicazioni private. È possibile eseguire numerose tecnologie utilizzando XMPP e Jingle è solo una.
Quando si desidera avviare una sessione multimediale, il primo client, l'"iniziatore", invia un invito, una "offerta di inizio sessione" al secondo. Il secondo client, il "risponditore", lo riconosce e chiede all'utente se desidera procedere, sebbene il client possa essere configurato per accettare automaticamente richieste da particolari iniziatori, in entrambi i casi il risponditore accetta la sessione dall'iniziatore.
Accettando la sessione, il risponditore risponderà con un elenco dei codec che è in grado di accettare. L'iniziatore accetta la risposta e i due negozieranno quindi quale codec utilizzare per il trasporto multimediale e avvieranno una sessione multimediale.
Al termine della chiamata, ciascuna delle parti può chiedere di terminare la sessione, una volta che l'altro lo ha confermato, il collegamento tra i due viene interrotto. Semplice.
Gestione delle sessioni
Affinché tutto ciò funzioni, Jingle deve controllare il flusso della sessione. Nell'impostare la sessione, l'iniziatore deve scoprire quale delle risorse XMPP disponibili del risponditore è la migliore per l'applicazione e quale metodo di trasporto può essere utilizzato. Facoltativamente può anche specificare una condizione di sicurezza che deve essere soddisfatta, ad esempio un collegamento crittografato, prima che i due client possano scambiarsi dati.
Esiste un certo grado di flessibilità nelle sessioni di Jingle per cui una volta che una sessione è attiva, non deve necessariamente rimanere fissa nella sua configurazione. Le sessioni attive possono essere modificate per modificare o rimuovere contenuti, ad esempio mantenendo la voce mentre si interrompe il video, o modificando il protocollo di trasporto. Jingle può anche inviare messaggi informativi tra client.
Sotto Jingle sono disponibili due diversi tipi di trasporto. Datagram ha componenti che scambiano pacchetti. Questi possono avere qualsiasi lunghezza e possono essere ricevuti in qualsiasi ordine. Quando si utilizza Datagram, il trasporto deve specificare quali componenti sono necessari e come verranno utilizzati.
L’alternativa è il trasporto in streaming; questo scambia flussi bidirezionali simili al metodo visto in TCP. I pacchetti sul flusso vengono ricevuti in ordine e ciascuno deve avere un identificatore di stringa e una lunghezza massima del pacchetto. Il mezzo di trasporto da utilizzare viene stabilito all'inizio della sessione.
Proteggere Jingle
Come con qualsiasi servizio online, la sicurezza è una considerazione importante quando si utilizza Jingle. Utilizzare una qualche forma di sicurezza del livello di trasporto è un buon inizio e, come abbiamo visto, è possibile condizionare l'avvio di una sessione alla sua presenza.
Jingle può anche essere vulnerabile agli attacchi DDoS che bombardano i client con troppe richieste ed è importante proteggersi configurando il sistema in modo che accetti solo connessioni da entità conosciute. Allo stesso modo, puoi evitare l'intercettazione e il reindirizzamento delle chiamate assicurandoti che gli ID di sessione corrispondano.
[1] https://xmpp.org