SlideShare ist ein Scribd-Unternehmen logo
1 von 45
XMPP – Real Time CommunicationXMPP – Real Time Communication
Dominic Lüchinger
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
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
Kurze Geschichte vonKurze Geschichte von
Instant MessagingInstant Messaging
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)
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
eeXXtensibletensible MMessagingessaging
andand PPresenceresence PProtocolrotocol
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)
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
DezentralisiertDezentralisiert
Einschub JIDEinschub JID
<Jabber Identifier><Jabber Identifier>
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
Was? XMPP ist XML?Was? XMPP ist XML?
Protokoll als Stream?Protokoll als Stream?
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)
Daten im StreamDaten im Stream
<stream>
<presence>
<show/>
</presence>
<message to="foo">
<body/>
</message>
<iq to="bar">
<query/>
</iq>
</stream>
<message
to="romeo@shakespeare.com"
from="foo@bar.com/parl"
type="chat">
<body>
Wherefore art thou, Romeo?
</body>
</message>
<presence
type="available">
<show>away</show>
<status>At the
Cornershop</status>
</presence>
<iq
id="reg"
type="get">
<query xmlns="jabber:iq:register"/>
</iq>
<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>
BeispieleBeispiele
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
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
Problem SicherheitProblem Sicherheit
Mehrfaches AnmeldenMehrfaches Anmelden
user@domain.ch/user@domain.ch/resourceresource
Mehrere RessourcenMehrere Ressourcen
Gateway / Transport zuGateway / Transport zu
anderen Dienstenanderen Diensten
XEPXEP
XMPP Extension ProtocolXMPP Extension Protocol
http://xmpp.org/extensions/http://xmpp.org/extensions/
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)
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
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
BeispieleBeispiele
ClientClient
BotBot
Verfügbare SoftwareVerfügbare Software
●
ServerServer
●
EjabberdEjabberd
●
OpenfireOpenfire
●
Client-BibliothekenClient-Bibliotheken
●
Xmpppy (Python)Xmpppy (Python)
●
Xmpphp (PHPXmpphp (PHP
●
Smack (Java)Smack (Java)
Verfügbare SoftwareVerfügbare Software
●
ServerServer
●
EjabberdEjabberd
●
OpenfireOpenfire
●
Client-BibliothekenClient-Bibliotheken
●
Xmpppy (Python)Xmpppy (Python)
●
Xmpphp (PHPXmpphp (PHP
●
Smack (Java)Smack (Java)
Real Time WebReal Time Web
Push vs PollingPush vs Polling
DiskussionDiskussion
XMPP - Real Time Communication

Weitere ähnliche Inhalte

Ähnlich wie XMPP - Real Time Communication

Status of syslog as of 2005
Status of syslog as of 2005Status of syslog as of 2005
Status of syslog as of 2005Rainer Gerhards
 
Drahtwanderung: Wir machen den NeXTen Schritt
Drahtwanderung: Wir machen den NeXTen SchrittDrahtwanderung: Wir machen den NeXTen Schritt
Drahtwanderung: Wir machen den NeXTen SchrittFalk Hartmann
 
Ibm tape library ts4500
Ibm tape library ts4500Ibm tape library ts4500
Ibm tape library ts4500Josef Weingand
 
Webservice API - Webportale mit Force.com verbinden
Webservice API - Webportale mit Force.com verbindenWebservice API - Webportale mit Force.com verbinden
Webservice API - Webportale mit Force.com verbindenAptly GmbH
 
Sicherer Wegweiser im Internet: DNSSEC im praktischen Einsatz
Sicherer Wegweiser im Internet: DNSSEC im praktischen EinsatzSicherer Wegweiser im Internet: DNSSEC im praktischen Einsatz
Sicherer Wegweiser im Internet: DNSSEC im praktischen EinsatzSpeedPartner GmbH
 
Internet und Webdesign (Historisches Dokument)
Internet und Webdesign (Historisches Dokument)Internet und Webdesign (Historisches Dokument)
Internet und Webdesign (Historisches Dokument)Eric Eggert
 
BetterCrypto: Applied Crypto Hardening
BetterCrypto: Applied Crypto HardeningBetterCrypto: Applied Crypto Hardening
BetterCrypto: Applied Crypto HardeningAaron Zauner
 
Projektvorstellung VoiceXML Test Framework
Projektvorstellung VoiceXML Test FrameworkProjektvorstellung VoiceXML Test Framework
Projektvorstellung VoiceXML Test FrameworkRaphael Groner
 
Kryptografie und Zertifikate (Cryptoparty)
Kryptografie und Zertifikate (Cryptoparty)Kryptografie und Zertifikate (Cryptoparty)
Kryptografie und Zertifikate (Cryptoparty)tschikarski
 
PostgreSQL im Produktivbetrieb
PostgreSQL im ProduktivbetriebPostgreSQL im Produktivbetrieb
PostgreSQL im ProduktivbetriebGFU Cyrus AG
 
Websockets: Leichtgewichtige Verbindungen für Web-Applikationen
Websockets: Leichtgewichtige Verbindungen für Web-ApplikationenWebsockets: Leichtgewichtige Verbindungen für Web-Applikationen
Websockets: Leichtgewichtige Verbindungen für Web-ApplikationenSpeedPartner GmbH
 
Der gesamte Redaktionsprozess mit Open Source
Der gesamte Redaktionsprozess mit Open SourceDer gesamte Redaktionsprozess mit Open Source
Der gesamte Redaktionsprozess mit Open Sourceyellowcow
 
Einführung XHTML CSS JS // MM 08-11
Einführung XHTML CSS JS // MM 08-11Einführung XHTML CSS JS // MM 08-11
Einführung XHTML CSS JS // MM 08-11Noël Bossart
 
Skype – Instant Messaging
Skype – Instant MessagingSkype – Instant Messaging
Skype – Instant MessagingMartin Hilger
 
Log Monitoring at eBay kleinanzeigen (April 2013)
Log Monitoring at eBay kleinanzeigen (April 2013)Log Monitoring at eBay kleinanzeigen (April 2013)
Log Monitoring at eBay kleinanzeigen (April 2013)Manuel Aldana
 
CW Contest with N1MM by DK8EY R09 Neanderthal
CW Contest with N1MM by DK8EY R09 NeanderthalCW Contest with N1MM by DK8EY R09 Neanderthal
CW Contest with N1MM by DK8EY R09 NeanderthalChristoph Huetten
 

Ähnlich wie XMPP - Real Time Communication (20)

Status of syslog as of 2005
Status of syslog as of 2005Status of syslog as of 2005
Status of syslog as of 2005
 
Drahtwanderung: Wir machen den NeXTen Schritt
Drahtwanderung: Wir machen den NeXTen SchrittDrahtwanderung: Wir machen den NeXTen Schritt
Drahtwanderung: Wir machen den NeXTen Schritt
 
Ibm tape library ts4500
Ibm tape library ts4500Ibm tape library ts4500
Ibm tape library ts4500
 
VIT 5-2014
VIT 5-2014VIT 5-2014
VIT 5-2014
 
State of syslog (2005)
State of syslog (2005)State of syslog (2005)
State of syslog (2005)
 
Webservice API - Webportale mit Force.com verbinden
Webservice API - Webportale mit Force.com verbindenWebservice API - Webportale mit Force.com verbinden
Webservice API - Webportale mit Force.com verbinden
 
Sicherer Wegweiser im Internet: DNSSEC im praktischen Einsatz
Sicherer Wegweiser im Internet: DNSSEC im praktischen EinsatzSicherer Wegweiser im Internet: DNSSEC im praktischen Einsatz
Sicherer Wegweiser im Internet: DNSSEC im praktischen Einsatz
 
Internet und Webdesign (Historisches Dokument)
Internet und Webdesign (Historisches Dokument)Internet und Webdesign (Historisches Dokument)
Internet und Webdesign (Historisches Dokument)
 
BetterCrypto: Applied Crypto Hardening
BetterCrypto: Applied Crypto HardeningBetterCrypto: Applied Crypto Hardening
BetterCrypto: Applied Crypto Hardening
 
Projektvorstellung VoiceXML Test Framework
Projektvorstellung VoiceXML Test FrameworkProjektvorstellung VoiceXML Test Framework
Projektvorstellung VoiceXML Test Framework
 
VampirTrace und Vampir
VampirTrace und VampirVampirTrace und Vampir
VampirTrace und Vampir
 
Kryptografie und Zertifikate (Cryptoparty)
Kryptografie und Zertifikate (Cryptoparty)Kryptografie und Zertifikate (Cryptoparty)
Kryptografie und Zertifikate (Cryptoparty)
 
PostgreSQL im Produktivbetrieb
PostgreSQL im ProduktivbetriebPostgreSQL im Produktivbetrieb
PostgreSQL im Produktivbetrieb
 
Websockets: Leichtgewichtige Verbindungen für Web-Applikationen
Websockets: Leichtgewichtige Verbindungen für Web-ApplikationenWebsockets: Leichtgewichtige Verbindungen für Web-Applikationen
Websockets: Leichtgewichtige Verbindungen für Web-Applikationen
 
Der gesamte Redaktionsprozess mit Open Source
Der gesamte Redaktionsprozess mit Open SourceDer gesamte Redaktionsprozess mit Open Source
Der gesamte Redaktionsprozess mit Open Source
 
Einführung XHTML CSS JS // MM 08-11
Einführung XHTML CSS JS // MM 08-11Einführung XHTML CSS JS // MM 08-11
Einführung XHTML CSS JS // MM 08-11
 
Skype – Instant Messaging
Skype – Instant MessagingSkype – Instant Messaging
Skype – Instant Messaging
 
Dev + Ops = Go
Dev + Ops = GoDev + Ops = Go
Dev + Ops = Go
 
Log Monitoring at eBay kleinanzeigen (April 2013)
Log Monitoring at eBay kleinanzeigen (April 2013)Log Monitoring at eBay kleinanzeigen (April 2013)
Log Monitoring at eBay kleinanzeigen (April 2013)
 
CW Contest with N1MM by DK8EY R09 Neanderthal
CW Contest with N1MM by DK8EY R09 NeanderthalCW Contest with N1MM by DK8EY R09 Neanderthal
CW Contest with N1MM by DK8EY R09 Neanderthal
 

XMPP - Real Time Communication

Hinweis der Redaktion

  1. IM = sofortige Nachrichtenübermittlung
  2. Alle wollen auf IM Zug aufspringe Merkt schnell, dass nicht alle am gleichen Ort sind Clients nur immer unter Windows
  3. Versendete Informationen gehören den Firmen/Anbietern
  4. erweiterbares Nachrichten- und Anwesenheitsprotokoll IRC erwähnen
  5. Ziel eine freie Alternative zu damals aufstrebenden proprietären Instant Messaging-Lösungen zu schaffen. Internet Engeneering Task Force (IETF) Im Jahr 2007 wurde die Jabber Software Foundation in XMPP Standards Foundation (XSF) umbenannt XMPP core =&amp;gt; RFC 3920 XMPP messaging &amp; presence =&amp;gt; RFC 3921
  6. Single Point of Failure Logik ist meist auf dem Server Server to Server Communication Jede Domain kann Jabber Server sein, Identifikation über JID Skallierbarkeit
  7. IM = sofortige Nachrichtenübermittlung
  8. Bare Jabber ID Nicht Full Jabber ID
  9. IM = sofortige Nachrichtenübermittlung
  10. Alle in UTF-8
  11. &amp;lt;presence&amp;gt; broadcast &amp;lt;message&amp;gt; point-to-point &amp;lt;iq&amp;gt; request-response (info/query) all basic message paradigms are covered
  12. Transport Layer Security Siehe Slide 14 OSI Schicht TCP → Transport
  13. Transport Layer Security Siehe Slide 14 OSI Schicht TCP → Transport XEP-0078: Non-SASL Authentication OTR → inoffizielle; vertrauliche, nicht für die Öffentlichkeit bestimmte Nachrichtenvermittlung
  14. IM = sofortige Nachrichtenübermittlung
  15. &amp;lt;presence&amp;gt; broadcast &amp;lt;message&amp;gt; point-to-point &amp;lt;iq&amp;gt; request-response (info/query) all basic message paradigms are covered
  16. Priorität setzen Beispiel Haus
  17. Multi-Protokoll-Clients → Logik bei Client Hier auf Server Durch einen Umstieg verliert man seine Kontakte nicht MSN wird meistens wegen rechtlichen Problemen nicht angeboten
  18. Jingle → VoIP von Google Talk (2005)