SlideShare a Scribd company logo
1 of 20
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

What's hot

Open Source XMPP for Cloud Services
Open Source XMPP for Cloud ServicesOpen Source XMPP for Cloud Services
Open Source XMPP for Cloud Servicesmattjive
 
Interacting with XMPP using PHP
Interacting with XMPP using PHPInteracting with XMPP using PHP
Interacting with XMPP using PHPSudar Muthu
 
Kopdar Zimbra-ID , How to use Zimbra SOAP API
Kopdar Zimbra-ID , How to use Zimbra SOAP APIKopdar Zimbra-ID , How to use Zimbra SOAP API
Kopdar Zimbra-ID , How to use Zimbra SOAP APIImam Omar Mochtar
 
Composite Source With Mule ESB
Composite Source With Mule ESBComposite Source With Mule ESB
Composite Source With Mule ESBJitendra Bafna
 
FMS Administration Seminar
FMS Administration SeminarFMS Administration Seminar
FMS Administration SeminarYoss Cohen
 
Massive emailing with Linux, Postfix and Ruby on Rails
Massive emailing with Linux, Postfix and Ruby on RailsMassive emailing with Linux, Postfix and Ruby on Rails
Massive emailing with Linux, Postfix and Ruby on Railsibelmonte
 
Inter-Process/Task Communication With Message Queues
Inter-Process/Task Communication With Message QueuesInter-Process/Task Communication With Message Queues
Inter-Process/Task Communication With Message Queueswamcvey
 
Step by step_linux_guide
Step by step_linux_guideStep by step_linux_guide
Step by step_linux_guidevinod31dec
 
Ftp server linux
Ftp server linuxFtp server linux
Ftp server linuxPawan Kumar
 
Presentation on samba server
Presentation on samba serverPresentation on samba server
Presentation on samba serverVeeral Bhateja
 
Protocolos de E-mail (SMTP, POP e IMAP)
Protocolos de E-mail (SMTP, POP e IMAP)Protocolos de E-mail (SMTP, POP e IMAP)
Protocolos de E-mail (SMTP, POP e IMAP)Paulo Bischof
 
DEV301- Web Service Programming with WCF 3.5
DEV301- Web Service Programming with WCF 3.5DEV301- Web Service Programming with WCF 3.5
DEV301- Web Service Programming with WCF 3.5Eyal Vardi
 
Samba power point presentation
Samba power point presentationSamba power point presentation
Samba power point presentationMd Maksudur Rahman
 
Rapid java backend and api development for mobile devices
Rapid java backend and api development for mobile devicesRapid java backend and api development for mobile devices
Rapid java backend and api development for mobile devicesciklum_ods
 
Performance Evaluation of XMPP on the Web
Performance Evaluation of XMPP on the WebPerformance Evaluation of XMPP on the Web
Performance Evaluation of XMPP on the WebMarkku Laine
 

What's hot (20)

Open Source XMPP for Cloud Services
Open Source XMPP for Cloud ServicesOpen Source XMPP for Cloud Services
Open Source XMPP for Cloud Services
 
Interacting with XMPP using PHP
Interacting with XMPP using PHPInteracting with XMPP using PHP
Interacting with XMPP using PHP
 
DDS and XMPP
DDS and XMPPDDS and XMPP
DDS and XMPP
 
Kopdar Zimbra-ID , How to use Zimbra SOAP API
Kopdar Zimbra-ID , How to use Zimbra SOAP APIKopdar Zimbra-ID , How to use Zimbra SOAP API
Kopdar Zimbra-ID , How to use Zimbra SOAP API
 
Composite Source With Mule ESB
Composite Source With Mule ESBComposite Source With Mule ESB
Composite Source With Mule ESB
 
FMS Administration Seminar
FMS Administration SeminarFMS Administration Seminar
FMS Administration Seminar
 
Massive emailing with Linux, Postfix and Ruby on Rails
Massive emailing with Linux, Postfix and Ruby on RailsMassive emailing with Linux, Postfix and Ruby on Rails
Massive emailing with Linux, Postfix and Ruby on Rails
 
Postfix
PostfixPostfix
Postfix
 
Inter-Process/Task Communication With Message Queues
Inter-Process/Task Communication With Message QueuesInter-Process/Task Communication With Message Queues
Inter-Process/Task Communication With Message Queues
 
Step by step_linux_guide
Step by step_linux_guideStep by step_linux_guide
Step by step_linux_guide
 
Migration from ASP to ASP.NET
Migration from ASP to ASP.NETMigration from ASP to ASP.NET
Migration from ASP to ASP.NET
 
Rhel4
Rhel4Rhel4
Rhel4
 
Ftp server linux
Ftp server linuxFtp server linux
Ftp server linux
 
Presentation on samba server
Presentation on samba serverPresentation on samba server
Presentation on samba server
 
Protocolos de E-mail (SMTP, POP e IMAP)
Protocolos de E-mail (SMTP, POP e IMAP)Protocolos de E-mail (SMTP, POP e IMAP)
Protocolos de E-mail (SMTP, POP e IMAP)
 
DEV301- Web Service Programming with WCF 3.5
DEV301- Web Service Programming with WCF 3.5DEV301- Web Service Programming with WCF 3.5
DEV301- Web Service Programming with WCF 3.5
 
Samba power point presentation
Samba power point presentationSamba power point presentation
Samba power point presentation
 
Rapid java backend and api development for mobile devices
Rapid java backend and api development for mobile devicesRapid java backend and api development for mobile devices
Rapid java backend and api development for mobile devices
 
Performance Evaluation of XMPP on the Web
Performance Evaluation of XMPP on the WebPerformance Evaluation of XMPP on the Web
Performance Evaluation of XMPP on the Web
 
Ubuntu For Intranet Services
Ubuntu For Intranet ServicesUbuntu For Intranet Services
Ubuntu For Intranet Services
 

Viewers also liked

Event Driven Architecture Concepts in Web Technologies - Part 2
Event Driven Architecture Concepts in Web Technologies - Part 2Event Driven Architecture Concepts in Web Technologies - Part 2
Event Driven Architecture Concepts in Web Technologies - Part 2Hamidreza Soleimani
 
Real time Web Application with XMPP and Wave
Real time Web Application with XMPP and WaveReal time Web Application with XMPP and Wave
Real time Web Application with XMPP and WaveMickaël Rémond
 
ProcessOne Push Platform: XMPP-based Push Solutions
ProcessOne Push Platform: XMPP-based Push SolutionsProcessOne Push Platform: XMPP-based Push Solutions
ProcessOne Push Platform: XMPP-based Push SolutionsMickaël Rémond
 
Multi Chat
Multi ChatMulti Chat
Multi ChatSoftTeco
 
Nanomsg - Scalable Networking Library
Nanomsg - Scalable Networking LibraryNanomsg - Scalable Networking Library
Nanomsg - Scalable Networking LibraryHamidreza Soleimani
 
Archipel Introduction - ejabberd SF Meetup
Archipel Introduction - ejabberd SF MeetupArchipel Introduction - ejabberd SF Meetup
Archipel Introduction - ejabberd SF MeetupMickaël Rémond
 
2015: L'année d'Elixir, Code, écosystème et communauté
2015: L'année d'Elixir, Code, écosystème et communauté2015: L'année d'Elixir, Code, écosystème et communauté
2015: L'année d'Elixir, Code, écosystème et communautéMickaël Rémond
 
WaveOne server and client by ProcessOne
WaveOne server and client by ProcessOneWaveOne server and client by ProcessOne
WaveOne server and client by ProcessOneMickaël Rémond
 
Nodejs Applications in Production
Nodejs Applications in ProductionNodejs Applications in Production
Nodejs Applications in ProductionHamidreza Soleimani
 
Event Driven Architecture Concepts in Web Technologies - Part 1
Event Driven Architecture Concepts in Web Technologies - Part 1Event Driven Architecture Concepts in Web Technologies - Part 1
Event Driven Architecture Concepts in Web Technologies - Part 1Hamidreza Soleimani
 
A vision for ejabberd - ejabberd SF Meetup
A vision for ejabberd - ejabberd SF MeetupA vision for ejabberd - ejabberd SF Meetup
A vision for ejabberd - ejabberd SF MeetupMickaël Rémond
 
Whole Site Delivery with Amazon CloudFront
Whole Site Delivery with Amazon CloudFrontWhole Site Delivery with Amazon CloudFront
Whole Site Delivery with Amazon CloudFrontAmazon Web Services
 

Viewers also liked (20)

XMPP 101
XMPP 101XMPP 101
XMPP 101
 
What is XMPP Protocol
What is XMPP ProtocolWhat is XMPP Protocol
What is XMPP Protocol
 
Event Driven Architecture Concepts in Web Technologies - Part 2
Event Driven Architecture Concepts in Web Technologies - Part 2Event Driven Architecture Concepts in Web Technologies - Part 2
Event Driven Architecture Concepts in Web Technologies - Part 2
 
Real time Web Application with XMPP and Wave
Real time Web Application with XMPP and WaveReal time Web Application with XMPP and Wave
Real time Web Application with XMPP and Wave
 
ProcessOne Push Platform: XMPP-based Push Solutions
ProcessOne Push Platform: XMPP-based Push SolutionsProcessOne Push Platform: XMPP-based Push Solutions
ProcessOne Push Platform: XMPP-based Push Solutions
 
Erlang White Label
Erlang White LabelErlang White Label
Erlang White Label
 
Multi Chat
Multi ChatMulti Chat
Multi Chat
 
Nanomsg - Scalable Networking Library
Nanomsg - Scalable Networking LibraryNanomsg - Scalable Networking Library
Nanomsg - Scalable Networking Library
 
Archipel Introduction - ejabberd SF Meetup
Archipel Introduction - ejabberd SF MeetupArchipel Introduction - ejabberd SF Meetup
Archipel Introduction - ejabberd SF Meetup
 
Create Your Own Language
Create Your Own LanguageCreate Your Own Language
Create Your Own Language
 
2015: L'année d'Elixir, Code, écosystème et communauté
2015: L'année d'Elixir, Code, écosystème et communauté2015: L'année d'Elixir, Code, écosystème et communauté
2015: L'année d'Elixir, Code, écosystème et communauté
 
OneTeam Media Server
OneTeam Media ServerOneTeam Media Server
OneTeam Media Server
 
WaveOne server and client by ProcessOne
WaveOne server and client by ProcessOneWaveOne server and client by ProcessOne
WaveOne server and client by ProcessOne
 
Multitasking in iOS 7
Multitasking in iOS 7Multitasking in iOS 7
Multitasking in iOS 7
 
Nodejs Applications in Production
Nodejs Applications in ProductionNodejs Applications in Production
Nodejs Applications in Production
 
XMPP Academy #1
XMPP Academy #1XMPP Academy #1
XMPP Academy #1
 
Event Driven Architecture Concepts in Web Technologies - Part 1
Event Driven Architecture Concepts in Web Technologies - Part 1Event Driven Architecture Concepts in Web Technologies - Part 1
Event Driven Architecture Concepts in Web Technologies - Part 1
 
Practical Look at Erlang
Practical Look at ErlangPractical Look at Erlang
Practical Look at Erlang
 
A vision for ejabberd - ejabberd SF Meetup
A vision for ejabberd - ejabberd SF MeetupA vision for ejabberd - ejabberd SF Meetup
A vision for ejabberd - ejabberd SF Meetup
 
Whole Site Delivery with Amazon CloudFront
Whole Site Delivery with Amazon CloudFrontWhole Site Delivery with Amazon CloudFront
Whole Site Delivery with Amazon CloudFront
 

Similar to XMPP Intro 1101 - 2008

XMPP-IoT Protocol designed mainly to send mesages
XMPP-IoT Protocol designed mainly to send mesagesXMPP-IoT Protocol designed mainly to send mesages
XMPP-IoT Protocol designed mainly to send mesagesssuserd1be3f1
 
Powering your website with realtime data
Powering your website with realtime dataPowering your website with realtime data
Powering your website with realtime databecoded
 
Xmpp presentation
Xmpp presentationXmpp presentation
Xmpp presentationJava Pro
 
Monitoring with Syslog and EventMachine
Monitoring with Syslog and EventMachineMonitoring with Syslog and EventMachine
Monitoring with Syslog and EventMachineWooga
 
Messaging With Erlang And Jabber
Messaging With  Erlang And  JabberMessaging With  Erlang And  Jabber
Messaging With Erlang And Jabberl xf
 
Python RESTful webservices with Python: Flask and Django solutions
Python RESTful webservices with Python: Flask and Django solutionsPython RESTful webservices with Python: Flask and Django solutions
Python RESTful webservices with Python: Flask and Django solutionsSolution4Future
 
Reaching Out From PL/SQL (OPP 2010)
Reaching Out From PL/SQL (OPP 2010)Reaching Out From PL/SQL (OPP 2010)
Reaching Out From PL/SQL (OPP 2010)Lucas Jellema
 
2014-11-26 | Creating a BitTorrent Client with Scala and Akka, Part 1 (Vienna...
2014-11-26 | Creating a BitTorrent Client with Scala and Akka, Part 1 (Vienna...2014-11-26 | Creating a BitTorrent Client with Scala and Akka, Part 1 (Vienna...
2014-11-26 | Creating a BitTorrent Client with Scala and Akka, Part 1 (Vienna...Dominik Gruber
 
Chat app case study - xmpp vs SIP
Chat app case study - xmpp vs SIPChat app case study - xmpp vs SIP
Chat app case study - xmpp vs SIPGenora Infotech
 
Linux Desktop Automation
Linux Desktop AutomationLinux Desktop Automation
Linux Desktop AutomationRui Lapa
 
Mojo – Simple REST Server
Mojo – Simple REST ServerMojo – Simple REST Server
Mojo – Simple REST Serverhendrikvb
 
Motivations and Considerations for Migrating from SMTPD/Sendmail to CSSMTP
Motivations and Considerations for Migrating from SMTPD/Sendmail to CSSMTPMotivations and Considerations for Migrating from SMTPD/Sendmail to CSSMTP
Motivations and Considerations for Migrating from SMTPD/Sendmail to CSSMTPzOSCommserver
 

Similar to XMPP Intro 1101 - 2008 (20)

XMPP-IoT Protocol designed mainly to send mesages
XMPP-IoT Protocol designed mainly to send mesagesXMPP-IoT Protocol designed mainly to send mesages
XMPP-IoT Protocol designed mainly to send mesages
 
Powering your website with realtime data
Powering your website with realtime dataPowering your website with realtime data
Powering your website with realtime data
 
Xmpp presentation
Xmpp presentationXmpp presentation
Xmpp presentation
 
Monitoring with Syslog and EventMachine
Monitoring with Syslog and EventMachineMonitoring with Syslog and EventMachine
Monitoring with Syslog and EventMachine
 
Messaging With Erlang And Jabber
Messaging With  Erlang And  JabberMessaging With  Erlang And  Jabber
Messaging With Erlang And Jabber
 
Python RESTful webservices with Python: Flask and Django solutions
Python RESTful webservices with Python: Flask and Django solutionsPython RESTful webservices with Python: Flask and Django solutions
Python RESTful webservices with Python: Flask and Django solutions
 
AD102 - Break out of the Box
AD102 - Break out of the BoxAD102 - Break out of the Box
AD102 - Break out of the Box
 
Logstash
LogstashLogstash
Logstash
 
XMPP Academy #3
XMPP Academy #3XMPP Academy #3
XMPP Academy #3
 
Reaching Out From PL/SQL (OPP 2010)
Reaching Out From PL/SQL (OPP 2010)Reaching Out From PL/SQL (OPP 2010)
Reaching Out From PL/SQL (OPP 2010)
 
2014-11-26 | Creating a BitTorrent Client with Scala and Akka, Part 1 (Vienna...
2014-11-26 | Creating a BitTorrent Client with Scala and Akka, Part 1 (Vienna...2014-11-26 | Creating a BitTorrent Client with Scala and Akka, Part 1 (Vienna...
2014-11-26 | Creating a BitTorrent Client with Scala and Akka, Part 1 (Vienna...
 
XML-RPC and SOAP (April 2003)
XML-RPC and SOAP (April 2003)XML-RPC and SOAP (April 2003)
XML-RPC and SOAP (April 2003)
 
Chat app case study - xmpp vs SIP
Chat app case study - xmpp vs SIPChat app case study - xmpp vs SIP
Chat app case study - xmpp vs SIP
 
Ruby
RubyRuby
Ruby
 
Camel as a_glue
Camel as a_glueCamel as a_glue
Camel as a_glue
 
Linux Desktop Automation
Linux Desktop AutomationLinux Desktop Automation
Linux Desktop Automation
 
Ruby e xmpp
Ruby e xmppRuby e xmpp
Ruby e xmpp
 
Mojo – Simple REST Server
Mojo – Simple REST ServerMojo – Simple REST Server
Mojo – Simple REST Server
 
Séminaire Web Services
Séminaire Web ServicesSéminaire Web Services
Séminaire Web Services
 
Motivations and Considerations for Migrating from SMTPD/Sendmail to CSSMTP
Motivations and Considerations for Migrating from SMTPD/Sendmail to CSSMTPMotivations and Considerations for Migrating from SMTPD/Sendmail to CSSMTP
Motivations and Considerations for Migrating from SMTPD/Sendmail to CSSMTP
 

Recently uploaded

DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 

Recently uploaded (20)

DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 

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