42
eXtensible Messaging and Presence Protocol Présenté par : Mohammed AZIRAR [email protected] « Protocole extensible de présence et de messagerie »

مقدمة حول XMPP

Embed Size (px)

DESCRIPTION

عرض حول "XMPP" قدمه محمد أزيرار في اللقاء الأول لهواة التقنية المغاربة، يوم 4 يوليوز 2010.

Citation preview

Page 1: مقدمة حول XMPP

eXtensible Messaging and Presence Protocol

Présenté par : Mohammed AZIRAR [email protected]

« Protocole extensible de présence et de messagerie »

Page 2: مقدمة حول XMPP

Plan de présentation

• Introduction • Applications et usages • XMPP en détail

o Services o Architecture o Technologies supportés o Adressage XMPP o Flux XML o Stanzas de XMPP

• Démonstration • Conclusion

Mohammed Azirar 04/07/2010

Page 3: مقدمة حول XMPP

Introduction • Protocole standard ouvert ;

• Utilisé pour une large variété de systèmes de communication en temps réel ;

• Basé sur une architecture client/serveur ;

• Échange décentralisé de données XML entre deux points quelconques d'un réseau ;

• Authentification sécurisé par SASL ;

• Communications client/serveur et serveur/serveur sécurisées par TLS (successeur de SSL);

• Chiffrement asymétrique de chaque message par clé PGP ou GnuPG; Mohammed Azirar

04/07/2010

Page 4: مقدمة حول XMPP

Introduction

• Établi par l'IETF (The Internet Engineering Task Force)

• Maintenu par la XSF (XMPP Standards Foundation)

Mohammed Azirar 04/07/2010

RFCs (Request for comments) XEPs (XMPP Extension Proposal)

Page 5: مقدمة حول XMPP

Applications et usages

• Messagerie instantanée et présence ; • Notifications ; • Diffusion par push ; • Transferts de fichiers ; • Travail collaboratif en temps-réel ; • Échange de données ; • Jeux en ligne ; • Recherche en temps-réel ; • Téléphonie sur internet et Visioconférence ; • Middleware et Cloud computing ; • Géolocalisation ; • Robotique ; • Etc.

Mohammed Azirar 04/07/2010

Page 6: مقدمة حول XMPP

Acteurs industriels

Mohammed Azirar 04/07/2010

Page 7: مقدمة حول XMPP

Applications concrètes

Mohammed Azirar 04/07/2010

Page 8: مقدمة حول XMPP

Applications concrètes

Mohammed Azirar 04/07/2010

Gmail

Google Talk

Messagerie instantanée et présence

Notifications

Transferts de fichiers

Téléphonie sur internet

Page 9: مقدمة حول XMPP

Mohammed Azirar 04/07/2010

Applications concrètes

Notifications en temps-réel

Messagerie intantanée et présence

Diffusion par push

Page 10: مقدمة حول XMPP

Mohammed Azirar 04/07/2010

Applications concrètes

Travail collaboratif en temps-réel

Page 11: مقدمة حول XMPP

Mohammed Azirar 04/07/2010

Recherche en temps-réel

Applications concrètes

Page 12: مقدمة حول XMPP

Mohammed Azirar 04/07/2010

Partage et transferts de fichiers en temps-réel

Applications concrètes

Page 13: مقدمة حول XMPP

Mohammed Azirar 04/07/2010

Jeux en ligne en temps-réel

Applications concrètes

Page 14: مقدمة حول XMPP

Et nous ? qu'est ce qu'on va réaliser ?

Mohammed Azirar 04/07/2010

Page 15: مقدمة حول XMPP

Mohammed Azirar 04/07/2010

Qui peut : – Chatter ; – Exécuter des applications sur un PC distant ; – Ouvrir une URL avec un navigateur distant ; – Afficher les informations d’un système distant :

o Matériel o Système d’ exploitation o Etc.

Mini Robot

Page 16: مقدمة حول XMPP

Mohammed Azirar 04/07/2010

Client Mini Robot

Commandes

Réponses / Résultats

Page 17: مقدمة حول XMPP

XMPP en détail

• Services

• Architecture

• Technologies supportés

• Adressage XMPP

• Flux XML

• Stanzas de XMPP

Mohammed Azirar 04/07/2010

Page 18: مقدمة حول XMPP

Services

• Un service est une fonctionnalité qui peut être utilisé par une application donnée.

• Les services sont définis dans deux principales spécifications :

o RFC (base) : publiées par l’IETF o XEP (extensions ): publiées par XMPP Standards Foundation

Mohammed Azirar 04/07/2010

Page 19: مقدمة حول XMPP

• Channel encryption [RFC 3920] • Authentication [RFC 3920] • Presence [RFC 3921] • Contact lists [RFC 3921] • One-to-one messaging [RFC 3920] • Multi-party messaging [XEP-0045] • Notifications [XEP-0060] • Service discovery [XEP-0030] • Capabilities advertisement [XEP-0115] • Structured data forms [XEP-0004] • Workflow management [XEP-0050] • Etc.

Mohammed Azirar 04/07/2010

Services

Page 20: مقدمة حول XMPP

• Architecture client / serveur décentralisée ; • Très similaire à celle du système de messagerie ;

Mohammed Azirar 04/07/2010

Architecture

Client XMPP

Serveur XMPP Composant XMPP

Page 21: مقدمة حول XMPP

Doit être capable : • D'établir une connexion TCP avec un serveur XMPP (port 5222) • D'analyser et d’ interpréter les messages XML qu'il reçoit • Supporter les types de données de bases de XMPP (XMPP Stanzas)

Mohammed Azirar 04/07/2010

Client XMPP

Page 22: مقدمة حول XMPP

Présente 3 fonctionnalités :

• Gérer les connexions directes avec les clients

• Communiquer avec les autres serveurs XMPP (port 5269)

• Coordonner les différents composants

Mohammed Azirar 04/07/2010

Serveur XMPP

Page 23: مقدمة حول XMPP

• Un composant est un petit serveur qui se connecte à un serveur XMPP pour étendre ses fonctionnalités.

Mohammed Azirar 04/07/2010

Composants XMPP

Tinder API agsXMPP SDK

Page 24: مقدمة حول XMPP

Mohammed Azirar 04/07/2010

Technologies supportés

Page 25: مقدمة حول XMPP

• Basée sur le DNS et des schémas d'URI ;

• Ressemble à une adresse e-mail ;

Mohammed Azirar 04/07/2010

Adressage

utilisateur@domaine/ressource

• Un JID est l'adresse unique d'une entité XMPP ;

• Composé de 2 à 3 parties :

Page 26: مقدمة حول XMPP

Mohammed Azirar 04/07/2010

Adressage : exemple (1)

jabber.spark.ma 192.168.232.90

Serveur XMPP

Utilisateur

azirar

ns1.spark.ma 192.168.232.90

Serveur DNS

FQDN : spark.ma

Page 27: مقدمة حول XMPP

Mohammed Azirar 04/07/2010

Adressage : exemple (2)

• L'adresse de base est :

[email protected]

• Pour ouvrir plusieurs sessions du même compte, il est obligatoire de choisir une ressource :

[email protected]/bureau

[email protected]/phone Ressource

Page 28: مقدمة حول XMPP

Mohammed Azirar 04/07/2010

Adressage : URI

• Web :

http://www.spark.ma

• Messagerie :

mailto:[email protected]

• XMPP :

xmpp:[email protected]

Page 29: مقدمة حول XMPP

Mohammed Azirar 04/07/2010

Flux XML

• Chaque session implique deux flux XML unidirectionnels ;

• Toutes les communications client/serveur passent exclusivement par ces deux flux ;

<stream:stream> … </stream:stream>

<stream:stream> … </stream:stream>

Page 30: مقدمة حول XMPP

Mohammed Azirar 04/07/2010

Flux XML : exemple

<stream:stream> <iq type=’get’> <query xmlns=’jabber:iq:roster’/> </iq> <presence/> <message to=’[email protected]’ from=’[email protected]’ type=’chat’> <body>Salam !<body> </message> <presence type=’unavailable’/> </stream:stream>

Stanza

Stanza

Page 31: مقدمة حول XMPP

Mohammed Azirar 04/07/2010

Stanzas de XML

• Petits morceaux de données échangées durant la communication ;

• Il existe 3 stanzas de base :

o Presence : <presence> .. </presence>

o Message : <message> .. </message>

o IQ (Info/Query) : <iq> .. </iq>

Page 32: مقدمة حول XMPP

Mohammed Azirar 04/07/2010

Presence stanza • Indique l’état du client (en ligne / hors ligne) ;

• Associée à un statut ainsi qu'un message d'état optionnel ;

Message d’état

Statuts

Etat (Hors ligne / Unavailable)

Etat (En ligne)

Page 33: مقدمة حول XMPP

04/07/2010 Mohammed Azirar 33

Presence stanza : exemple

<presence> <show>dnd</show> <status>Entrain d'éxposer !</status> </presence>

<presence type=’unavailable’/>

Exemple 1 :

Exemple 2 :

dnd : do not disturb (Busy)

Page 34: مقدمة حول XMPP

Mohammed Azirar 04/07/2010

Message stanza

• XMPP offre à la fois les possibilités du : o Courrier électronique

o Messagerie instantanée

o Salons de discussion de type IRC

• 5 types de messages : o normal

o chat

o groupchat

o headline

o error

Page 35: مقدمة حول XMPP

Mohammed Azirar 04/07/2010

Normal (normal) • Semblable à un « courrier électronique » ;

• Relativement longs (messages assez formels)

• Permet de répondre à l'expéditeur ;

• l'interface ne présente pas l'historique des conversations passées ;

Page 36: مقدمة حول XMPP

Mohammed Azirar 04/07/2010

Discussion (chat) • Correspond aux messages que l'on rencontre habituellement

dans les systèmes de messagerie instantanée ; • Messages nombreux et très courts (une seule phrase) ; • Employés dans le cadre d'une conversation fortement

interactive et souvent informelle ; • L'historique de la conversation est présenté dans la même

fenêtre que le message actif ;

Page 37: مقدمة حول XMPP

Mohammed Azirar 04/07/2010

Discussion de groupe (groupchat) • Intervient dans le contexte de groupes de discussions ; • L'interface présente l'ensemble des participants à la conversation

ainsi que l'historique des messages ;

Page 38: مقدمة حول XMPP

Mohammed Azirar 04/07/2010

Titre ou Information (headline) • Messages automatiques produits par des robots ;

• Permet de transmettre des messages à caractère informatif ;

• L'interface ne permet pas de répondre à l'expéditeur ;

Page 39: مقدمة حول XMPP

Mohammed Azirar 04/07/2010

Erreur (error)

• Permet d'informer l'utilisateur qu'une erreur s'est produite ;

Page 40: مقدمة حول XMPP

Mohammed Azirar 04/07/2010

IQ stanza • Mécanisme de base pour les réquêtes/réponses ;

• Similaire au protocole HTTP (GET et POST) ;

• Utilisé pour différentes fonctionnalités (création de compte authentification, récupération d'une liste de contact, etc.)

IQ-get

• Set : pour envoyer des données ; Get : pour requêter des données ; • Error : réponse précisant l'erreur; Result : réponse en cas de succès ;

IQ-result

IQ-set

IQ-error

Page 41: مقدمة حول XMPP

Mohammed Azirar 04/07/2010

IQ stanza : exemple

<iq from=’[email protected]/bureau’ type=’get’ id=’roster1’> <query xmlns=’jabber:iq:roster’/> </iq> <iq to=’[email protected]/bureau’ type=’result’ id=’roster2’> <query xmlns=’jabber:iq:roster’> <item jid=’[email protected]’ mohammed tribak’/> <item jid=’[email protected]’ name=Mohammed’/> <item jid=’[email protected]’ name=robot.azirar’/> </query> </iq>

Page 42: مقدمة حول XMPP

Mohammed Azirar 04/07/2010

Conclusion

HTTP is Dead, Long Live The Realtime Cloud !