1 / 23

Jabber and Extensible Messaging and Presence Protocol (XMPP)

Jabber and Extensible Messaging and Presence Protocol (XMPP). Presenter: Michael Smith Cisc 856 Dec. 6, 2005. What are they?. Jabber Open XML protocol for near-real-time messaging, presence and request-response services Developed in the open source community

kaida
Download Presentation

Jabber and Extensible Messaging and Presence Protocol (XMPP)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Jabber and Extensible Messaging and Presence Protocol (XMPP) Presenter: Michael Smith Cisc 856 Dec. 6, 2005

  2. What are they? • Jabber • Open XML protocol for near-real-time messaging, presence and request-response services • Developed in the open source community • Extensible Messaging and Presence Protocol (XMPP) • IETF proposed standard based on Jabber • Often still referred to as Jabber

  3. Motivation • Jeremie Miller became tired of having multiple instant messaging clients open • Industry continues the push • Companies want • IM/presence service for employees • control over the communication • Companies don’t want • traffic leaving company network

  4. History • Early 1998: Jeremie Miller starts jabberd server project. • Jan 4 1999: First announcement on Slashdot. • May 2000: jabberd 1.0 released. • August 2001: Jabber Software Foundation (JSF) formed to manage protocols. • January 2002: JSF submits core protocols to IETF as XMPP. • October 2002: IETF forms XMPP Working Group. • February 2004: IESG approves XMPP specs as Proposed Standards. • October 2004: IETF publishes XMPP RFCs (3920-3923).

  5. Jabber example Jabber server Jabber server Jabber client Jabber client AOL IM client AOL IM network Jabber client Gateway Jabber protocol communication AOL Instant Messaging communication

  6. Addressing • Entities • Anything that can be a network end-point • Entity address is called a JID (Jabber ID) • JID Contains • Domain identifier • Node identifier • Resource identifier

  7. Addressing Jabber server Heather@Ollie/laptop Heather@Ollie/homePC Ollie node domain resource Heather@Ollie/workPC

  8. Generic XMPP Message Routing Initial setup Heather Frank@Ollie.org sends message to Heather@Ollie.org Negotiate connection between Ollie.org and Sifl.org Frank Mike Sifl.org Ollie.org Frank@Ollie.org sends message to Mike@Sifl.org Frank@Ollie.org sends message to Jane@Jabber.org Jabber.org Jane

  9. Extensible Markup Language (XML) • Structured markup language related to HTML, but more general • The semantics of data are defined by tags and attributes • Elements have opening and closing tags • Elements can have attributes and child elements <Recipe name="bread" prep_time="5 mins" cook_time="3 hours"> <title>Basic bread</title> <ingredient amount="3" unit="cups">Flour</ingredient> <ingredient amount="0.25" unit="ounce">Yeast</ingredient> <ingredient amount="1.5" unit="cups">Warm Water</ingredient> <ingredient amount="1" unit="teaspoon">Salt</ingredient> <Instructions> <step>Mix all ingredients together</step> <step>Cover with a cloth, and leave for one hour</step> <step>Knead again, and then bake in the oven.</step> </Instructions> </Recipe> • Recipe = root element • Name = attribute • Title = child element

  10. XMPP mechanics • XML-Stanzas • An element of communication • 3 types • message • IQ (Information Query) • presence • XML-Streams • Entire communication between client and server • Contains unbounded number of XML-Stanzas

  11. Common Attributes • Attributes common to Message, Presence, and IQ stanzas • to • from • id • type

  12. Message Elements • Used when one client “talks” to another • Push mechanism similar to email • Should have ‘to’ attribute • Possible types (defined by type attribute) • Chat • Groupchat • Error • Headline • Normal • Child elements • Subject • Body • Thread

  13. Presence Elements • Used to inform users of who is online • Pub-Sub mechanism • Types • unavailable • subscribe • unsubscribe • probe • Child elements • show • status

  14. Information Query (IQ) Elements • Request-Response mechanism similar to HTTP • Interactions tracked by ‘id’ • Type (required) • get • set • result • error • Semantics defined very broadly by RFC • Example use is to retrieve rosters

  15. XMPP and TCP Heather Mike Ollie.org Mike wants to sign on: 1. Establish TCP connection XML stream 2. Establish XML streams One TCP connection per stream One stream from client to server, one from server to client TCP connection stays active for entire length of stream

  16. XML stream establishment Mike Ollie.org Start stream to server Start stream to client TLS – Transport Layer Security. Used for data encryption (optional) Negotiate TLS use Start new encrypted stream to server Start new encrypted stream to client SASL– Simple Authentication and Security Layer. Used for authentication (required) Negotiate SASL use Start final stream to server Start final stream to client

  17. XMPP-IM conversation Mike Ollie.org Start stream Start stream Start IM session ACK IM session Request roster Send roster Send initial presence Send all presence info Send message to Heather Forward Message from Heather Heather sends message Heather logged out Heather logs out Log out Close stream Close stream

  18. Simple Client-to-Server Stream (document view) Open stream <stream:stream to='192.168.1.101'> <iq type='set' id='gaim758e356f'> <session/> </iq> <iq type='get' id='gaim758e3570'> <query xmlns='jabber:iq:roster'/> </iq> <presence/> <message type='chat' to='heather@192.168.1.101'> <body>Let’s meet at the mall later</body> </message> <presence type='unavailable'> <status>Logged out</status> </presence> </stream:stream> XML Stanza (A-PDU) Start session Get roster XML Stream Send initial presence Send message Log out Close stream

  19. Simple Client-to-Server Stream (document view) Open stream <stream:stream> <stream:features> <bind xmlns="xmpp-bind"/> <session xmlns="xmpp-session"/> </stream:features> <iq type="result" to="mike"> <session xmlns="xmpp-session"/> </iq> <iq type="result" to="mike"> <query xmlns="jabber:iq:roster"> <item jid="heather" subscription="both"/> </query> </iq> <presence type="unavailable" from="heather" to="mike"> <status>Logged out</status> </presence> <presence from="heather" to="mike"/> <message type="chat" to="mike" from="heather"> <body>Ok. See you at 8</body> </message> <presence type="unavailable" from="heather" to="mike"> <status>Logged out</status> </presence> </stream:stream> Offer services Start session Send roster Send contact’s presence Send presence update Send message Send presence update Close stream

  20. Extensions to Jabber • Jabber Enhancement Proposals • Similar to RFCs • Final, Draft, Informational, Historical, Procedural, Humorous • Examples • Service discovery • Non-SASL registration • User Avatar

  21. Beyond IM • XMPP has been called “Web-services lite” • Generic XML routing platform • XMPP used by major Wall Street firms for trading systems

More Related