0
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
PubSu...
Aufbau des WorkshopsAufbau des Workshops
●
GeschichteGeschichte
●
Funktionen von XMPPFunktionen von XMPP
●
Blick hinter Ku...
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)...
Störende PunkteStörende Punkte
●
Nur Kommunikation zu Usern imNur Kommunikation zu Usern im
gleichen Systemgleichen System...
eeXXtensibletensible MMessagingessaging
andand PPresenceresence PProtocolrotocol
Geschicht von XMPPGeschicht von XMPP
●
Erste Entwürfe von Jeremie MillerErste Entwürfe von Jeremie Miller
(1998)(1998)
●
E...
Eigenschaften von XMPPEigenschaften von XMPP
●
DezentralisiertDezentralisiert
●
Offene Client-Server ArchitekturOffene Cli...
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...
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:stre...
Daten im StreamDaten im Stream
<stream>
<presence>
<show/>
</presence>
<message to="foo">
<body/>
</message>
<iq to="bar">...
<message
to="romeo@shakespeare.com"
from="foo@bar.com/parl"
type="chat">
<body>
Wherefore art thou, Romeo?
</body>
</messa...
<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 t...
BeispieleBeispiele
Kritischer Blick auf XMLKritischer Blick auf XML
●
War grad hip!War grad hip!
●
Einfach zu lesen, parsenEinfach zu lesen, ...
SicherheitSicherheit
●
Verbindung über TLS/SSLVerbindung über TLS/SSL
●
SASL (Simple Authentication andSASL (Simple Authen...
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 Cha...
Wer setzt auf XMPP?Wer setzt auf XMPP?
●
Google Talk + JingleGoogle Talk + Jingle
●
Facebook ChatFacebook Chat
●
Google Wa...
Was kann ich damit machen?Was kann ich damit machen?
●
ChattenChatten
●
TelefonierenTelefonieren
●
Dateien austauschenDate...
BeispieleBeispiele
ClientClient
BotBot
Verfügbare SoftwareVerfügbare Software
●
ServerServer
●
EjabberdEjabberd
●
OpenfireOpenfire
●
Client-BibliothekenClient-Bi...
Verfügbare SoftwareVerfügbare Software
●
ServerServer
●
EjabberdEjabberd
●
OpenfireOpenfire
●
Client-BibliothekenClient-Bi...
Real Time WebReal Time Web
Push vs PollingPush vs Polling
DiskussionDiskussion
XMPP - Real Time Communication
XMPP - Real Time Communication
XMPP - Real Time Communication
XMPP - Real Time Communication
XMPP - Real Time Communication
Upcoming SlideShare
Loading in...5
×

XMPP - Real Time Communication

4,217

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
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
4,217
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
73
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide
  • IM = sofortige Nachrichtenübermittlung
  • Alle wollen auf IM Zug aufspringe
    Merkt schnell, dass nicht alle am gleichen Ort sind
    Clients nur immer unter Windows
  • Versendete Informationen gehören den Firmen/Anbietern
  • erweiterbares Nachrichten- und Anwesenheitsprotokoll
    IRC erwähnen
  • 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
  • Single Point of Failure
    Logik ist meist auf dem Server
    Server to Server Communication
    Jede Domain kann Jabber Server sein, Identifikation über JID
    Skallierbarkeit
  • IM = sofortige Nachrichtenübermittlung
  • Bare Jabber ID
    Nicht Full Jabber ID
  • IM = sofortige Nachrichtenübermittlung
  • Alle in UTF-8
  • &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
  • Transport Layer Security
    Siehe Slide 14 OSI Schicht TCP → Transport
  • 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
  • IM = sofortige Nachrichtenübermittlung
  • &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
  • Priorität setzen
    Beispiel Haus
  • 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
  • Jingle → VoIP von Google Talk (2005)
  • Transcript of "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
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×