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

XMPP - Real Time Communication

Hinweis der Redaktion

  • #5 IM = sofortige Nachrichtenübermittlung
  • #6 Alle wollen auf IM Zug aufspringe Merkt schnell, dass nicht alle am gleichen Ort sind Clients nur immer unter Windows
  • #7 Versendete Informationen gehören den Firmen/Anbietern
  • #8 erweiterbares Nachrichten- und Anwesenheitsprotokoll IRC erwähnen
  • #9 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
  • #11 Single Point of Failure Logik ist meist auf dem Server Server to Server Communication Jede Domain kann Jabber Server sein, Identifikation über JID Skallierbarkeit
  • #12 IM = sofortige Nachrichtenübermittlung
  • #13 Bare Jabber ID Nicht Full Jabber ID
  • #14 IM = sofortige Nachrichtenübermittlung
  • #16 Alle in UTF-8
  • #17 &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
  • #23 Transport Layer Security Siehe Slide 14 OSI Schicht TCP → Transport
  • #24 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
  • #26 IM = sofortige Nachrichtenübermittlung
  • #27 &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
  • #28 Priorität setzen Beispiel Haus
  • #29 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
  • #32 Jingle → VoIP von Google Talk (2005)