Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.

XMPP - Real Time Communication

4.917 Aufrufe

Veröffentlicht am

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.

Veröffentlicht in: Technologie
  • Als Erste(r) kommentieren

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

×