SlideShare a Scribd company logo
1 of 12
Seminario di Protocolli di reti:
           XMPP


     Bertolini Roberto
       Felice Fabio
INDICE
• Introduzione
• Architettura generale e componenti fondamentali
• Schema di indirizzamento
• XML Stream
• XML Stanza
• Esempi
• Passi fondamentali di XMPP
• Negoziazione TLS/SASL
• Resource Binding
• Estensioni
INTRODUZIONE
XMPP (Extensible Messaging and Presence Protocol) è un protocollo aperto
basato su XML

• utilizzato da applicazioni di IM (Instant Messaging), di presenza, di
collaborazione, di whiteboarding ed in generale da servizi di tipo domanda e
risposta

• XMPP è estendibile (estensioni definite da Jabber Software Foundation)


Storia di XMPP:

•   1998: Jeremie Miller avvia il progetto Jabber
•   2001: nasce Jabber Software Foundation
•   2002: JSF sottopone il protocollo XMPP a IETF
•   2002: IETF forma il gruppo di lavoro XMPP
•   2004: IETF pubblica gli RFC di XMPP (3920-3923)
ARCHITETTURA E COMPONENTI
      FONDAMENTALI


        L’architettura XMPP è basata sul modello
        Client-Server, ed è composta dai seguenti componenti:

            •Server:



            •Client:



            •Gateway:
SCHEMA DI INDIRIZZAMENTO
In XMPP ogni entità in rete è indirizzabile in maniera univoca attraverso un indirizzo
chiamato JID.




Il JID può essere:

BARE: node@domain (identifica solamente il nodo)

FULL: node@domain/resource ( identifica un’ entità all’interno di un nodo)
XML STREAM
L’XML Stream è un contenitore per lo scambio di elementi XML tra due entità attraverso la
rete, identificato da un tag di apertura “<stream>” e uno di chiusura “</stream>”.

All’interno di esso è possibile trasmettere diversi elementi XML:

•XML Stanza
•Elementi di negoziazione TLS e/o SASL
XML STANZA
L’XML Stanza è un blocco di informazioni strutturate che viene spedite da un’entità
all’altra all’interno dell’XML Stream.

L’XML Stanza è identificata da un tag di apertura e di chiusura.

Ci sono diversi tipi di XML Stanza che si differenziano a seconda del messaggio che si
vuole inviare; di default il core XMPP prevede:

 <message>:                          <presence>:                   <iq>:

  <message                            <presence from='wall-         <iq
   to='eve@space.com'                 e@earth.net/city'             from='eve@space.com/sp
                                      to='eve@space.com'/>          ace_station' type='get'
  from='walle@earth.com/limewire12                                  id='roster_1'>
  345'                                                              <query
     type='chat'                                                    xmlns='jabber:iq:roster'/>
     xml:lang='en'>                                                 </iq>
   <body>Oh, Eve.</body>
  </message>
Esempio di XML Stream e XML Stanza:
                                                   ESEMPI
        C: <?xml version='1.0'?>                                                 ATTRIBUTI STREAM
          <stream:stream
            to='example.com'                                           to: utilizzato per indicare l’entità
            xmlns='jabber:client'                                      ricevente;
            xmlns:stream='http://etherx.jabber.org/streams'            from: necessario per rispondere al
            version='1.0'>
        S: <?xml version='1.0'?>
                                                                       mittente;
          <stream:stream                                               id: identificatore univoco creato dal
            from='example.com'                                         ricevente per tenere traccia della sessione;
            id='someid'                                                xml:lang: linguaggio di default usato
            xmlns='jabber:client'                                      nella comunicazione;
            xmlns:stream='http://etherx.jabber.org/streams'            version: versione XML utilizzata.
            version='1.0'>

        ... criptazione, autenticazione, resource binding...                     ATTRIBUTI STANZA

        C: <message from='juliet@example.com'                          to: JID del destinatario;
                 to='romeo@example.net'
                 xml:lang='en'>
                                                                       from: JID del mittente;
        C: <body>Art thou not Romeo, and a Montague?</body>            id: (opzionale) e usato dall’entità mittente
        C: </message>                                                  per monitorare le interazioni inerenti a IQ
        S: <message from='romeo@example.net'                           Stanza;
                 to='juliet@example.com'                               type: scopo o contesto del messaggio,
                 xml:lang='en'>                                        presenza o IQ Stanza. Il valore
        S: <body>Neither, fair saint, if either thee dislike.</body>
        S: </message>
                                                                       ammissibile dipende dal tipo di XML
        C: </stream:stream>                                            Stanza;
        S: </stream:stream>                                            Xml:lang: linguaggio di default usato
                                                                       nella comunicazione.
PASSI FONDAMENTALI DI XMPP
I passi fondamentali per stabilire una comunicazione con XMPP sono:

1. Determine the hostname and port at which to connect
2. Open a TCP connection
3. Open an XML stream
4. Complete TLS negotiation for channel encryption (recommended)
5. Complete SASL negotiation for authentication
6. Bind a resource to the stream
7. Exchange an unbounded number of XML stanzas with other entities on the
   network
8. Close the XML stream
9. Close the TCP connection
TLS/SASL
Dopo aver stabilito una connessione TCP e aver aperto un flusso XML si procede con la
negoziazione TLS e SASL.

TLS (Transport Layer Security ):

•Permette di criptare lo stream XML e quindi realizzare un trasferimento di dati sicuro
tra le due entità.

•L’uso di TLS non è obbligatorio, quindi il client comunica al server, tramite
STARTTLS, la volontà di usare un flusso sicuro per la comunicazione.


SASL (Simple Authentication and Security Layer):

•Permette l’autenticazione delle due entità coinvolte nella comunicazione.
RESOURCE BINDING
Successivamente all’autenticazione SASL l’entità che inizia la connessione potrebbe voler
eseguire il binding delle risorse(la parte resource del JID), oppure potrebbe anche essere
obbligato a farlo sotto richiesta del server.

Fino a questo punto il client è identificato attraverso un BARE JID
(node@domain), effettuando il resource binding si aggiunge al BARE JID del client un
identificatore di risorsa, generando cosi un FULL JID (node@domani/resource) che viene
utilizzato come indirizzo all’interno dello stream e che permette quindi lo scambio di
XML Stanza.
   Il client lascia al server il compito di          Il client scieglie una specifica risorsa:
   sciegliere la risorsa:
                                                    <iq type='set' id='bind_2'>
   <iq type='set' id='bind_1'>                          <bind
       <bind                                        xmlns='urn:ietf:params:xml:ns:xmpp
   xmlns='urn:ietf:params:xml:ns:xmpp-              -bind‘>
   bind'/>                                          <resource>someresource</resource>
    </iq>                                               </bind>
                                                       </iq>

In seguito il server invia un messaggio di accettazione,di rifiuto o di errore
ESTENSIONI
Il protocollo XMPP viene costantemente esteso dalla XMPP Standards
Foundation (XSF); tra le più interessanti troviamo:


•File transfert

•Jingle

•Privacy List

•Use avatar

•Invisibility
    •
    •
    •
    •
    •
             Tutte le estensioni si trovano su www.xmpp.org/extensions
    •

More Related Content

Viewers also liked

Den attraktiva gymnasieskolan
Den attraktiva gymnasieskolanDen attraktiva gymnasieskolan
Den attraktiva gymnasieskolanHanna Metsis
 
Using iOS Apps to Foster Literacy Learning
Using iOS Apps to Foster Literacy LearningUsing iOS Apps to Foster Literacy Learning
Using iOS Apps to Foster Literacy LearningRichard Beach
 
Ek 1552 S Eng
Ek 1552 S EngEk 1552 S Eng
Ek 1552 S Engcipresu
 
Whole brain teaching
Whole brain teachingWhole brain teaching
Whole brain teachingGalih Praz
 
Raport anual Habitat for Humanity Cluj 2008
Raport anual Habitat for Humanity Cluj 2008Raport anual Habitat for Humanity Cluj 2008
Raport anual Habitat for Humanity Cluj 2008guestb0f8dab
 
As Media Critical evaluation - Jared 2009
As Media Critical evaluation - Jared 2009As Media Critical evaluation - Jared 2009
As Media Critical evaluation - Jared 2009guest341e1c2
 
올챙이 확장으로 살펴보는 이클립스 확장
올챙이 확장으로 살펴보는 이클립스 확장올챙이 확장으로 살펴보는 이클립스 확장
올챙이 확장으로 살펴보는 이클립스 확장cho hyun jong
 
маркетинг в сфере услуг
маркетинг в сфере услугмаркетинг в сфере услуг
маркетинг в сфере услугNastena8
 
Huw Davies Better By Design V3
Huw Davies Better By Design V3Huw Davies Better By Design V3
Huw Davies Better By Design V3Marina111
 
C2 Information Technology Advisors
C2 Information Technology AdvisorsC2 Information Technology Advisors
C2 Information Technology Advisorscliffordclarke
 
The Benefits and Challenges of Being Connected: Living, Learning, and Teachin...
The Benefits and Challenges of Being Connected: Living, Learning, and Teachin...The Benefits and Challenges of Being Connected: Living, Learning, and Teachin...
The Benefits and Challenges of Being Connected: Living, Learning, and Teachin...Richard Beach
 
Lra belshaw discussant
Lra belshaw discussant Lra belshaw discussant
Lra belshaw discussant Richard Beach
 
Olli oct17 workplace
Olli oct17 workplaceOlli oct17 workplace
Olli oct17 workplaceRichard Beach
 

Viewers also liked (20)

Down syndrome 2
Down syndrome 2Down syndrome 2
Down syndrome 2
 
Den attraktiva gymnasieskolan
Den attraktiva gymnasieskolanDen attraktiva gymnasieskolan
Den attraktiva gymnasieskolan
 
Using iOS Apps to Foster Literacy Learning
Using iOS Apps to Foster Literacy LearningUsing iOS Apps to Foster Literacy Learning
Using iOS Apps to Foster Literacy Learning
 
Child abuse ppt
Child abuse pptChild abuse ppt
Child abuse ppt
 
Ek 1552 S Eng
Ek 1552 S EngEk 1552 S Eng
Ek 1552 S Eng
 
Voco Dubium
Voco DubiumVoco Dubium
Voco Dubium
 
Whole brain teaching
Whole brain teachingWhole brain teaching
Whole brain teaching
 
Eclipse RAP
Eclipse RAPEclipse RAP
Eclipse RAP
 
Raport anual Habitat for Humanity Cluj 2008
Raport anual Habitat for Humanity Cluj 2008Raport anual Habitat for Humanity Cluj 2008
Raport anual Habitat for Humanity Cluj 2008
 
Lawrenceroleplay
LawrenceroleplayLawrenceroleplay
Lawrenceroleplay
 
As Media Critical evaluation - Jared 2009
As Media Critical evaluation - Jared 2009As Media Critical evaluation - Jared 2009
As Media Critical evaluation - Jared 2009
 
올챙이 확장으로 살펴보는 이클립스 확장
올챙이 확장으로 살펴보는 이클립스 확장올챙이 확장으로 살펴보는 이클립스 확장
올챙이 확장으로 살펴보는 이클립스 확장
 
Draw2D
Draw2DDraw2D
Draw2D
 
маркетинг в сфере услуг
маркетинг в сфере услугмаркетинг в сфере услуг
маркетинг в сфере услуг
 
Huw Davies Better By Design V3
Huw Davies Better By Design V3Huw Davies Better By Design V3
Huw Davies Better By Design V3
 
C2 Information Technology Advisors
C2 Information Technology AdvisorsC2 Information Technology Advisors
C2 Information Technology Advisors
 
Taking Wi-Fi Where It’s Never Gone Before
Taking Wi-Fi Where It’s Never Gone BeforeTaking Wi-Fi Where It’s Never Gone Before
Taking Wi-Fi Where It’s Never Gone Before
 
The Benefits and Challenges of Being Connected: Living, Learning, and Teachin...
The Benefits and Challenges of Being Connected: Living, Learning, and Teachin...The Benefits and Challenges of Being Connected: Living, Learning, and Teachin...
The Benefits and Challenges of Being Connected: Living, Learning, and Teachin...
 
Lra belshaw discussant
Lra belshaw discussant Lra belshaw discussant
Lra belshaw discussant
 
Olli oct17 workplace
Olli oct17 workplaceOlli oct17 workplace
Olli oct17 workplace
 

Similar to XMPP

[ITA] Introduzione ai web services: SOAP, WSDL, UDDI
[ITA] Introduzione ai web services: SOAP, WSDL, UDDI[ITA] Introduzione ai web services: SOAP, WSDL, UDDI
[ITA] Introduzione ai web services: SOAP, WSDL, UDDIMarco Brambilla
 
Gli HTTP Security Header e altri elementi da sapere su HTTP in un Web Applica...
Gli HTTP Security Header e altri elementi da sapere su HTTP in un Web Applica...Gli HTTP Security Header e altri elementi da sapere su HTTP in un Web Applica...
Gli HTTP Security Header e altri elementi da sapere su HTTP in un Web Applica...Simone Onofri
 
Gianfrasoft Corso Di Php Parte 1
Gianfrasoft   Corso Di Php   Parte 1Gianfrasoft   Corso Di Php   Parte 1
Gianfrasoft Corso Di Php Parte 1Gianfranco Fedele
 
Introduzione al linguaggio PHP
Introduzione al linguaggio PHPIntroduzione al linguaggio PHP
Introduzione al linguaggio PHPextrategy
 
Web Semantico: da XHTML a RDF in 3 click
Web Semantico: da XHTML a RDF in 3 clickWeb Semantico: da XHTML a RDF in 3 click
Web Semantico: da XHTML a RDF in 3 clickSimone Onofri
 
Job Finder
Job FinderJob Finder
Job Finderbeppe66
 
Job Finder
Job FinderJob Finder
Job Finderbeppe66
 
Job Finder
Job FinderJob Finder
Job Finderbeppe66
 
Snort React per Webfiltering : "Soluzioni per le Leggi-Lista"
Snort React per Webfiltering : "Soluzioni per le Leggi-Lista"Snort React per Webfiltering : "Soluzioni per le Leggi-Lista"
Snort React per Webfiltering : "Soluzioni per le Leggi-Lista"Camelug Fava
 
14 Linux Network Tenet Ssh Ecc
14 Linux Network Tenet Ssh Ecc14 Linux Network Tenet Ssh Ecc
14 Linux Network Tenet Ssh EccMauro Ferrigno
 
13 Linux Network Comandi
13 Linux Network Comandi13 Linux Network Comandi
13 Linux Network ComandiMauro Ferrigno
 
Sviluppo web con Ruby on Rails
Sviluppo web con Ruby on RailsSviluppo web con Ruby on Rails
Sviluppo web con Ruby on Railsjekil
 

Similar to XMPP (20)

[ITA] Introduzione ai web services: SOAP, WSDL, UDDI
[ITA] Introduzione ai web services: SOAP, WSDL, UDDI[ITA] Introduzione ai web services: SOAP, WSDL, UDDI
[ITA] Introduzione ai web services: SOAP, WSDL, UDDI
 
Gli HTTP Security Header e altri elementi da sapere su HTTP in un Web Applica...
Gli HTTP Security Header e altri elementi da sapere su HTTP in un Web Applica...Gli HTTP Security Header e altri elementi da sapere su HTTP in un Web Applica...
Gli HTTP Security Header e altri elementi da sapere su HTTP in un Web Applica...
 
Ajax
AjaxAjax
Ajax
 
Gianfrasoft Corso Di Php Parte 1
Gianfrasoft   Corso Di Php   Parte 1Gianfrasoft   Corso Di Php   Parte 1
Gianfrasoft Corso Di Php Parte 1
 
Introduzione al linguaggio PHP
Introduzione al linguaggio PHPIntroduzione al linguaggio PHP
Introduzione al linguaggio PHP
 
Web Semantico: da XHTML a RDF in 3 click
Web Semantico: da XHTML a RDF in 3 clickWeb Semantico: da XHTML a RDF in 3 click
Web Semantico: da XHTML a RDF in 3 click
 
Elaborato WebRTC
Elaborato WebRTCElaborato WebRTC
Elaborato WebRTC
 
Job Finder
Job FinderJob Finder
Job Finder
 
Job Finder
Job FinderJob Finder
Job Finder
 
Job Finder
Job FinderJob Finder
Job Finder
 
Corso Javascript
Corso JavascriptCorso Javascript
Corso Javascript
 
Snort React per Webfiltering : "Soluzioni per le Leggi-Lista"
Snort React per Webfiltering : "Soluzioni per le Leggi-Lista"Snort React per Webfiltering : "Soluzioni per le Leggi-Lista"
Snort React per Webfiltering : "Soluzioni per le Leggi-Lista"
 
Java lezione 14
Java lezione 14Java lezione 14
Java lezione 14
 
Fast Wsdl Tutorial
Fast Wsdl TutorialFast Wsdl Tutorial
Fast Wsdl Tutorial
 
14 Linux Network Tenet Ssh Ecc
14 Linux Network Tenet Ssh Ecc14 Linux Network Tenet Ssh Ecc
14 Linux Network Tenet Ssh Ecc
 
13 Linux Network Comandi
13 Linux Network Comandi13 Linux Network Comandi
13 Linux Network Comandi
 
Packet Sniffing
Packet SniffingPacket Sniffing
Packet Sniffing
 
HTML e CSS
HTML e CSSHTML e CSS
HTML e CSS
 
Sviluppo web con Ruby on Rails
Sviluppo web con Ruby on RailsSviluppo web con Ruby on Rails
Sviluppo web con Ruby on Rails
 
Corso c++
Corso c++Corso c++
Corso c++
 

Recently uploaded

Programma Biennale Tecnologia 2024 Torino
Programma Biennale Tecnologia 2024 TorinoProgramma Biennale Tecnologia 2024 Torino
Programma Biennale Tecnologia 2024 TorinoQuotidiano Piemontese
 
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...Associazione Digital Days
 
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...Associazione Digital Days
 
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...Associazione Digital Days
 
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...Associazione Digital Days
 
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”Associazione Digital Days
 
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...Associazione Digital Days
 
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...Associazione Digital Days
 
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...Associazione Digital Days
 

Recently uploaded (9)

Programma Biennale Tecnologia 2024 Torino
Programma Biennale Tecnologia 2024 TorinoProgramma Biennale Tecnologia 2024 Torino
Programma Biennale Tecnologia 2024 Torino
 
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
 
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
 
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
 
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
 
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
 
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
 
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
 
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
 

XMPP

  • 1. Seminario di Protocolli di reti: XMPP Bertolini Roberto Felice Fabio
  • 2. INDICE • Introduzione • Architettura generale e componenti fondamentali • Schema di indirizzamento • XML Stream • XML Stanza • Esempi • Passi fondamentali di XMPP • Negoziazione TLS/SASL • Resource Binding • Estensioni
  • 3. INTRODUZIONE XMPP (Extensible Messaging and Presence Protocol) è un protocollo aperto basato su XML • utilizzato da applicazioni di IM (Instant Messaging), di presenza, di collaborazione, di whiteboarding ed in generale da servizi di tipo domanda e risposta • XMPP è estendibile (estensioni definite da Jabber Software Foundation) Storia di XMPP: • 1998: Jeremie Miller avvia il progetto Jabber • 2001: nasce Jabber Software Foundation • 2002: JSF sottopone il protocollo XMPP a IETF • 2002: IETF forma il gruppo di lavoro XMPP • 2004: IETF pubblica gli RFC di XMPP (3920-3923)
  • 4. ARCHITETTURA E COMPONENTI FONDAMENTALI L’architettura XMPP è basata sul modello Client-Server, ed è composta dai seguenti componenti: •Server: •Client: •Gateway:
  • 5. SCHEMA DI INDIRIZZAMENTO In XMPP ogni entità in rete è indirizzabile in maniera univoca attraverso un indirizzo chiamato JID. Il JID può essere: BARE: node@domain (identifica solamente il nodo) FULL: node@domain/resource ( identifica un’ entità all’interno di un nodo)
  • 6. XML STREAM L’XML Stream è un contenitore per lo scambio di elementi XML tra due entità attraverso la rete, identificato da un tag di apertura “<stream>” e uno di chiusura “</stream>”. All’interno di esso è possibile trasmettere diversi elementi XML: •XML Stanza •Elementi di negoziazione TLS e/o SASL
  • 7. XML STANZA L’XML Stanza è un blocco di informazioni strutturate che viene spedite da un’entità all’altra all’interno dell’XML Stream. L’XML Stanza è identificata da un tag di apertura e di chiusura. Ci sono diversi tipi di XML Stanza che si differenziano a seconda del messaggio che si vuole inviare; di default il core XMPP prevede: <message>: <presence>: <iq>: <message <presence from='wall- <iq to='eve@space.com' e@earth.net/city' from='eve@space.com/sp to='eve@space.com'/> ace_station' type='get' from='walle@earth.com/limewire12 id='roster_1'> 345' <query type='chat' xmlns='jabber:iq:roster'/> xml:lang='en'> </iq> <body>Oh, Eve.</body> </message>
  • 8. Esempio di XML Stream e XML Stanza: ESEMPI C: <?xml version='1.0'?> ATTRIBUTI STREAM <stream:stream to='example.com' to: utilizzato per indicare l’entità xmlns='jabber:client' ricevente; xmlns:stream='http://etherx.jabber.org/streams' from: necessario per rispondere al version='1.0'> S: <?xml version='1.0'?> mittente; <stream:stream id: identificatore univoco creato dal from='example.com' ricevente per tenere traccia della sessione; id='someid' xml:lang: linguaggio di default usato xmlns='jabber:client' nella comunicazione; xmlns:stream='http://etherx.jabber.org/streams' version: versione XML utilizzata. version='1.0'> ... criptazione, autenticazione, resource binding... ATTRIBUTI STANZA C: <message from='juliet@example.com' to: JID del destinatario; to='romeo@example.net' xml:lang='en'> from: JID del mittente; C: <body>Art thou not Romeo, and a Montague?</body> id: (opzionale) e usato dall’entità mittente C: </message> per monitorare le interazioni inerenti a IQ S: <message from='romeo@example.net' Stanza; to='juliet@example.com' type: scopo o contesto del messaggio, xml:lang='en'> presenza o IQ Stanza. Il valore S: <body>Neither, fair saint, if either thee dislike.</body> S: </message> ammissibile dipende dal tipo di XML C: </stream:stream> Stanza; S: </stream:stream> Xml:lang: linguaggio di default usato nella comunicazione.
  • 9. PASSI FONDAMENTALI DI XMPP I passi fondamentali per stabilire una comunicazione con XMPP sono: 1. Determine the hostname and port at which to connect 2. Open a TCP connection 3. Open an XML stream 4. Complete TLS negotiation for channel encryption (recommended) 5. Complete SASL negotiation for authentication 6. Bind a resource to the stream 7. Exchange an unbounded number of XML stanzas with other entities on the network 8. Close the XML stream 9. Close the TCP connection
  • 10. TLS/SASL Dopo aver stabilito una connessione TCP e aver aperto un flusso XML si procede con la negoziazione TLS e SASL. TLS (Transport Layer Security ): •Permette di criptare lo stream XML e quindi realizzare un trasferimento di dati sicuro tra le due entità. •L’uso di TLS non è obbligatorio, quindi il client comunica al server, tramite STARTTLS, la volontà di usare un flusso sicuro per la comunicazione. SASL (Simple Authentication and Security Layer): •Permette l’autenticazione delle due entità coinvolte nella comunicazione.
  • 11. RESOURCE BINDING Successivamente all’autenticazione SASL l’entità che inizia la connessione potrebbe voler eseguire il binding delle risorse(la parte resource del JID), oppure potrebbe anche essere obbligato a farlo sotto richiesta del server. Fino a questo punto il client è identificato attraverso un BARE JID (node@domain), effettuando il resource binding si aggiunge al BARE JID del client un identificatore di risorsa, generando cosi un FULL JID (node@domani/resource) che viene utilizzato come indirizzo all’interno dello stream e che permette quindi lo scambio di XML Stanza. Il client lascia al server il compito di Il client scieglie una specifica risorsa: sciegliere la risorsa: <iq type='set' id='bind_2'> <iq type='set' id='bind_1'> <bind <bind xmlns='urn:ietf:params:xml:ns:xmpp xmlns='urn:ietf:params:xml:ns:xmpp- -bind‘> bind'/> <resource>someresource</resource> </iq> </bind> </iq> In seguito il server invia un messaggio di accettazione,di rifiuto o di errore
  • 12. ESTENSIONI Il protocollo XMPP viene costantemente esteso dalla XMPP Standards Foundation (XSF); tra le più interessanti troviamo: •File transfert •Jingle •Privacy List •Use avatar •Invisibility • • • • • Tutte le estensioni si trovano su www.xmpp.org/extensions •