XMPP: Unterschied zwischen den Versionen

Aus wiki.archlinux.de
KKeine Bearbeitungszusammenfassung
Boenki (Diskussion | Beiträge)
 
(23 dazwischenliegende Versionen von 10 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
<div style="float:right; width:321px">[[Bild:jabber-schema.png|thumb|300px|Schematische Darstellung eines Jabber-Netzwerkes]]<br />
{{righttoc}}
{{righttoc}}</div>
XMPP ist eine von der {{wikipedia|Internet_Engineering_Task_Force|IETF}} standardisierte Sammlung diverser XML-basierender Netzwerkprotokolle, die ein erweiterbares Messaging- und Anwesenheitsprotokoll darstellen.
Jabber ist eine Sammlung diverser XML-basierender Netzwerkprotokolle. XMPP, der Kern dieser Protokollsammlung, ist ein von der IETF standardisiertes, auf XML basierendes Messaging- und Anwesenheitsprotokoll.


Anders als die meisten anderen Messaging-Dienste ist Jabber dezentral aufgebaut. Die nötige Serversoftware sowie das Protokoll um einen Jabber-Server zu betreiben sind ebenfalls frei verfügbar. So steht jedem Anwender die Möglichkeit offen, selbst einen Jabber-Server aufzusetzen.
Anders als die meisten anderen Messaging-Dienste ist XMPP dezentral aufgebaut. Die nötige Serversoftware sowie das Protokoll um einen XMPP-Server zu betreiben sind ebenfalls frei verfügbar. So steht jedem Anwender die Möglichkeit offen, selbst einen XMPP-Server aufzusetzen.


Jabber eignet sich daher nicht nur um großen, öffentlichen Nutzergruppen eine Möglichkeit der Kommunikation zu bieten, sondern auch, um im kleinen Rahmen schnell und einfach, und ohne große Hürden (Jabber-Clients sind für alle gängigen Architekturen und Systeme verfügbar) eine Kommunikationsmöglichkeit bereitzustellen.
XMPP eignet sich daher nicht nur um großen, öffentlichen Nutzergruppen eine Möglichkeit der Kommunikation zu bieten, sondern auch, um im kleinen Rahmen schnell und einfach, und ohne große Hürden (XMPP-Clients sind für alle gängigen Architekturen und Systeme verfügbar) eine Kommunikationsmöglichkeit bereitzustellen.


== Nutzwert ==
== Nutzwert ==
Der Nutzwert von Jabber ist objektiv betrachtet recht hoch. Nachfolgende Gegenüberstellung soll dies etwas verdeutlichen.
[[Bild:xmpp-schema.png|thumb|300px|Schematische Darstellung eines XMPP-Netzwerkes]]
Der Nutzwert von XMPP ist objektiv betrachtet recht hoch. Nachfolgende Gegenüberstellung soll dies etwas verdeutlichen.


=== Vorteile ===
=== Vorteile ===
Aufgrund der '''freien Verfügbarkeit''' sämtlicher beteiligten Protokolle und Dienste ist die Implementierung in beliebige Anwendungen rechtlich sowie technisch ohne große Probleme möglich. Für alle verbreiteten Programmier- und Scriptsprachen gibt es Klassen oder Funktionen, mittels derer mit Jabber-Servern interagiert werden kann.
Aufgrund der '''freien Verfügbarkeit''' sämtlicher beteiligten Protokolle und Dienste ist die Implementierung in beliebige Anwendungen rechtlich sowie technisch ohne große Probleme möglich. Für alle verbreiteten Programmier- und Skriptsprachen gibt es Klassen oder Funktionen, mittels derer mit XMPP-Servern interagiert werden kann.


Jabber eignet sich nicht nur als Instant-Messaging-Protokoll, sondern auch, aufgrund der XMPP Basis als '''Status- und Informationsprotokoll'''. Durch Erweiterungen des Protokolls kann die Jabber/XMPP-Funktionalität um ein Vielfaches vergrößert werden, so dass nahezu '''alle vorstellbaren Funktionen verfügbar''' gemacht werden können.
XMPP eignet sich nicht nur als Instant-Messaging-Protokoll, sondern auch, aufgrund der XMPP Basis als '''Status- und Informationsprotokoll'''. Durch Erweiterungen des Protokolls kann die XMPP-Funktionalität um ein Vielfaches vergrößert werden, so dass nahezu '''alle vorstellbaren Funktionen verfügbar''' gemacht werden können.


Da durch die '''dezentrale Netzwerkarchitektur''' Jabbers problemlos Jabber-Server aufgesetzt werden können, ist das Netz sehr '''ausfallsicher und flexibel'''. Sollte ein Serverbetreiber seinen Jabber-Dienst einstellen, kann man sich entweder woanders einen Account registrieren, oder selbst einen Server aufsetzen.
Da durch die '''dezentrale Netzwerkarchitektur''' XMPPs problemlos XMPP-Server aufgesetzt werden können, ist das Netz sehr '''ausfallsicher und flexibel'''. Sollte ein Serverbetreiber seinen XMPP-Dienst einstellen, kann man sich entweder woanders einen Account registrieren, oder selbst einen Server aufsetzen.


Jabber/XMPP ist '''vollkommen transparent''' in Bezug auf Server-Technik und Verschlüsselung. Während man bei den meisten anderen Instant-Messaging-Diensten vollkommen auf den jeweiligen Anbieter angewiesen ist, und diesem vertrauen muss, so kann man, wenn man Jabber verwendet, sicher sein, wie und ob verschlüsselt wird, und kann – im Client – selbst bestimmen, ob man '''[[Grundlagen_der_Verschlüsselung_in_Netzwerken#End-To-End|verschlüsselte Kommunikation]]''' verwenden möchte.
XMPP ist '''vollkommen transparent''' in Bezug auf Server-Technik und Verschlüsselung. Während man bei den meisten anderen Instant-Messaging-Diensten vollkommen auf den jeweiligen Anbieter angewiesen ist, und diesem vertrauen muss, so kann man, wenn man XMPP verwendet, sicher sein, wie und ob verschlüsselt wird, und kann – im Client – selbst bestimmen, ob man '''[[Grundlagen_der_Verschlüsselung_in_Netzwerken#End-To-End|verschlüsselte Kommunikation]]''' verwenden möchte.


=== Nachteile ===
=== Nachteile ===
Da Jabber im Kern zwar XMPP benutzt, aber ansonsten eine Sammlung von Protokollen ist, ist es zwar weitestgehend kompatibel, aber der FUnktionsumfang '''nicht komplett standardisiert'''. Zudem wird Jabber stetig weiterentwickelt und um Funktionen ergänzt, wodurch Jabber '''immer komplexer''' wird, was zu einer „Überfrachtung“ führen kann.
Da XMPP eine Sammlung von Protokollen ist, ist es zwar weitestgehend kompatibel, aber der Funktionsumfang '''nicht komplett standardisiert'''. Zudem wird XMPP stetig weiterentwickelt und um Funktionen ergänzt, wodurch XMPP '''immer komplexer''' wird, was zu einer „Überfrachtung“ führen kann.


Die [[#Transports|Transports]] verursachen auf dem Server eine sehr '''hohe Last''', und sind zudem teilweise etwas instabil. Zudem funktionieren sie nicht mehr, wenn der Anbieter, für den man den Transport benötigt, sein Protokoll ändert. Transports können daher nur als Notlösung betrachtet werden, und sollten aufgrund der Nachteile nicht dauerhaft verwendet werden.
Die [[#Transports|Transports]] verursachen auf dem Server eine sehr '''hohe Last''', und sind zudem teilweise etwas instabil. Zudem funktionieren sie nicht mehr, wenn der Anbieter, für den man den Transport benötigt, sein Protokoll ändert. Transports können daher nur als Notlösung betrachtet werden, und sollten aufgrund der Nachteile nicht dauerhaft verwendet werden.


Man sollte stattdessen besser einen Multimessenger wie [[Pidgin]] verwenden, anstatt eines reinen Jabber-Clients wie [[Gajim]] oder [[Psi]]. Allerdings haben viele Multimessenger den Nachteil, dass sie nur die zum chatten nötigen Jabber-Grundfunktionen unterstützen.
Man sollte stattdessen besser einen Multimessenger wie [[Pidgin]] verwenden, anstatt eines reinen XMPP-Clients wie [[Gajim]] oder [[Psi]]. Allerdings haben viele Multimessenger den Nachteil, dass sie nur die zum Chatten nötigen XMPP-Grundfunktionen unterstützen.


Durch die dezentrale Strukur Jabbers ergibt sich zwar dass man einen beliebigen Jabber-Server verwenden kann, jedoch gibt es '''keine zentrale Kontaktliste'''. Das heißt, wenn man auf „server1“ einen Jabber-Account „ich“ einrichtet, dann hat „ich@server1“ dort eine Kontaktliste. Wenn der Server nun nicht mehr verfügbar ist, und man stattdessen „ich“ auf „zweiterserver“ registriert, dann hat „ich@zweiterserver“ eine andere Kontaktliste.
Durch die dezentrale Strukur XMPPs ergibt sich zwar dass man einen beliebigen XMPP-Server verwenden kann, jedoch gibt es '''keine zentrale Kontaktliste'''. Das heißt, wenn man auf „server1“ einen XMPP-Account „ich“ einrichtet, dann hat „ich@server1“ dort eine Kontaktliste. Wenn der Server nun nicht mehr verfügbar ist, und man stattdessen „ich“ auf „zweiterserver“ registriert, dann hat „ich@zweiterserver“ eine andere Kontaktliste.


Es gibt also keine einheitliche Kontakt-Information, wie bei zentralisierten Instant-Messaging-Protokollen.
Es gibt also keine einheitliche Kontakt-Information, wie bei zentralisierten Instant-Messaging-Protokollen.


Der am schwersten wiegende Nachteil ist jedoch die '''nur zögerliche Verbreitung''' von Jabber. Zwar ist der Zugang zu Jabber sehr einfach, allerdings wird jemand, der bisher z.B. nur ICQ nutzte, und nur ICQ-Kontakte hat, zwar auf Jabber umsteigen können, müsste dann aber allen Kontakten mitteilen, auch Jabber zu verwenden. Die Kontakte wiederum werden vermutlich auch nur ICQ-Kontakte haben, und diese ebenfalls zu Jabber bewegen müssen, und so weiter.
Der am schwersten wiegende Nachteil ist jedoch die '''nur zögerliche Verbreitung''' von XMPP. Zwar ist der Zugang zu XMPP sehr einfach, allerdings wird jemand, der bisher z.B. nur ICQ nutzte, und nur ICQ-Kontakte hat, zwar auf XMPP umsteigen können, müsste dann aber allen Kontakten mitteilen, auch XMPP zu verwenden. Die Kontakte wiederum werden vermutlich auch nur ICQ-Kontakte haben, und diese ebenfalls zu XMPP bewegen müssen, und so weiter.


== Identifikation ==
== Identifikation ==
User, die auf einem Server vorhanden sind, erhalten von diesem eine ''Jabber-ID'', kurz ''JID''. Wenn ein Client die JID kennt, kann er mit diesem User-Account interagieren, und dem Nutzer, der hinter dem Account steht, zum Beispiel eine Nachricht zukommen lassen.
User, die auf einem Server vorhanden sind, erhalten von diesem einen ''Jabber Identifier'', kurz ''JID''. Wenn ein Client die JID kennt, kann er mit diesem User-Account interagieren, und dem Nutzer, der hinter dem Account steht, zum Beispiel eine Nachricht zukommen lassen.


JIDs bestehen immer aus User- und Servernamen. Der User „client1“, der auf dem Server „jabber.example.org“ angelegt wurde, hat demnach die JID „client1@jabber.example.org“.
JIDs bestehen immer aus User- und Servernamen. Der User „client1“, der auf dem Server „xmpp.example.org“ angelegt wurde, hat demnach die JID „client1@xmpp.example.org“.


Zusätzlich zur JID kann auch noch eine ''Ressource'' verwendet werden. Diese Ressource wird dazu benutzt, um den selben User mehrfach am Server anmelden zu können. Der Wert dieser Angabe ist frei wählbar, muss aber den Adressierungsregeln des Internet entsprechen.
Zusätzlich zur JID kann auch noch eine ''Ressource'' verwendet werden. Diese Ressource wird dazu benutzt, um den selben User mehrfach am Server anmelden zu können. Der Wert dieser Angabe ist frei wählbar, muss aber den Adressierungsregeln des Internet entsprechen.
Zeile 43: Zeile 43:
Die Ressource wird der JID durch einen Slash getrennt angehängt.
Die Ressource wird der JID durch einen Slash getrennt angehängt.


  client1@jabber.example.org/Home
  client1@xmpp.example.org/Home
  client1@jabber.example.org/Work
  client1@xmpp.example.org/Work


Ressourcen können priorisiert werden. Je höher die Zahl ist, desto wichtiger wird die Ressource vom Jabber-Server angesehen. Wenn an „client1@jabber.example.org“ eine Nachricht geschickt wird, und dieser User mit zwei verschiedenen Ressourcen angemeldet ist, dann wird die Nachricht an den Client gesendet, dessen Priorität eine höhere Zahl hat.
Ressourcen können priorisiert werden. Je höher die Zahl ist, desto wichtiger wird die Ressource vom XMPP-Server angesehen. Wenn an „client1@xmpp.example.org“ eine Nachricht geschickt wird, und dieser User mit zwei verschiedenen Ressourcen angemeldet ist, dann wird die Nachricht an den Client gesendet, dessen Priorität eine höhere Zahl hat.


Wenn zum Beispiel die Ressource „Home“ die Priorität „3“ hat, und die Ressource „Work“ die Priorität „5“ hat, dann wird die Nachricht an den Client mit der Ressource „Work“ weitergeleitet, sofern der Sender der Nachricht nicht explizit angegeben hat, an welche Ressource die Nachricht gesendet werden soll.
Wenn zum Beispiel die Ressource „Home“ die Priorität „3“ hat, und die Ressource „Work“ die Priorität „5“ hat, dann wird die Nachricht an den Client mit der Ressource „Work“ weitergeleitet, sofern der Sender der Nachricht nicht explizit angegeben hat, an welche Ressource die Nachricht gesendet werden soll.


== Nachrichten ==
== Kommunikation ==
Wenn – basierend auf der obigen schematischen Darstellung – „client1@jabber.example.org“ an „clientb@jabberserver.invalid“ eine Nachricht schickt, sendet dieser die Nachricht zunächst an „jabber.example.org“, dieser Server kontaktiert dann „jabberserver.invalid“, und übermittelt diesem die Nachricht.
XMPP beherrscht drei Grundlegende Kommunikationswege, zum einen Instant-Messaging, die „klassische“ Variante des 1:1-Chats, des Weiteren Mehrbenutzer-Chats, wie man es aus dem IRC kennt, und zusätlich indirekt auch Voice-over-IP. Sämtliche Interaktion läuft an der Basis über einen dieser drei Kommunikationswege.


„jabberserver.invalid“ sendet nun eine Information über eine neue Nachricht an „clientb@jabberserver.invalid“. Das Jabber-Programm auf diesem Client empfängt die Meldung, holt die Nachricht vom Server, und zeigt diese an.
=== Instant-Messaging ===
Wenn – basierend auf der obigen schematischen Darstellung – „client1@xmpp.example.org“ an „clientb@xmppserver.invalid“ eine Nachricht schickt, sendet dieser die Nachricht zunächst an „xmpp.example.org“, dieser Server kontaktiert dann „xmppserver.invalid“, und übermittelt diesem die Nachricht.


Wenn „clientb@jabberserver.invalid“ nun auf diese Nachricht antwortet, wird der Vorgang wiederholt, diesmal allerdings in anderer Richtung.
„xmppserver.invalid“ sendet nun eine Information über eine neue Nachricht an „clientb@xmppserver.invalid“. Das XMPP-Programm auf diesem Client empfängt die Meldung, holt die Nachricht vom Server, und zeigt diese an. Wenn „clientb@xmppserver.invalid“ nun auf diese Nachricht antwortet, wird der Vorgang wiederholt, diesmal allerdings in anderer Richtung.


== Chat ==
=== MUC (Multi-User-Chat) ===
Jabber unterstützt Chats mit mehreren Benutzern gleichzeitig. Dazu wird auf dem Server entweder permanent oder temporär ein Chatraum erstellt, den die Nutzer betreten können. Die Nachricht werden dann nicht einzeln als Nachrichten an die Clients verteilt, sondern erscheinen untereinander im Chatfenster.
XMPP unterstützt Chats mit mehreren Benutzern gleichzeitig. Dazu wird auf dem Server entweder permanent oder temporär ein Chatraum erstellt, den die Nutzer betreten können. Die Nachricht werden dann nicht einzeln als Nachrichten an die Clients verteilt, sondern erscheinen untereinander im Chatfenster.


Diese Chats unterstützten verschiedene Rollen. So kann in einem Chatraum ein Benutzer „Administrator“ sein, also Regeln für den Raum konfigurieren, User aus dem Raum entfernen, Zugriffskontrollen einstellen oder auch andere User „stummschalten“.
Diese Chats unterstützten verschiedene Rollen. So kann in einem Chatraum ein Benutzer „Administrator“ sein, also Regeln für den Raum konfigurieren, User aus dem Raum entfernen, Zugriffskontrollen einstellen oder auch andere User „stummschalten“.


=== Voice over IP ===
=== Voice-over-IP ===
Mit der „Jingle“-Erweiterung besteht zudem die Möglichkeit, VoIP-Telefonate zu führen. Hierfür wird eine Peer-to-Peer-Verbindung aufgebaut. Auch Videotelefonie ist damit möglich. Derzeit befindet sich die Jingle-Funktionalität der meisten Clients im Alpha- oder Beta-Stadium. Implementiert wird Jingle meist durch die von Google als OpenSource veröffentlichte ''libjingle''. Jedoch wird derzeit üblicher Weise nur Voice- und nicht Video-over-IP ermöglicht.
Mit der „Jingle“-Erweiterung besteht zudem die Möglichkeit, VoIP-Telefonate zu führen. Hierfür wird eine Peer-to-Peer-Verbindung aufgebaut. Auch Videotelefonie ist damit möglich. Derzeit befindet sich die Jingle-Funktionalität der meisten Clients im Alpha- oder Beta-Stadium.
 
Implementiert wird Jingle meist durch die von Google als OpenSource veröffentlichte ''libjingle''. Jedoch wird derzeit üblicher Weise nur Voice- und nicht Video-over-IP ermöglicht. Zudem sind die Daten bisher nur bei einem Client ({{wikipedia|Jitsi}}) verschlüsselt.


== Transports ==
== Transports ==
''Transports'' sind Zusatzprogramme, mittels derer ein Jabber-Server fähig ist, auch als Server für andere Messaging-Dienste benutzt werden zu können. So kann zum Beispiel ein ICQ-Transport benutzt werden, um über einen Jabber-Server Nachrichten an User im ICQ-Netzwerk zu übermitteln.
''Transports'' sind Zusatzprogramme, mittels derer ein XMPP-Server fähig ist, auch als Server für andere Messaging-Dienste benutzt werden zu können. So kann zum Beispiel ein ICQ-Transport benutzt werden, um über einen XMPP-Server Nachrichten an User im ICQ-Netzwerk zu übermitteln.


Transports sind Server-Abhängig, nicht alle Server bieten automatisch auch Transports für alle Dienste an. Neben Messenger-Diensten können zum Beispiel auch SMS-, e-Mail- oder RSS-Dienste durch Transports angeboten werden.
Transports sind Server-Abhängig, nicht alle Server bieten automatisch auch Transports für alle Dienste an. Neben Messenger-Diensten können zum Beispiel auch SMS-, e-Mail- oder RSS-Dienste durch Transports angeboten werden.


Um einen Transport zu nutzen, meldet man sich mit seinem Jabber-Account am Jabber-Server an, und wählt über den Jabber-Client aus, welchen Transport man verwenden will. Im Falle des ICQ-Transports meldet man sich nun mit seinen ICQ-Daten am Transport an, und kann von diesem Zeitpunkt an, über den vom Jabber-Server bereitgestellten ICQ-Transport am ICQ-Netz teilnehmen.
Um einen Transport zu nutzen, meldet man sich mit seinem XMPP-Account am XMPP-Server an, und wählt über den XMPP-Client aus, welchen Transport man verwenden will. Im Falle des ICQ-Transports meldet man sich nun mit seinen ICQ-Daten am Transport an, und kann von diesem Zeitpunkt an, über den vom XMPP-Server bereitgestellten ICQ-Transport am ICQ-Netz teilnehmen.


== Zugang ==
== Zugang ==
Wie bereits angesprochen funktioniert Jabber dezentral. Das heißt, dass es nicht wichtig ist, auf welchem Server man sich einen Jabber-Account erstellt. Es gibt im Internet viele Listen (siehe exemplarisch verlinkte Liste in den Weblinks), auf denen Jabber-Server verzeichnet sind. Diese Listen umfassen meist auch Informationen darüber, welche Dienste und Transports der Jeweilige Jabber-Server anbietet.
Wie bereits angesprochen funktioniert XMPP dezentral. Das heißt, dass es nicht wichtig ist, auf welchem Server man sich einen XMPP-Account erstellt. Es gibt im Internet viele Listen (siehe exemplarisch verlinkte Liste in den Weblinks), auf denen XMPP-Server verzeichnet sind. Diese Listen umfassen meist auch Informationen darüber, welche Dienste und Transports der Jeweilige XMPP-Server anbietet.


Zudem besteht die Möglichkeit, auch selbst einen Jabber-Server, zum Beispiel [[ejabberd]], aufzusetzen, und von diesem aus Jabber zu nutzen. Für die Kommunikation untereinander ist nicht entscheidend, auf welchem Server die Kommunikationspartner sich jeweils befinden.
Zudem besteht die Möglichkeit, auch selbst einen XMPP-Server, wie [[ejabberd]], aufzusetzen, und von diesem aus XMPP zu nutzen. Für die Kommunikation untereinander ist nicht entscheidend, auf welchem Server die Kommunikationspartner sich jeweils befinden.


Wer über einen GMX- oder Web.de-Email-Account verfügt, verfügt bereits auch über einen Jabber-Account, da dies zu den Funktionen eines Email-Accounts der genannten Anbieter gehört. Auch wer einen Google-Account besitzt, verfügt bereits über einen Jabber-Account.
Wer über einen GMX- oder Web.de-Email-Account verfügt, verfügt bereits auch über einen XMPP-Account, da dies zu den Funktionen eines Email-Accounts der genannten Anbieter gehört. Auch wer einen Google-Account besitzt, verfügt bereits über einen XMPP-Account. Facebook-Nutzer können ebenfalls XMPP verwenden, um den Facebook-Chat zu nutzen (siehe Weblinks).


== Verschlüsselung ==
== Verschlüsselung ==
[[Bild:Diagramm_verschluesselung.png|thumb|Verschiedene Verschlüsselungsmethoden im Vergleich]]
[[Bild:Diagramm_verschluesselung.png|thumb|Verschiedene Verschlüsselungsmethoden im Vergleich]]
Jabber bietet unterschiedlich sichere Möglichkeiten der Verschlüsselung. Folgende Verschlüsselungsmethoden werden unterstützt.
XMPP bietet unterschiedlich sichere Möglichkeiten der Verschlüsselung. Folgende Verschlüsselungsmethoden werden unterstützt.


* Server-To-Server
* Server-To-Server (SSL)
* Client-To-Server
* Client-To-Server (SSL)
* Client-To-Server und Server-To-Server kombiniert
* Client-To-Server und Server-To-Server kombiniert
* End-To-End
* End-To-End ([[GnuPG]] oder [http://www.cypherpunks.ca/otr/ OTR])


Komplett unverschlüsselter Austausch von Nachrichten ist unüblich. Das rechtsseitig dargestellte Diagramm zeigt die Verschlüsselungsmethoden nochmal grafisch auf.
Komplett unverschlüsselter Austausch von Nachrichten ist unüblich. Das rechtsseitig dargestellte Diagramm zeigt die Verschlüsselungsmethoden nochmal grafisch auf.
Zeile 93: Zeile 96:


== Verwendete Ports ==
== Verwendete Ports ==
Jabber verwendet folgende Ports:
XMPP verwendet folgende Ports:


* Daten: 5222
* <abbr title="Client-to-server: Kommunikation zwischen Client und Server">c2s</abbr>: 5222
* <abbr title="Server-to-server: Kommunikation zwischen Servern">s2s</abbr>: 5269
* SSL: 5223
* SSL: 5223
* TLS: 5224
* TLS: 5224
Zeile 102: Zeile 106:


== Siehe auch ==
== Siehe auch ==
* [[Liste von Jabber-Software]]
* [[Liste von XMPP-Software]]
* [[:Kategorie:Jabber|Jabber-Kategorie]]
* [[:Kategorie:XMPP|XMPP-Kategorie]]
* [[ejabberd]] (eigener Jabber-Server)
* [[ejabberd]] (eigener XMPP-Server)
* [[Prosody]] (alternativer eigener XMPP-Server)


== Weblinks ==
== Weblinks ==
* [http://xmpp.org/ Website der XMPP-Standards-Founddation]
* [http://xmpp.org/ Website der XMPP-Standards-Founddation] {{sprache|en}}
* [http://helmschrott.de/blog/jabber-in-5-minuten/ Jabber-Einführung „Jabber in 5 Minuten“]
* [http://helmschrott.de/blog/jabber-in-5-minuten/ Einführung „Jabber in 5 Minuten“] {{sprache|de}}
* [http://web.jabber.ccc.de/ Jabber-Server des CCC]
* [http://web.jabber.ccc.de/ Server des CCC] {{sprache|de}}
* [http://www.jabberes.org/servers/ Serverliste auf jabberes.org]
* [http://www.jabberes.org/servers/ Serverliste auf jabberes.org] {{sprache|en}}
* [http://wb.raphaelwolfer.de/pages/home/jabber.php?lang=DE Jabber-Accounts von GMX, Web.de und Google & Co.]
* [http://wb.raphaelwolfer.de/pages/home/jabber.php?lang=DE Accounts von GMX, Web.de und Google & Co.] {{sprache|de}}
* [http://jabber.rwth-aachen.de/wiki/JUNe Jabber University Network] {{sprache|de}}
* [http://www.facebook.com/sitetour/chat.php Facebook-Chat-Informationen] {{sprache|de}}
* [http://prosody.im Prosody, Populärer XMPP-Server, der einfach aufzusetzen ist] {{sprache|en}}


[[Kategorie:Jabber]]
[[Kategorie:XMPP]]
[[Kategorie:Internet]]
[[Kategorie:Internet]]
[[Kategorie:Grundlagen]]
[[Kategorie:Grundlagen]]

Aktuelle Version vom 13. Juli 2014, 11:47 Uhr

XMPP ist eine von der IETF standardisierte Sammlung diverser XML-basierender Netzwerkprotokolle, die ein erweiterbares Messaging- und Anwesenheitsprotokoll darstellen.

Anders als die meisten anderen Messaging-Dienste ist XMPP dezentral aufgebaut. Die nötige Serversoftware sowie das Protokoll um einen XMPP-Server zu betreiben sind ebenfalls frei verfügbar. So steht jedem Anwender die Möglichkeit offen, selbst einen XMPP-Server aufzusetzen.

XMPP eignet sich daher nicht nur um großen, öffentlichen Nutzergruppen eine Möglichkeit der Kommunikation zu bieten, sondern auch, um im kleinen Rahmen schnell und einfach, und ohne große Hürden (XMPP-Clients sind für alle gängigen Architekturen und Systeme verfügbar) eine Kommunikationsmöglichkeit bereitzustellen.

Nutzwert

Schematische Darstellung eines XMPP-Netzwerkes

Der Nutzwert von XMPP ist objektiv betrachtet recht hoch. Nachfolgende Gegenüberstellung soll dies etwas verdeutlichen.

Vorteile

Aufgrund der freien Verfügbarkeit sämtlicher beteiligten Protokolle und Dienste ist die Implementierung in beliebige Anwendungen rechtlich sowie technisch ohne große Probleme möglich. Für alle verbreiteten Programmier- und Skriptsprachen gibt es Klassen oder Funktionen, mittels derer mit XMPP-Servern interagiert werden kann.

XMPP eignet sich nicht nur als Instant-Messaging-Protokoll, sondern auch, aufgrund der XMPP Basis als Status- und Informationsprotokoll. Durch Erweiterungen des Protokolls kann die XMPP-Funktionalität um ein Vielfaches vergrößert werden, so dass nahezu alle vorstellbaren Funktionen verfügbar gemacht werden können.

Da durch die dezentrale Netzwerkarchitektur XMPPs problemlos XMPP-Server aufgesetzt werden können, ist das Netz sehr ausfallsicher und flexibel. Sollte ein Serverbetreiber seinen XMPP-Dienst einstellen, kann man sich entweder woanders einen Account registrieren, oder selbst einen Server aufsetzen.

XMPP ist vollkommen transparent in Bezug auf Server-Technik und Verschlüsselung. Während man bei den meisten anderen Instant-Messaging-Diensten vollkommen auf den jeweiligen Anbieter angewiesen ist, und diesem vertrauen muss, so kann man, wenn man XMPP verwendet, sicher sein, wie und ob verschlüsselt wird, und kann – im Client – selbst bestimmen, ob man verschlüsselte Kommunikation verwenden möchte.

Nachteile

Da XMPP eine Sammlung von Protokollen ist, ist es zwar weitestgehend kompatibel, aber der Funktionsumfang nicht komplett standardisiert. Zudem wird XMPP stetig weiterentwickelt und um Funktionen ergänzt, wodurch XMPP immer komplexer wird, was zu einer „Überfrachtung“ führen kann.

Die Transports verursachen auf dem Server eine sehr hohe Last, und sind zudem teilweise etwas instabil. Zudem funktionieren sie nicht mehr, wenn der Anbieter, für den man den Transport benötigt, sein Protokoll ändert. Transports können daher nur als Notlösung betrachtet werden, und sollten aufgrund der Nachteile nicht dauerhaft verwendet werden.

Man sollte stattdessen besser einen Multimessenger wie Pidgin verwenden, anstatt eines reinen XMPP-Clients wie Gajim oder Psi. Allerdings haben viele Multimessenger den Nachteil, dass sie nur die zum Chatten nötigen XMPP-Grundfunktionen unterstützen.

Durch die dezentrale Strukur XMPPs ergibt sich zwar dass man einen beliebigen XMPP-Server verwenden kann, jedoch gibt es keine zentrale Kontaktliste. Das heißt, wenn man auf „server1“ einen XMPP-Account „ich“ einrichtet, dann hat „ich@server1“ dort eine Kontaktliste. Wenn der Server nun nicht mehr verfügbar ist, und man stattdessen „ich“ auf „zweiterserver“ registriert, dann hat „ich@zweiterserver“ eine andere Kontaktliste.

Es gibt also keine einheitliche Kontakt-Information, wie bei zentralisierten Instant-Messaging-Protokollen.

Der am schwersten wiegende Nachteil ist jedoch die nur zögerliche Verbreitung von XMPP. Zwar ist der Zugang zu XMPP sehr einfach, allerdings wird jemand, der bisher z.B. nur ICQ nutzte, und nur ICQ-Kontakte hat, zwar auf XMPP umsteigen können, müsste dann aber allen Kontakten mitteilen, auch XMPP zu verwenden. Die Kontakte wiederum werden vermutlich auch nur ICQ-Kontakte haben, und diese ebenfalls zu XMPP bewegen müssen, und so weiter.

Identifikation

User, die auf einem Server vorhanden sind, erhalten von diesem einen Jabber Identifier, kurz JID. Wenn ein Client die JID kennt, kann er mit diesem User-Account interagieren, und dem Nutzer, der hinter dem Account steht, zum Beispiel eine Nachricht zukommen lassen.

JIDs bestehen immer aus User- und Servernamen. Der User „client1“, der auf dem Server „xmpp.example.org“ angelegt wurde, hat demnach die JID „client1@xmpp.example.org“.

Zusätzlich zur JID kann auch noch eine Ressource verwendet werden. Diese Ressource wird dazu benutzt, um den selben User mehrfach am Server anmelden zu können. Der Wert dieser Angabe ist frei wählbar, muss aber den Adressierungsregeln des Internet entsprechen.

Der Anwender hinter dem Usernamen „client1“ könnte sich also zum Beispiel ein mal mit der Ressource „Home“ von zu Hause aus anmelden, und ein mal mit der Ressource „Work“ von der Arbeit aus.

Die Ressource wird der JID durch einen Slash getrennt angehängt.

client1@xmpp.example.org/Home
client1@xmpp.example.org/Work

Ressourcen können priorisiert werden. Je höher die Zahl ist, desto wichtiger wird die Ressource vom XMPP-Server angesehen. Wenn an „client1@xmpp.example.org“ eine Nachricht geschickt wird, und dieser User mit zwei verschiedenen Ressourcen angemeldet ist, dann wird die Nachricht an den Client gesendet, dessen Priorität eine höhere Zahl hat.

Wenn zum Beispiel die Ressource „Home“ die Priorität „3“ hat, und die Ressource „Work“ die Priorität „5“ hat, dann wird die Nachricht an den Client mit der Ressource „Work“ weitergeleitet, sofern der Sender der Nachricht nicht explizit angegeben hat, an welche Ressource die Nachricht gesendet werden soll.

Kommunikation

XMPP beherrscht drei Grundlegende Kommunikationswege, zum einen Instant-Messaging, die „klassische“ Variante des 1:1-Chats, des Weiteren Mehrbenutzer-Chats, wie man es aus dem IRC kennt, und zusätlich indirekt auch Voice-over-IP. Sämtliche Interaktion läuft an der Basis über einen dieser drei Kommunikationswege.

Instant-Messaging

Wenn – basierend auf der obigen schematischen Darstellung – „client1@xmpp.example.org“ an „clientb@xmppserver.invalid“ eine Nachricht schickt, sendet dieser die Nachricht zunächst an „xmpp.example.org“, dieser Server kontaktiert dann „xmppserver.invalid“, und übermittelt diesem die Nachricht.

„xmppserver.invalid“ sendet nun eine Information über eine neue Nachricht an „clientb@xmppserver.invalid“. Das XMPP-Programm auf diesem Client empfängt die Meldung, holt die Nachricht vom Server, und zeigt diese an. Wenn „clientb@xmppserver.invalid“ nun auf diese Nachricht antwortet, wird der Vorgang wiederholt, diesmal allerdings in anderer Richtung.

MUC (Multi-User-Chat)

XMPP unterstützt Chats mit mehreren Benutzern gleichzeitig. Dazu wird auf dem Server entweder permanent oder temporär ein Chatraum erstellt, den die Nutzer betreten können. Die Nachricht werden dann nicht einzeln als Nachrichten an die Clients verteilt, sondern erscheinen untereinander im Chatfenster.

Diese Chats unterstützten verschiedene Rollen. So kann in einem Chatraum ein Benutzer „Administrator“ sein, also Regeln für den Raum konfigurieren, User aus dem Raum entfernen, Zugriffskontrollen einstellen oder auch andere User „stummschalten“.

Voice-over-IP

Mit der „Jingle“-Erweiterung besteht zudem die Möglichkeit, VoIP-Telefonate zu führen. Hierfür wird eine Peer-to-Peer-Verbindung aufgebaut. Auch Videotelefonie ist damit möglich. Derzeit befindet sich die Jingle-Funktionalität der meisten Clients im Alpha- oder Beta-Stadium.

Implementiert wird Jingle meist durch die von Google als OpenSource veröffentlichte libjingle. Jedoch wird derzeit üblicher Weise nur Voice- und nicht Video-over-IP ermöglicht. Zudem sind die Daten bisher nur bei einem Client ( Jitsi) verschlüsselt.

Transports

Transports sind Zusatzprogramme, mittels derer ein XMPP-Server fähig ist, auch als Server für andere Messaging-Dienste benutzt werden zu können. So kann zum Beispiel ein ICQ-Transport benutzt werden, um über einen XMPP-Server Nachrichten an User im ICQ-Netzwerk zu übermitteln.

Transports sind Server-Abhängig, nicht alle Server bieten automatisch auch Transports für alle Dienste an. Neben Messenger-Diensten können zum Beispiel auch SMS-, e-Mail- oder RSS-Dienste durch Transports angeboten werden.

Um einen Transport zu nutzen, meldet man sich mit seinem XMPP-Account am XMPP-Server an, und wählt über den XMPP-Client aus, welchen Transport man verwenden will. Im Falle des ICQ-Transports meldet man sich nun mit seinen ICQ-Daten am Transport an, und kann von diesem Zeitpunkt an, über den vom XMPP-Server bereitgestellten ICQ-Transport am ICQ-Netz teilnehmen.

Zugang

Wie bereits angesprochen funktioniert XMPP dezentral. Das heißt, dass es nicht wichtig ist, auf welchem Server man sich einen XMPP-Account erstellt. Es gibt im Internet viele Listen (siehe exemplarisch verlinkte Liste in den Weblinks), auf denen XMPP-Server verzeichnet sind. Diese Listen umfassen meist auch Informationen darüber, welche Dienste und Transports der Jeweilige XMPP-Server anbietet.

Zudem besteht die Möglichkeit, auch selbst einen XMPP-Server, wie ejabberd, aufzusetzen, und von diesem aus XMPP zu nutzen. Für die Kommunikation untereinander ist nicht entscheidend, auf welchem Server die Kommunikationspartner sich jeweils befinden.

Wer über einen GMX- oder Web.de-Email-Account verfügt, verfügt bereits auch über einen XMPP-Account, da dies zu den Funktionen eines Email-Accounts der genannten Anbieter gehört. Auch wer einen Google-Account besitzt, verfügt bereits über einen XMPP-Account. Facebook-Nutzer können ebenfalls XMPP verwenden, um den Facebook-Chat zu nutzen (siehe Weblinks).

Verschlüsselung

Verschiedene Verschlüsselungsmethoden im Vergleich

XMPP bietet unterschiedlich sichere Möglichkeiten der Verschlüsselung. Folgende Verschlüsselungsmethoden werden unterstützt.

  • Server-To-Server (SSL)
  • Client-To-Server (SSL)
  • Client-To-Server und Server-To-Server kombiniert
  • End-To-End (GnuPG oder OTR)

Komplett unverschlüsselter Austausch von Nachrichten ist unüblich. Das rechtsseitig dargestellte Diagramm zeigt die Verschlüsselungsmethoden nochmal grafisch auf.

Einen Überblick über die verschiedenen Verschlüsselungstechniken bietet der Wiki-Artikel Grundlagen der Verschlüsselung.

Verwendete Ports

XMPP verwendet folgende Ports:

  • c2s: 5222
  • s2s: 5269
  • SSL: 5223
  • TLS: 5224

Alternativ können auch die Ports 443 und 80 verwendet werden. Üblicherweise wird nur Port 5222 verwendet, und an diesem mittels STARTTLS die Authentifizierung vorgenommen.

Siehe auch

Weblinks