XMPP - Real Time Communication

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

No Downloads
Views
Total views
4,529
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 => RFC 3920
    XMPP messaging & presence => 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
  • <presence> broadcast
    <message> point-to-point
    <iq> 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
  • <presence> broadcast
    <message> point-to-point
    <iq> 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)
  • 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

    ×