240 likes | 495 Views
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
E N D
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 • Extensible Messaging and Presence Protocol (XMPP) • IETF proposed standard based on Jabber • Often still referred to as Jabber
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
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).
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
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
Addressing Jabber server Heather@Ollie/laptop Heather@Ollie/homePC Ollie node domain resource Heather@Ollie/workPC
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
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
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
Common Attributes • Attributes common to Message, Presence, and IQ stanzas • to • from • id • type
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
Presence Elements • Used to inform users of who is online • Pub-Sub mechanism • Types • unavailable • subscribe • unsubscribe • probe • Child elements • show • status
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
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
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
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
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
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
Extensions to Jabber • Jabber Enhancement Proposals • Similar to RFCs • Final, Draft, Informational, Historical, Procedural, Humorous • Examples • Service discovery • Non-SASL registration • User Avatar
Beyond IM • XMPP has been called “Web-services lite” • Generic XML routing platform • XMPP used by major Wall Street firms for trading systems