• Save
XMPP Intro 1101 - 2008
Upcoming SlideShare
Loading in...5

Like this? Share it with your network


XMPP Intro 1101 - 2008



This is just my old presentation of XMPP. Pretty basic intro.

This is just my old presentation of XMPP. Pretty basic intro.



Total Views
Views on SlideShare
Embed Views



1 Embed 2

https://www.linkedin.com 2



Upload Details

Uploaded via as Adobe PDF

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.

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

XMPP Intro 1101 - 2008 Presentation Transcript

  • 1. XMPP intro E Extensible Messaging and Presence ProtocolSteffen Larsen (slarsen@nordija.com)
  • 2. XMPP - what is it?• Extensible Messaging and Presence Protocol• An Open Source Instant Messaging (IM) system. I would also like to refer to it as a session protocol.• Easy integration of extensions• Widely used and many implementations of the core system.
  • 3. XMPP clients• Pidgin (formerly known as gaim, all)• Adium (based on pidgin lib.,mac)• GTalk (Google Talk, m$ windoze)• psi (all)• gajim (all), etc... MANY!
  • 4. XMPP core• Going from Jabber (1999) to XMPP• XMPP foundation, founded 2003. For standardization.• RFC 3920, RFC 3921 (define XML stream, login and architecture)
  • 5. XMPP core• XMPP is a XML streaming standard• XMPP defines a <stream/> to make a stream session.• TLS (authentication) / SASL (Simple Authentication and Security Layer)
  • 6. XMPP corecore consists of the following: • <stream/> • Addressing standard (JIDs): user@host.domain/resource. This is important for the routing/prioritizing. • stanzas
  • 7. XML Streams• <stream/> container for XML elements in a stream. • <stream/> once in a session, send many xml elements! • <stream/> consists of: • negotiation of TLS and SASL • stanzas
  • 8. The “layers”• TCP (your socket!) • TLS secure layer • SASL negotiation • XMPP (send/receive stanzas) • Third party channel.. (initiated by XMPP, voice etc)
  • 9. Using the language• Logging in <stream>, TLS, SASL.. • SASL for negotiating diff. encryption mechanisms. • Challenge/Response.. • server binds the client resource• fetching the buddy list.. <iq get roster..>• sending stanzas messages, presence etc.
  • 10. Language Elements• XMPP have 3 XML stanzas. (well structured children under the <stream/> element): • <presence/> • <message/> • <iq/> (Information, Query: get, set)
  • 11. XML Stream exampleBasic sessions: |--------------------| C: <?xml version=1.0?> | <stream> | <stream:stream |--------------------| to=example.com | <presence> | xmlns=jabber:client | <show/> | xmlns:stream=http://etherx.jabber.org/streams | </presence> | version=1.0> |--------------------| S: <?xml version=1.0?> | <message to=foo> | <stream:stream | <body/> | from=example.com | </message> | id=someid |--------------------| xmlns=jabber:client | <iq to=bar> | xmlns:stream=http://etherx.jabber.org/streams | <query/> | version=1.0> | </iq> | ... encryption, authentication, and resource binding ... |--------------------| C: <message from=juliet@example.com | ... | to=romeo@example.net |--------------------| xml:lang=en> | </stream> | C: <body>Art thou not Romeo, and a Montague?</body> |--------------------| C: </message> S: <message from=romeo@example.net to=juliet@example.com xml:lang=en> S: <body>Neither, fair saint, if either thee dislike.</body> S: </message> C: </stream:stream> S: </stream:stream>
  • 12. XMPP Stanzas <message/> <message from=northumberland@shakespeare.lit/westminster id=richard2-4.1.247 to=kingrichard@royalty.england.lit/throne> <body>My lord, dispatch; read oer these articles.</body> <request xmlns=urn:xmpp:receipts/> </message> <iq/> Example: Client requests current roster from server: <iq from=juliet@example.com/balcony type=get id=roster_1> <query xmlns=jabber:iq:roster/>e.g. get roster </iq> Example: Client receives roster from server: at startup <iq to=juliet@example.com/balcony type=result id=roster_1> <query xmlns=jabber:iq:roster> <item jid=romeo@example.net name=Romeo subscription=both> <group>Friends</group> </item> <item jid=mercutio@example.org name=Mercutio subscription=from> <group>Friends</group> </item> <item jid=benvolio@example.org name=Benvolio subscription=both> <group>Friends</group> </item> </query> </iq>
  • 13. XMPP Architectureserver - server. xmpp registar with cert.client - client
  • 14. XMPP Architecture server- Text Textclient-gw- SIP
  • 15. XMPP Extensions (XEP)• XMPP defines a set of XEPs• Definition of an extension (XEP-001). XEP relies on namespaces.• XEP-166, XEP-167 (Jingles), XEP-176 important right now• Feature and service discovery important. Can also be done in
  • 16. XMPP Platforms• ejabberd (erlang)• xfire (uses smack-lib, java based)• google talk (based on libjingle, c++). Can connect to the base XMPP architecture and vice versa. Some XEPs are NOT the same (voice/video/ ice)!
  • 17. XMPP Libraries• Libjingle (google, c++, not compliant to some xmpp extensions)• Perl:XMPP (perl!, dah!)• LibIksmeal (C, very unorganized!)• Smack (Java, JMF!)• My own!... :-) (core in libpurple, plugin lib for xep-166,167,176)
  • 18. XMPP in the future?• Will it become a de-facto standard? (xmpp is what http was in the past)• New extensions?• XEP-666 for set top boxes? ;-)• XEP for Conferencing?
  • 19. XMPP links:• www.xmpp.org• http://www.xmpp.org/rfcs/rfc3920.htm• http://www.xmpp.org/rfcs/rfc3921.htm• http://www.xmpp.org/extensions/
  • 20. Questions?If you don’t have any: • when is xep-166 etc. (jingle) a standard? • where do I start? • ....