SlideShare a Scribd company logo
XMPP intro  E




 Extensible Messaging and Presence
             Protocol




Steffen Larsen (slarsen@nordija.com)
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.
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!
XMPP core

• Going from Jabber (1999) to XMPP
• XMPP foundation, founded 2003. For
  standardization.

• RFC 3920, RFC 3921 (define XML
  stream, login and architecture)
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)
XMPP core

core consists of the following:

   • <stream/>
   • Addressing standard (JIDs):
     user@host.domain/resource. This is
     important for the routing/prioritizing.

   • stanzas
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
The “layers”

• TCP (your socket!)
  • TLS secure layer
  • SASL negotiation
  • XMPP (send/receive stanzas)
  • Third party channel.. (initiated by XMPP, voice
    etc)
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.
Language Elements

• XMPP have 3 XML stanzas. (well
 structured children under the
 <stream/> element):
 • <presence/>
 • <message/>
 • <iq/> (Information, Query: get, set)
XML Stream example
Basic 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>
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 o'er 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>
XMPP Architecture
server - server. xmpp registar with cert.




client - client
XMPP Architecture



 server-       Text
               Text
client-gw-
    SIP
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
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)!
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)
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?
XMPP links:


• www.xmpp.org
• http://www.xmpp.org/rfcs/rfc3920.htm
• http://www.xmpp.org/rfcs/rfc3921.htm
• http://www.xmpp.org/extensions/
Questions?
If you don’t have any:

 • when is xep-166 etc.
    (jingle) a standard?

 • where do I start?
 • ....

More Related Content

PDF
Xmpp intro 2014
PDF
XMPP Intro - The camp2012
PDF
Real life XMPP Instant Messaging
PDF
XMPP Technical Overview + Jingle Protocol Study
ZIP
XMPP In Real Time
PPT
Xmpp presentation
PDF
WTF is XMPP?
KEY
The Real Time Web with XMPP
Xmpp intro 2014
XMPP Intro - The camp2012
Real life XMPP Instant Messaging
XMPP Technical Overview + Jingle Protocol Study
XMPP In Real Time
Xmpp presentation
WTF is XMPP?
The Real Time Web with XMPP

What's hot (20)

PPT
Open Source XMPP for Cloud Services
PPTX
Interacting with XMPP using PHP
PDF
DDS and XMPP
PDF
Kopdar Zimbra-ID , How to use Zimbra SOAP API
PDF
Composite Source With Mule ESB
PPT
FMS Administration Seminar
PDF
Massive emailing with Linux, Postfix and Ruby on Rails
PDF
ODP
Inter-Process/Task Communication With Message Queues
PDF
Step by step_linux_guide
PPT
Migration from ASP to ASP.NET
PPTX
PDF
Ftp server linux
PPTX
Presentation on samba server
PPT
Protocolos de E-mail (SMTP, POP e IMAP)
PPT
DEV301- Web Service Programming with WCF 3.5
PPTX
Samba power point presentation
PPT
Rapid java backend and api development for mobile devices
PDF
Performance Evaluation of XMPP on the Web
ODP
Ubuntu For Intranet Services
Open Source XMPP for Cloud Services
Interacting with XMPP using PHP
DDS and XMPP
Kopdar Zimbra-ID , How to use Zimbra SOAP API
Composite Source With Mule ESB
FMS Administration Seminar
Massive emailing with Linux, Postfix and Ruby on Rails
Inter-Process/Task Communication With Message Queues
Step by step_linux_guide
Migration from ASP to ASP.NET
Ftp server linux
Presentation on samba server
Protocolos de E-mail (SMTP, POP e IMAP)
DEV301- Web Service Programming with WCF 3.5
Samba power point presentation
Rapid java backend and api development for mobile devices
Performance Evaluation of XMPP on the Web
Ubuntu For Intranet Services
Ad

Viewers also liked (20)

ZIP
XMPP 101
PDF
What is XMPP Protocol
PDF
Event Driven Architecture Concepts in Web Technologies - Part 2
ZIP
Real time Web Application with XMPP and Wave
ZIP
ProcessOne Push Platform: XMPP-based Push Solutions
PDF
Erlang White Label
PDF
Multi Chat
PDF
Nanomsg - Scalable Networking Library
PDF
Archipel Introduction - ejabberd SF Meetup
PDF
Create Your Own Language
PDF
2015: L'année d'Elixir, Code, écosystème et communauté
ZIP
OneTeam Media Server
ZIP
WaveOne server and client by ProcessOne
PDF
Multitasking in iOS 7
PDF
Nodejs Applications in Production
PDF
XMPP Academy #1
PDF
Event Driven Architecture Concepts in Web Technologies - Part 1
PDF
Practical Look at Erlang
PDF
A vision for ejabberd - ejabberd SF Meetup
PDF
Lecture about XMPP
XMPP 101
What is XMPP Protocol
Event Driven Architecture Concepts in Web Technologies - Part 2
Real time Web Application with XMPP and Wave
ProcessOne Push Platform: XMPP-based Push Solutions
Erlang White Label
Multi Chat
Nanomsg - Scalable Networking Library
Archipel Introduction - ejabberd SF Meetup
Create Your Own Language
2015: L'année d'Elixir, Code, écosystème et communauté
OneTeam Media Server
WaveOne server and client by ProcessOne
Multitasking in iOS 7
Nodejs Applications in Production
XMPP Academy #1
Event Driven Architecture Concepts in Web Technologies - Part 1
Practical Look at Erlang
A vision for ejabberd - ejabberd SF Meetup
Lecture about XMPP
Ad

Similar to XMPP Intro 1101 - 2008 (20)

PDF
Xmpp presentation
PDF
Powering your website with realtime data
PDF
Powering your website with realtime data
PDF
Messaging With Erlang And Jabber
PDF
Extensible Messaging and Presence Protocol (XMPP)
ZIP
XMPP - Beyond IM
PPTX
XMPP-IoT Protocol designed mainly to send mesages
PPTX
Ejabberd Session
ZIP
Fast & Scalable Front/Back-ends using Ruby, Rails & XMPP
PPTX
Extensible Messaging and Presence Protocol (XMPP) with GCM
PDF
Jabber is more than instant messaging
PDF
XMPP - Introduction And LAS Implementation (Presentation)
PDF
Chat app case study - xmpp vs SIP
PDF
XMPP Standards Update
PPT
XMPP For Cloud Computing
PPT
Xmppforcloudcomputing
ODP
Onesocialweb Presentation at OTA10
PDF
Microblogging via XMPP
PPSX
Xmpp and java
PPT
Os Tucker
Xmpp presentation
Powering your website with realtime data
Powering your website with realtime data
Messaging With Erlang And Jabber
Extensible Messaging and Presence Protocol (XMPP)
XMPP - Beyond IM
XMPP-IoT Protocol designed mainly to send mesages
Ejabberd Session
Fast & Scalable Front/Back-ends using Ruby, Rails & XMPP
Extensible Messaging and Presence Protocol (XMPP) with GCM
Jabber is more than instant messaging
XMPP - Introduction And LAS Implementation (Presentation)
Chat app case study - xmpp vs SIP
XMPP Standards Update
XMPP For Cloud Computing
Xmppforcloudcomputing
Onesocialweb Presentation at OTA10
Microblogging via XMPP
Xmpp and java
Os Tucker

Recently uploaded (20)

PDF
Electronic commerce courselecture one. Pdf
PDF
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PDF
Empathic Computing: Creating Shared Understanding
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PPTX
A Presentation on Artificial Intelligence
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
cuic standard and advanced reporting.pdf
PDF
Unlocking AI with Model Context Protocol (MCP)
PDF
Encapsulation_ Review paper, used for researhc scholars
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
Network Security Unit 5.pdf for BCA BBA.
PPT
Teaching material agriculture food technology
PPTX
Big Data Technologies - Introduction.pptx
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PPTX
Cloud computing and distributed systems.
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PDF
Encapsulation theory and applications.pdf
Electronic commerce courselecture one. Pdf
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
Diabetes mellitus diagnosis method based random forest with bat algorithm
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
Empathic Computing: Creating Shared Understanding
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
A Presentation on Artificial Intelligence
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
cuic standard and advanced reporting.pdf
Unlocking AI with Model Context Protocol (MCP)
Encapsulation_ Review paper, used for researhc scholars
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Network Security Unit 5.pdf for BCA BBA.
Teaching material agriculture food technology
Big Data Technologies - Introduction.pptx
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
NewMind AI Weekly Chronicles - August'25 Week I
Cloud computing and distributed systems.
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
Encapsulation theory and applications.pdf

XMPP Intro 1101 - 2008

  • 1. XMPP intro E Extensible Messaging and Presence Protocol Steffen 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 core core 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 example Basic 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 o'er 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 Architecture server - server. xmpp registar with cert. client - client
  • 14. XMPP Architecture server- Text Text client-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? • ....