XMPP: Unterschied zwischen den Versionen
Dirk (Diskussion | Beiträge) KKeine Bearbeitungszusammenfassung |
Boenki (Diskussion | Beiträge) |
||
(20 dazwischenliegende Versionen von 9 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
{{righttoc}} | |||
{{righttoc}} | XMPP ist eine von der {{wikipedia|Internet_Engineering_Task_Force|IETF}} standardisierte Sammlung diverser XML-basierender Netzwerkprotokolle, die ein erweiterbares Messaging- und Anwesenheitsprotokoll darstellen. | ||
Anders als die meisten anderen Messaging-Dienste ist | 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 == | == Nutzwert == | ||
Der Nutzwert von | [[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 | 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''' | 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 '''[[Grundlagen_der_Verschlüsselung_in_Netzwerken#End-To-End|verschlüsselte Kommunikation]]''' verwenden möchte. | |||
=== Nachteile === | === Nachteile === | ||
Da | 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 | 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 | 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 | 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 | 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 | 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@ | client1@xmpp.example.org/Home | ||
client1@ | client1@xmpp.example.org/Work | ||
Ressourcen können priorisiert werden. Je höher die Zahl ist, desto wichtiger wird die Ressource vom | 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. | ||
== | == 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. | |||
Wenn „clientb@ | „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) === | ||
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 | ''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 | 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 | 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 | 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 | 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]] | ||
XMPP bietet unterschiedlich sichere Möglichkeiten der Verschlüsselung. Folgende Verschlüsselungsmethoden werden unterstützt. | |||
* Server-To-Server (SSL) | * Server-To-Server (SSL) | ||
* Client-To-Server (SSL) | * Client-To-Server (SSL) | ||
* Client-To-Server und Server-To-Server kombiniert | * Client-To-Server und Server-To-Server kombiniert | ||
* End-To-End (GnuPG oder | * 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 == | ||
XMPP verwendet folgende Ports: | |||
* | * <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 | * [[Liste von XMPP-Software]] | ||
* [[:Kategorie: | * [[:Kategorie:XMPP|XMPP-Kategorie]] | ||
* [[ejabberd]] (eigener | * [[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/ | * [http://helmschrott.de/blog/jabber-in-5-minuten/ Einführung „Jabber in 5 Minuten“] {{sprache|de}} | ||
* [http://web.jabber.ccc.de/ | * [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 | * [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 | * [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: | [[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
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
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
- Liste von XMPP-Software
- XMPP-Kategorie
- ejabberd (eigener XMPP-Server)
- Prosody (alternativer eigener XMPP-Server)