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

Like this? Share it with your network

Share

XMPP Intro 1101 - 2008

on

  • 2,604 views

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

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

Statistics

Views

Total Views
2,604
Views on SlideShare
2,602
Embed Views
2

Actions

Likes
0
Downloads
0
Comments
0

1 Embed 2

https://www.linkedin.com 2

Accessibility

Categories

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.

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