Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

XMPP - Real Time Communication

4,892 views

Published on

Vortrag in Deutsch:
Einführung und detaillierte Betrachtung von XMPP. XMPP (Jabber) als freie Alternative zu den properitären IM-Protokollen wie MSN, OSCAR (ICQ, AOL) und Yahoo.

Published in: Technology
  • Be the first to comment

XMPP - Real Time Communication

  1. 1. XMPP – Real Time CommunicationXMPP – Real Time Communication Dominic Lüchinger
  2. 2. XMPP IM Real Time Web AMQP Protokoll XML Bot Publish/Subscribe Roaster Jabber Cloud Push vs PollingBOSH XEP Webhooks PubSubHubbub eJabberd Client Server RFC 3920–3923 IETF Gtalk Facebook Google Wave
  3. 3. Aufbau des WorkshopsAufbau des Workshops ● GeschichteGeschichte ● Funktionen von XMPPFunktionen von XMPP ● Blick hinter Kullissen / ErweiterungenBlick hinter Kullissen / Erweiterungen ● Anwendungsbeispiel und RefenzenAnwendungsbeispiel und Refenzen ● Real Time Web mit XMPPReal Time Web mit XMPP ● DiskussionDiskussion
  4. 4. Kurze Geschichte vonKurze Geschichte von Instant MessagingInstant Messaging
  5. 5. Proprietäre ProtokolleProprietäre Protokolle ● ICQ (1996)ICQ (1996) ● AOL IM (1997)AOL IM (1997) ● Yahoo! Messenger (1998)Yahoo! Messenger (1998) ● MSN (1999)MSN (1999)
  6. 6. Störende PunkteStörende Punkte ● Nur Kommunikation zu Usern imNur Kommunikation zu Usern im gleichen Systemgleichen System ● Zentralisierte, bevollmächtigteZentralisierte, bevollmächtigte ServerServer ● Client Software ist vorgegebenClient Software ist vorgegeben ● Kein offenes Protokoll/SchnittstelleKein offenes Protokoll/Schnittstelle ● Nette NutzungsbedingungenNette Nutzungsbedingungen
  7. 7. eeXXtensibletensible MMessagingessaging andand PPresenceresence PProtocolrotocol
  8. 8. Geschicht von XMPPGeschicht von XMPP ● Erste Entwürfe von Jeremie MillerErste Entwürfe von Jeremie Miller (1998)(1998) ● Erste offizielle Version des JabberErste offizielle Version des Jabber Server 'jabberd' (2000)Server 'jabberd' (2000) ● Gründung Jabber SoftwareGründung Jabber Software Foundation (2001)Foundation (2001) ● Durch IETF als Internet-StandardDurch IETF als Internet-Standard verabschiedet (2004)verabschiedet (2004)
  9. 9. Eigenschaften von XMPPEigenschaften von XMPP ● DezentralisiertDezentralisiert ● Offene Client-Server ArchitekturOffene Client-Server Architektur ● XML Stream über TCP/IPXML Stream über TCP/IP ● Sicherheit über TLS/SSL und SASLSicherheit über TLS/SSL und SASL ● SystemunabhängigkeitSystemunabhängigkeit ● Mehrfach-Anmeldung am ServerMehrfach-Anmeldung am Server ● Erweiterbar durch XEPErweiterbar durch XEP
  10. 10. DezentralisiertDezentralisiert
  11. 11. Einschub JIDEinschub JID <Jabber Identifier><Jabber Identifier>
  12. 12. useruser@@domain.chdomain.ch foo@bar.comfoo@bar.com foo2@bar.comfoo2@bar.com foo@sub.bar.comfoo@sub.bar.com bar@foo.combar@foo.com
  13. 13. Was? XMPP ist XML?Was? XMPP ist XML? Protokoll als Stream?Protokoll als Stream?
  14. 14. Start der VerbindungStart der Verbindung XML-StreamXML-Stream <stream:stream to="bar.com" xmlns="jabber:client" xmlns:stream="http://etherx.jabber.org/strea ms" > ... </stream:stream> Verbindungsaufbau zu Server bar.com an Port 5222 oder 5223 (SSL)
  15. 15. Daten im StreamDaten im Stream <stream> <presence> <show/> </presence> <message to="foo"> <body/> </message> <iq to="bar"> <query/> </iq> </stream>
  16. 16. <message to="romeo@shakespeare.com" from="foo@bar.com/parl" type="chat"> <body> Wherefore art thou, Romeo? </body> </message>
  17. 17. <presence type="available"> <show>away</show> <status>At the Cornershop</status> </presence>
  18. 18. <iq id="reg" type="get"> <query xmlns="jabber:iq:register"/> </iq>
  19. 19. <iq id="reg" type="result"> <query xmlns="jabber:iq:register"> <password/> <instructions> Choose a username and password to register. </instructions> <name/> <email/> <username/> </query> </iq>
  20. 20. BeispieleBeispiele
  21. 21. Kritischer Blick auf XMLKritischer Blick auf XML ● War grad hip!War grad hip! ● Einfach zu lesen, parsenEinfach zu lesen, parsen ● Overhead (bis zu 80%)Overhead (bis zu 80%) ● KomprimierbarKomprimierbar ● Weit verbreitet, viele BibliothekenWeit verbreitet, viele Bibliotheken
  22. 22. SicherheitSicherheit ● Verbindung über TLS/SSLVerbindung über TLS/SSL ● SASL (Simple Authentication andSASL (Simple Authentication and Security Layer)Security Layer) ● Problem mit UnterstützungProblem mit Unterstützung ● End-to-End Signing and ObjectEnd-to-End Signing and Object Encryption (RFC 3923)Encryption (RFC 3923) ● PGP/GPG und OTR (Off-the-Record)PGP/GPG und OTR (Off-the-Record) ● …… durch Erweiterugendurch Erweiterugen
  23. 23. Problem SicherheitProblem Sicherheit
  24. 24. Mehrfaches AnmeldenMehrfaches Anmelden
  25. 25. user@domain.ch/user@domain.ch/resourceresource
  26. 26. Mehrere RessourcenMehrere Ressourcen
  27. 27. Gateway / Transport zuGateway / Transport zu anderen Dienstenanderen Diensten
  28. 28. XEPXEP XMPP Extension ProtocolXMPP Extension Protocol
  29. 29. http://xmpp.org/extensions/http://xmpp.org/extensions/
  30. 30. Erwähnenswerte XEP'sErwähnenswerte XEP's ● Jingle → Peer-to-Peer-SitzungenJingle → Peer-to-Peer-Sitzungen ● Multi-User Chat („IRC”)Multi-User Chat („IRC”) ● BOSH (Bidirectional-streams OverBOSH (Bidirectional-streams Over Synchronous HTTP)Synchronous HTTP) ● Publish/SubscribePublish/Subscribe ● Datei-Transfer / XMPP XML-RPCDatei-Transfer / XMPP XML-RPC ● Presence Obtained via KinestheticPresence Obtained via Kinesthetic Excitation (POKE)Excitation (POKE)
  31. 31. Wer setzt auf XMPP?Wer setzt auf XMPP? ● Google Talk + JingleGoogle Talk + Jingle ● Facebook ChatFacebook Chat ● Google Wave (Federation Protocol)Google Wave (Federation Protocol) ● Apple iChat Server Snow LeopardApple iChat Server Snow Leopard ● Cisco (Nachrichtenaustausch)Cisco (Nachrichtenaustausch) ● Oracle Beehive CollaborationOracle Beehive Collaboration
  32. 32. Was kann ich damit machen?Was kann ich damit machen? ● ChattenChatten ● TelefonierenTelefonieren ● Dateien austauschenDateien austauschen ● Im Gruppen-Chat (MUJ) diskutierenIm Gruppen-Chat (MUJ) diskutieren ● Mit einem Bot kommunizierenMit einem Bot kommunizieren ● Mich erinnern lassenMich erinnern lassen ● Geräte ansteuernGeräte ansteuern
  33. 33. BeispieleBeispiele
  34. 34. ClientClient
  35. 35. BotBot
  36. 36. Verfügbare SoftwareVerfügbare Software ● ServerServer ● EjabberdEjabberd ● OpenfireOpenfire ● Client-BibliothekenClient-Bibliotheken ● Xmpppy (Python)Xmpppy (Python) ● Xmpphp (PHPXmpphp (PHP ● Smack (Java)Smack (Java)
  37. 37. Verfügbare SoftwareVerfügbare Software ● ServerServer ● EjabberdEjabberd ● OpenfireOpenfire ● Client-BibliothekenClient-Bibliotheken ● Xmpppy (Python)Xmpppy (Python) ● Xmpphp (PHPXmpphp (PHP ● Smack (Java)Smack (Java)
  38. 38. Real Time WebReal Time Web
  39. 39. Push vs PollingPush vs Polling
  40. 40. DiskussionDiskussion

×