• Save
XMPP
Upcoming SlideShare
Loading in...5
×
 

XMPP

on

  • 3,834 views

Protocollo di IM

Protocollo di IM

Statistics

Views

Total Views
3,834
Views on SlideShare
3,816
Embed Views
18

Actions

Likes
2
Downloads
0
Comments
0

1 Embed 18

http://www.slideshare.net 18

Accessibility

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    XMPP XMPP Presentation Transcript

    • 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 •