Extensible Messaging and Presence Protocol
| Offizielles Logo Offizielles Logo | ||||||||||||||||||||||||||||||
| Familie: | Internetprotokollfamilie | |||||||||||||||||||||||||||||
| Einsatzgebiet: | Instant Messaging | |||||||||||||||||||||||||||||
| Ports: | 5222/TCP (Client-zu-Server) 5269/TCP (Server-zu-Server) Direct TLS: 5223/TCP (TLS) | |||||||||||||||||||||||||||||
}}
| ||||||||||||||||||||||||||||||
| Standard seit: | 2004<ref>Vorlage:RFC-Internet</ref> | |||||||||||||||||||||||||||||
| Standards: |
RFC 6120 (Core)<ref name="RFC6120" /> | |||||||||||||||||||||||||||||
Das Extensible Messaging and Presence Protocol (XMPP, {{#invoke:Vorlage:lang|full|CODE=en|SCRIPTING=Latn|SERVICE=englisch}} für erweiterbares Nachrichten- und Anwesenheitsprotokoll; früher Jabber,<ref><templatestyles src="Webarchiv/styles.css" />{{#if:20100414192238
| {{#ifeq: 20100414192238 | *
| {{#if: Jabber Inc. – About Us | {{#invoke:WLink|getEscapedTitle|Jabber Inc. – About Us}} | {{#invoke:Webarchiv|getdomain|http://www.jabber.com/CE/AboutUs}} }} (Archivversionen)
| {{#iferror: {{#time: j. F Y|20100414192238}}
| {{#if: || }}Der Wert des Parameters {{#if: wayback | wayback | Datum }} muss ein gültiger Zeitstempel der Form YYYYMMDDHHMMSS sein!
| {{#if: Jabber Inc. – About Us | {{#invoke:WLink|getEscapedTitle|Jabber Inc. – About Us}} | {{#invoke:Webarchiv|getdomain|http://www.jabber.com/CE/AboutUs}} }} {{#ifeq: | [] | [ | ( }}{{#if: {{#if: | {{{archiv-bot}}} | }} | des Vorlage:Referrer }} vom {{#time: j. F Y|20100414192238}} im Internet Archive{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
}}
}}
| {{#if:
| {{#iferror: {{#time: j. F Y|{{{webciteID}}}}}
| {{#switch: {{#invoke:Str|len|{{{webciteID}}}}}
| 16= {{#if: Jabber Inc. – About Us | {{#invoke:WLink|getEscapedTitle|Jabber Inc. – About Us}} | {{#invoke:Webarchiv|getdomain|http://www.jabber.com/CE/AboutUs}} }} {{#ifeq: | [] | [ | ( }}{{#if: {{#if: | {{{archiv-bot}}} | }} | des Vorlage:Referrer }} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{{webciteID}}}|1|10}}/86400}} }} days}} auf WebCite{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
| 9 = {{#if: Jabber Inc. – About Us | {{#invoke:WLink|getEscapedTitle|Jabber Inc. – About Us}} | {{#invoke:Webarchiv|getdomain|http://www.jabber.com/CE/AboutUs}} }} {{#ifeq: | [] | [ | ( }}{{#if: {{#if: | {{{archiv-bot}}} | }} | des Vorlage:Referrer}} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{#invoke:Expr|base62|{{{webciteID}}}}}|1|10}}/86400}} }} days}} auf WebCite{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
| #default= Der Wert des Parameters {{#if: webciteID | webciteID | ID }} muss entweder ein Zeitstempel der Form YYYYMMDDHHMMSS oder ein Schüsselwert mit 9 Zeichen oder eine 16-stellige Zahl sein!{{#if: || }}
}}
| c|{{{webciteID}}}}} {{#if: Jabber Inc. – About Us | {{#invoke:WLink|getEscapedTitle|Jabber Inc. – About Us}} | {{#invoke:Webarchiv|getdomain|http://www.jabber.com/CE/AboutUs}} }} ({{#if: {{#if: | {{{archiv-bot}}} | }} | des Vorlage:Referrer}} vom {{#time: j. F Y|{{{webciteID}}}}} auf WebCite{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
}}
| {{#if:
| Vorlage:Webarchiv/Today
| {{#if:
| Vorlage:Webarchiv/Generisch
| {{#if: Jabber Inc. – About Us | {{#invoke:WLink|getEscapedTitle|Jabber Inc. – About Us}} | {{#invoke:Webarchiv|getdomain|http://www.jabber.com/CE/AboutUs}} }}
}}}}}}}}{{#if:
| Vorlage:Webarchiv/archiv-bot
}}{{#invoke:TemplatePar|check
|all = url=
|opt = text= wayback= webciteID= archive-is= archive-today= archiv-url= archiv-datum= ()= archiv-bot= format= original=
|cat = Wikipedia:Vorlagenfehler/Vorlage:Webarchiv
|errNS = 0
|template = Vorlage:Webarchiv
|format = *
|preview = 1
}}{{#ifexpr: {{#if:20100414192238|1|0}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}} <> 1
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Genau einer der Parameter 'wayback', 'webciteID', 'archive-today', 'archive-is' oder 'archiv-url' muss angegeben werden.|1}}
}}{{#if:
| {{#switch: {{#invoke:Webarchiv|getdomain|{{{archiv-url}}}}}
| web.archive.org =
{{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von Internet Archive erkannt, bitte Parameter 'wayback' benutzen.|1}}
| webcitation.org =
{{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von WebCite erkannt, bitte Parameter 'webciteID' benutzen.|1}}
| archive.today |archive.is |archive.ph |archive.fo |archive.li |archive.md |archive.vn =
{{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von archive.today erkannt, bitte Parameter 'archive-today' benutzen.|1}}
}}{{#if:
| {{#iferror: {{#iferror:{{#invoke:Vorlage:FormatDate|Execute}}|}}
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Wert des Parameter 'archiv-datum' ist ungültig oder hat ein ungültiges Format.|1}}
| }}
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Pflichtparameter 'archiv-datum' wurde nicht angegeben.|1}}
}}
| {{#if:
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Parameter 'archiv-datum' ist nur in Verbindung mit 'archiv-url' angebbar.|1}}
}}
}}{{#if:{{#invoke:URLutil|isHostPathResource|http://www.jabber.com/CE/AboutUs}}
|| {{#if: || }}
}}{{#if: Jabber Inc. – About Us
| {{#if: {{#invoke:WLink|isBracketedLink|Jabber Inc. – About Us}}
| {{#if: || }}
}}
| {{#if: || }}
}}{{#switch:
|addlarchives|addlpages= {{#if: || }}{{#if: 1 |}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: enWP-Wert im Parameter 'format'.|1}}
}}{{#ifeq: {{#invoke:Str|find|http://www.jabber.com/CE/AboutUs%7Carchiv}} |-1
|| {{#ifeq: {{#invoke:Str|find|{{#invoke:Str|cropleft|http://www.jabber.com/CE/AboutUs%7C4}}%7Chttp}} |-1
|| {{#switch: {{#invoke:Webarchiv|getdomain|http://www.jabber.com/CE/AboutUs }}
| abendblatt.de | daserste.ndr.de | inarchive.com | webcitation.org =
| #default = {{#if: || }}{{#if: 1 |}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Archiv-URL im Parameter 'url' anstatt URL der Originalquelle. Entferne den vor der Original-URL stehenden Mementobestandteil und setze den Archivierungszeitstempel in den Parameter 'wayback', 'webciteID', 'archive.today' oder 'archive-is' ein, sofern nicht bereits befüllt.|1}}
}}
}}
}}</ref> englisch [<templatestyles src="IPA/styles.css" />{{#invoke:TemplatePar|check
|all= 1= |opt= 2= Tondatei= |template=Vorlage:IPA |errNS= 0 |cat=Wikipedia:Vorlagenfehler/Vorlage:IPA |format=@@@ }}] „(daher-)plappern“) ist ein offener Standard eines Kommunikationsprotokolles, welches von der Internet Engineering Task Force (IETF) als RFC 6120,<ref name="RFC6120" /> RFC 6121<ref name="RFC6121" /> und RFC 6122<ref name="RFC6122" /> veröffentlicht wurde. XMPP basiert auf dem XML-Standard und ermöglicht den Austausch von Daten. Es wird unter anderem für Instant Messaging eingesetzt. Erweiterungen von XMPP stellen die von der XMPP Standards Foundation (XSF) veröffentlichten XMPP Extension Protocols dar.
Eigenschaften
XMPP und seine Erweiterungen unterstützen Funktionen zur Nachrichtenübermittlung, Multi-User Chat, also Konferenzen mit mehreren Benutzern, Anzeigen des Online-Status, Dateiübertragungen, Versendung von digitalen Zertifikaten und viele weitere Dienste. Die Netz-Architektur erinnert dabei an das Simple Mail Transfer Protocol (SMTP). Jeder an das Internet angebundene XMPP-Server kann Nachrichten mit anderen Servern austauschen. So sind Verbindungen über Anbieter-Grenzen hinweg möglich. Nachrichten werden vom Nutzer zum eigenen Server, von dort zum fremden Server und dann zum Empfänger weitergeleitet. Auch sind isolierte Netzwerke, beispielsweise in Firmen-Intranets möglich.
Für den Betrieb eines XMPP-Netzwerkes wird mindestens ein XMPP-Server (ähnlich dem Mail Transfer Agent) benötigt. Dieser kann in einem Intranet als alleinige Kommunikationsschnittstelle existieren oder über das Internet zu anderen XMPP-Servern (die XMPP Federation) Verbindungen herstellen.
Um Benutzer innerhalb des XMPP-Netzwerkes zu identifizieren und zu adressieren, gibt es den sogenannten Jabber Identifier (JID). Dieser hat die Form alice@example.com, ähnelt einer E-Mail-Adresse und verhält sich auch ähnlich: So ist hier alice der Benutzername und example.com der Server, bei dem der Nutzer registriert ist. Durch das Konzept der Ressourcen ist es möglich, sich mit einer Identität an einem XMPP-Server mehrfach anzumelden.
Für nahezu jedes Betriebssystem existieren XMPP-Clients, die allerdings das XMPP-Protokoll und dessen Erweiterungen unterschiedlich gut unterstützen.
Das XMPP-Protokoll ist im Gegensatz zu anderen im Internet eingesetzten Instant-Messaging-Protokollen offen dokumentiert<ref name="Gründe für Jabber?">Gründe für Jabber</ref> und wird aktiv weiterentwickelt.
Funktionen
Peer-to-Peer-Sitzungen
Mit der „Jingle“ genannten Erweiterung kann XMPP Peer-to-Peer-Sitzungen vereinbaren. Diese Funktion wird vor allem für IP-Telefonie (VoIP) genutzt und ist in der Aufgabenstellung dem Session Initiation Protocol (SIP) sehr ähnlich.<ref>XEP-0166: Jingle</ref>
Nachdem Google am 8. August 2005 mit der Veröffentlichung von Google Talk das XMPP-Protokoll zunächst proprietär um VoIP-Funktionen erweitert hatte, veröffentlichte<ref name="jabberpress_jingle"><templatestyles src="Webarchiv/styles.css" />{{#if:20070504093715
| {{#ifeq: 20070504093715 | *
| {{#if: XMPP Standards Foundation Publishes Open VoIP and Multimedia Protocols. | {{#invoke:WLink|getEscapedTitle|XMPP Standards Foundation Publishes Open VoIP and Multimedia Protocols.}} | {{#invoke:Webarchiv|getdomain|http://xmpp.org/xsf/press/2005-12-15.shtml}} }} (Archivversionen)
| {{#iferror: {{#time: j. F Y|20070504093715}}
| {{#if: || }}Der Wert des Parameters {{#if: wayback | wayback | Datum }} muss ein gültiger Zeitstempel der Form YYYYMMDDHHMMSS sein!
| {{#if: XMPP Standards Foundation Publishes Open VoIP and Multimedia Protocols. | {{#invoke:WLink|getEscapedTitle|XMPP Standards Foundation Publishes Open VoIP and Multimedia Protocols.}} | {{#invoke:Webarchiv|getdomain|http://xmpp.org/xsf/press/2005-12-15.shtml}} }} {{#ifeq: | [] | [ | ( }}{{#if: {{#if: | {{{archiv-bot}}} | }} | des Vorlage:Referrer }} vom {{#time: j. F Y|20070504093715}} im Internet Archive{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
}}
}}
| {{#if:
| {{#iferror: {{#time: j. F Y|{{{webciteID}}}}}
| {{#switch: {{#invoke:Str|len|{{{webciteID}}}}}
| 16= {{#if: XMPP Standards Foundation Publishes Open VoIP and Multimedia Protocols. | {{#invoke:WLink|getEscapedTitle|XMPP Standards Foundation Publishes Open VoIP and Multimedia Protocols.}} | {{#invoke:Webarchiv|getdomain|http://xmpp.org/xsf/press/2005-12-15.shtml}} }} {{#ifeq: | [] | [ | ( }}{{#if: {{#if: | {{{archiv-bot}}} | }} | des Vorlage:Referrer }} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{{webciteID}}}|1|10}}/86400}} }} days}} auf WebCite{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
| 9 = {{#if: XMPP Standards Foundation Publishes Open VoIP and Multimedia Protocols. | {{#invoke:WLink|getEscapedTitle|XMPP Standards Foundation Publishes Open VoIP and Multimedia Protocols.}} | {{#invoke:Webarchiv|getdomain|http://xmpp.org/xsf/press/2005-12-15.shtml}} }} {{#ifeq: | [] | [ | ( }}{{#if: {{#if: | {{{archiv-bot}}} | }} | des Vorlage:Referrer}} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{#invoke:Expr|base62|{{{webciteID}}}}}|1|10}}/86400}} }} days}} auf WebCite{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
| #default= Der Wert des Parameters {{#if: webciteID | webciteID | ID }} muss entweder ein Zeitstempel der Form YYYYMMDDHHMMSS oder ein Schüsselwert mit 9 Zeichen oder eine 16-stellige Zahl sein!{{#if: || }}
}}
| c|{{{webciteID}}}}} {{#if: XMPP Standards Foundation Publishes Open VoIP and Multimedia Protocols. | {{#invoke:WLink|getEscapedTitle|XMPP Standards Foundation Publishes Open VoIP and Multimedia Protocols.}} | {{#invoke:Webarchiv|getdomain|http://xmpp.org/xsf/press/2005-12-15.shtml}} }} ({{#if: {{#if: | {{{archiv-bot}}} | }} | des Vorlage:Referrer}} vom {{#time: j. F Y|{{{webciteID}}}}} auf WebCite{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
}}
| {{#if:
| Vorlage:Webarchiv/Today
| {{#if:
| Vorlage:Webarchiv/Generisch
| {{#if: XMPP Standards Foundation Publishes Open VoIP and Multimedia Protocols. | {{#invoke:WLink|getEscapedTitle|XMPP Standards Foundation Publishes Open VoIP and Multimedia Protocols.}} | {{#invoke:Webarchiv|getdomain|http://xmpp.org/xsf/press/2005-12-15.shtml}} }}
}}}}}}}}{{#if:
| Vorlage:Webarchiv/archiv-bot
}}{{#invoke:TemplatePar|check
|all = url=
|opt = text= wayback= webciteID= archive-is= archive-today= archiv-url= archiv-datum= ()= archiv-bot= format= original=
|cat = Wikipedia:Vorlagenfehler/Vorlage:Webarchiv
|errNS = 0
|template = Vorlage:Webarchiv
|format = *
|preview = 1
}}{{#ifexpr: {{#if:20070504093715|1|0}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}} <> 1
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Genau einer der Parameter 'wayback', 'webciteID', 'archive-today', 'archive-is' oder 'archiv-url' muss angegeben werden.|1}}
}}{{#if:
| {{#switch: {{#invoke:Webarchiv|getdomain|{{{archiv-url}}}}}
| web.archive.org =
{{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von Internet Archive erkannt, bitte Parameter 'wayback' benutzen.|1}}
| webcitation.org =
{{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von WebCite erkannt, bitte Parameter 'webciteID' benutzen.|1}}
| archive.today |archive.is |archive.ph |archive.fo |archive.li |archive.md |archive.vn =
{{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von archive.today erkannt, bitte Parameter 'archive-today' benutzen.|1}}
}}{{#if:
| {{#iferror: {{#iferror:{{#invoke:Vorlage:FormatDate|Execute}}|}}
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Wert des Parameter 'archiv-datum' ist ungültig oder hat ein ungültiges Format.|1}}
| }}
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Pflichtparameter 'archiv-datum' wurde nicht angegeben.|1}}
}}
| {{#if:
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Parameter 'archiv-datum' ist nur in Verbindung mit 'archiv-url' angebbar.|1}}
}}
}}{{#if:{{#invoke:URLutil|isHostPathResource|http://xmpp.org/xsf/press/2005-12-15.shtml}}
|| {{#if: || }}
}}{{#if: XMPP Standards Foundation Publishes Open VoIP and Multimedia Protocols.
| {{#if: {{#invoke:WLink|isBracketedLink|XMPP Standards Foundation Publishes Open VoIP and Multimedia Protocols.}}
| {{#if: || }}
}}
| {{#if: || }}
}}{{#switch:
|addlarchives|addlpages= {{#if: || }}{{#if: 1 |}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: enWP-Wert im Parameter 'format'.|1}}
}}{{#ifeq: {{#invoke:Str|find|http://xmpp.org/xsf/press/2005-12-15.shtml%7Carchiv}} |-1
|| {{#ifeq: {{#invoke:Str|find|{{#invoke:Str|cropleft|http://xmpp.org/xsf/press/2005-12-15.shtml%7C4}}%7Chttp}} |-1
|| {{#switch: {{#invoke:Webarchiv|getdomain|http://xmpp.org/xsf/press/2005-12-15.shtml }}
| abendblatt.de | daserste.ndr.de | inarchive.com | webcitation.org =
| #default = {{#if: || }}{{#if: 1 |}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Archiv-URL im Parameter 'url' anstatt URL der Originalquelle. Entferne den vor der Original-URL stehenden Mementobestandteil und setze den Archivierungszeitstempel in den Parameter 'wayback', 'webciteID', 'archive.today' oder 'archive-is' ein, sofern nicht bereits befüllt.|1}}
}}
}}
}}, XMPP Standards Foundation, 15. Dezember 2005</ref> die XMPP Standards Foundation am 15. Dezember 2005 die Spezifikation<ref name="xep166">XEP-0166: Jingle</ref> der Erweiterung „Jingle Signalling“, die XMPP um P2P-Fähigkeiten erweitert, sowie die Spezifikation<ref name="jep167">XEP-0167: Jingle Audio Media Description Format</ref> einer ersten Anwendung, „Jingle Audio“ für VoIP. Am selben Tag veröffentlichte<ref name="google_announce_libjingle">Google Talkabout, Sean Egan: Jingle all the way</ref> Google den Quellcode der Programmbibliothek libjingle, die diese Funktionalität implementiert. Einige andere XMPP-Clients implementierten (z. B. auch durch Nutzung von libjingle) danach auch „Jingle Audio“, so dass VoIP-Funktionen mit XMPP nicht nur Google Talk und Windows-Systemen vorbehalten sind.
Mittlerweile existieren weitere Anwendungen, die „Jingle Signalling“ – das beispielsweise die Kommunikation durch Network Address Translations (NAT) hindurch vereinbart – als Grundlage benutzen. Bisher sind unter anderem Jingle-Profile für Video (auf Theora-Basis), User Datagram Protocol (UDP) (nutzbar etwa zur Vereinbarung von Mehrspieler-Netzwerk-Spielen) und das InterAsterisk eXchange spezifiziert. Auch eine Umsetzung des Mehrfrequenzwahlverfahrens (DTMF) existiert zwecks Rückwärtskompatibilität mit dem herkömmlichen Telefonnetz.
Zurzeit wird an Profilen für Datenaustausch und virtuelle private Netzwerke gearbeitet.
Multi-User Chat
{{#if: Multi-User Chat|{{#ifexist:Multi-User Chat|
|{{#if: |{{#ifexist:{{{2}}}|
|{{#if: |{{#ifexist:{{{3}}}|
|}}|}}|}}|}}|}}|Einbindungsfehler: Die Vorlage Hauptartikel benötigt immer mindestens ein Argument.}}
XMPP unterstützt Konferenzen mit mehreren Benutzern. Heute ist dabei die Spezifikation Multi-User Chat (MUC)<ref name="xep45">XEP-0045: Multi-User Chat</ref> die verbreitetste und wird heute auch bei XMPP vermehrt durch die Begriffe Chat, Raum und Gruppe ersetzt. Sie unterstützt Funktionen wie beispielsweise Rollenzuordnung für Nutzer innerhalb des Chats, passwortgeschützte oder unsichtbare Räume und ist abwärtskompatibel zur früheren Spezifikation Groupchat. Konferenzräume werden auch durch Jabber Identifier repräsentiert. Der Multi-User Chat ist aus Sicht des normalen Anwenders in der Anwendung vergleichbar mit dem Internet Relay Chat (IRC Chat).
Kommunikation mit anderen Chat-Netzwerken
{{#if: XMPP-Transport|{{#ifexist:XMPP-Transport|
|{{#if: |{{#ifexist:{{{2}}}|
|{{#if: |{{#ifexist:{{{3}}}|
|}}|}}|}}|}}|}}|Einbindungsfehler: Die Vorlage Hauptartikel benötigt immer mindestens ein Argument.}}
Ein besonderes Konzept von XMPP ist das des Transports. Damit kann man auch andere Netzwerke (im XMPP-Jargon Legacy Services genannt) wie Gadu-Gadu oder Internet Relay Chat (IRC) verwenden und mit deren Benutzern interagieren. Die Server transportieren dabei die Nachrichten zwischen den Netzwerken, ohne dass die beiden beteiligten Benutzer dafür besondere Vorkehrungen zu treffen brauchen.
Zur Kommunikation mit Nutzern eines mit XMPP nicht kompatiblen Netzwerks wird ein eigenes Konto im jeweiligen Netzwerk benötigt. Jeder Benutzer von XMPP kann sich bei Transports registrieren, indem er seine vorhandenen Anmelde-Informationen an diesen Dienst übergibt. Dazu müssen Clients Service Discovery<ref name="XEP-0030">XEP-0030: Service Discovery, XMPP Standards Foundation, Version 2.2, 24. Januar 2006</ref> (zu deutsch „Dienste-Ermittlung“) unterstützen. So ist es möglich, Server nach angebotenen Transports zu durchsuchen und ohne zusätzliche Installation von Plugins mit Nutzern proprietärer Instant-Messaging-Netzwerke zu kommunizieren.
Geschichte
Jeremie Miller begann 1998 mit der Entwicklung eines Echtzeit-XML-Streaming-Protokolls, das er 1999 unter dem Namen Jabber veröffentlichte. 2004 hatte die IETF das Protokoll mit einigen Änderungen als offiziellen Standard mit der Bezeichnung Extensible Messaging and Presence Protocol verabschiedet. Seitdem ist die XMPP Standards Foundation (XSF) verantwortlich für die Standardisierung der auf XMPP aufbauenden Protokolle, den sogenannten XMPP Extension Protocols. Direktor und Autor der meisten XEPs ist Peter Saint-Andre.
Verbreitung
Google war der einzige Anbieter, der das XMPP-Protokoll für die E-Mail-Adressen von Google Mail anbot. Dieser Google-Talk-Dienst wurde allerdings im Mai 2013 für Drittsoftware eingestellt und steht nur noch für den Client von Google zur Verfügung. In Deutschland wurde XMPP von United Internet im GMX/Web.de Multimessenger verwendet, der darüber hinaus auch die Integration anderer Dienste wie ICQ, Windows Live Messenger und Yahoo Messenger erlaubte. Am 1. Dezember 2014 wurde dieser Dienst jedoch ebenfalls eingestellt. Google- und GMX-Kunden konnten damals lediglich mit der Angabe ihrer E-Mail-Adresse direkt – also ohne Einsatz von „Transports“ – miteinander kommunizieren. Ebenso verwendete der Facebook-Chat das XMPP-Protokoll. Früher konnte man sich deshalb mit vielen freien Chat-Programmen mit Facebook-Freunden unterhalten. Facebook hat das Protokoll aber im Mai 2015 derart modifiziert, dass Drittsoftware damit nicht mehr fehlerfrei funktioniert und das „Federation-Feature“, also die Kommunikation mit anderen XMPP-Servern, wurde dabei von Anfang an nicht unterstützt.
Weitere bekannte Clients sind Trillian von Cerulean Studios, LJ Chat von LiveJournal, Ovi von Nokia (das zugleich einen Jabber-Client für seine Mobilfunkgeräte anbietet), und Miranda NG.<ref>{{#invoke:Vorlage:Literatur|f}}</ref>
Weltweit gibt es mehrere tausend XMPP-Server. Einige Privatpersonen, aber auch Vereine wie der Chaos Computer Club<ref><templatestyles src="Webarchiv/styles.css" />{{#if:20260112073635
| {{#ifeq: 20260112073635 | *
| {{#if: jabber.ccc.de | {{#invoke:WLink|getEscapedTitle|jabber.ccc.de}} | {{#invoke:Webarchiv|getdomain|http://jabber.ccc.de/}} }} (Archivversionen)
| {{#iferror: {{#time: j. F Y|20260112073635}}
| {{#if: || }}Der Wert des Parameters {{#if: wayback | wayback | Datum }} muss ein gültiger Zeitstempel der Form YYYYMMDDHHMMSS sein!
| {{#if: jabber.ccc.de | {{#invoke:WLink|getEscapedTitle|jabber.ccc.de}} | {{#invoke:Webarchiv|getdomain|http://jabber.ccc.de/}} }} {{#ifeq: | [] | [ | ( }}{{#if: {{#if: | {{{archiv-bot}}} | }} | des Vorlage:Referrer }} vom {{#time: j. F Y|20260112073635}} im Internet Archive{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
}}
}}
| {{#if:
| {{#iferror: {{#time: j. F Y|{{{webciteID}}}}}
| {{#switch: {{#invoke:Str|len|{{{webciteID}}}}}
| 16= {{#if: jabber.ccc.de | {{#invoke:WLink|getEscapedTitle|jabber.ccc.de}} | {{#invoke:Webarchiv|getdomain|http://jabber.ccc.de/}} }} {{#ifeq: | [] | [ | ( }}{{#if: {{#if: | {{{archiv-bot}}} | }} | des Vorlage:Referrer }} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{{webciteID}}}|1|10}}/86400}} }} days}} auf WebCite{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
| 9 = {{#if: jabber.ccc.de | {{#invoke:WLink|getEscapedTitle|jabber.ccc.de}} | {{#invoke:Webarchiv|getdomain|http://jabber.ccc.de/}} }} {{#ifeq: | [] | [ | ( }}{{#if: {{#if: | {{{archiv-bot}}} | }} | des Vorlage:Referrer}} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{#invoke:Expr|base62|{{{webciteID}}}}}|1|10}}/86400}} }} days}} auf WebCite{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
| #default= Der Wert des Parameters {{#if: webciteID | webciteID | ID }} muss entweder ein Zeitstempel der Form YYYYMMDDHHMMSS oder ein Schüsselwert mit 9 Zeichen oder eine 16-stellige Zahl sein!{{#if: || }}
}}
| c|{{{webciteID}}}}} {{#if: jabber.ccc.de | {{#invoke:WLink|getEscapedTitle|jabber.ccc.de}} | {{#invoke:Webarchiv|getdomain|http://jabber.ccc.de/}} }} ({{#if: {{#if: | {{{archiv-bot}}} | }} | des Vorlage:Referrer}} vom {{#time: j. F Y|{{{webciteID}}}}} auf WebCite{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
}}
| {{#if:
| Vorlage:Webarchiv/Today
| {{#if:
| Vorlage:Webarchiv/Generisch
| {{#if: jabber.ccc.de | {{#invoke:WLink|getEscapedTitle|jabber.ccc.de}} | {{#invoke:Webarchiv|getdomain|http://jabber.ccc.de/}} }}
}}}}}}}}{{#if:
| Vorlage:Webarchiv/archiv-bot
}}{{#invoke:TemplatePar|check
|all = url=
|opt = text= wayback= webciteID= archive-is= archive-today= archiv-url= archiv-datum= ()= archiv-bot= format= original=
|cat = Wikipedia:Vorlagenfehler/Vorlage:Webarchiv
|errNS = 0
|template = Vorlage:Webarchiv
|format = *
|preview = 1
}}{{#ifexpr: {{#if:20260112073635|1|0}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}} <> 1
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Genau einer der Parameter 'wayback', 'webciteID', 'archive-today', 'archive-is' oder 'archiv-url' muss angegeben werden.|1}}
}}{{#if:
| {{#switch: {{#invoke:Webarchiv|getdomain|{{{archiv-url}}}}}
| web.archive.org =
{{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von Internet Archive erkannt, bitte Parameter 'wayback' benutzen.|1}}
| webcitation.org =
{{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von WebCite erkannt, bitte Parameter 'webciteID' benutzen.|1}}
| archive.today |archive.is |archive.ph |archive.fo |archive.li |archive.md |archive.vn =
{{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von archive.today erkannt, bitte Parameter 'archive-today' benutzen.|1}}
}}{{#if:
| {{#iferror: {{#iferror:{{#invoke:Vorlage:FormatDate|Execute}}|}}
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Wert des Parameter 'archiv-datum' ist ungültig oder hat ein ungültiges Format.|1}}
| }}
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Pflichtparameter 'archiv-datum' wurde nicht angegeben.|1}}
}}
| {{#if:
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Parameter 'archiv-datum' ist nur in Verbindung mit 'archiv-url' angebbar.|1}}
}}
}}{{#if:{{#invoke:URLutil|isHostPathResource|http://jabber.ccc.de/}}
|| {{#if: || }}
}}{{#if: jabber.ccc.de
| {{#if: {{#invoke:WLink|isBracketedLink|jabber.ccc.de}}
| {{#if: || }}
}}
| {{#if: || }}
}}{{#switch:
|addlarchives|addlpages= {{#if: || }}{{#if: 1 |}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: enWP-Wert im Parameter 'format'.|1}}
}}{{#ifeq: {{#invoke:Str|find|http://jabber.ccc.de/%7Carchiv}} |-1
|| {{#ifeq: {{#invoke:Str|find|{{#invoke:Str|cropleft|http://jabber.ccc.de/%7C4}}%7Chttp}} |-1
|| {{#switch: {{#invoke:Webarchiv|getdomain|http://jabber.ccc.de/ }}
| abendblatt.de | daserste.ndr.de | inarchive.com | webcitation.org =
| #default = {{#if: || }}{{#if: 1 |}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Archiv-URL im Parameter 'url' anstatt URL der Originalquelle. Entferne den vor der Original-URL stehenden Mementobestandteil und setze den Archivierungszeitstempel in den Parameter 'wayback', 'webciteID', 'archive.today' oder 'archive-is' ein, sofern nicht bereits befüllt.|1}}
}}
}}
}}</ref>, betreiben eigene Server ohne kommerzielle Absicht. Die Piratenpartei betrieb ebenfalls einen inzwischen eingestellten Server.<ref>wiki.piratenpartei.de/Jabber</ref> Die XMPP Standards Foundation bietet eine Liste öffentlicher Server, in die sich Betreiber eintragen können.<ref>Public XMPP Server Directory</ref> Zudem existiert mit dem xmpp-server-scanner ein Bot, der Server automatisch abfragt und eine Liste mit Angaben zur Verfügbarkeit und unterstützten Funktionen generiert.<ref>Projektübersicht{{#ifeq:extensible messaging and presence protocol|xmpp-server-scanner|| zu xmpp-server-scanner}} bei Google Code</ref>
Im Jahr 2009 hat Cisco Jabber Inc. aufgekauft. Eine Integration in eigene Softwarelösungen ist geplant.<ref>Cisco übernimmt Instant-Messaging-Anbieter Jabber</ref>
Verschlüsselung
Die Verbindung zwischen zwei XMPP-Clients wird immer über mindestens einen XMPP-Server aufgebaut. Sind beide Clients an zwei verschiedenen Servern angemeldet, so muss auch zwischen den beiden Servern eine Verbindung aufgebaut werden (Client A ↔ Server A ↔ Server B ↔ Client B). Da auf diesem Übertragungsweg Nachrichten an jeder Station (und auch dazwischen) abgehört, respektive mitgeschnitten werden können, empfiehlt es sich, diese zu verschlüsseln.
Die Verbindung zwischen einem Client und dem Server, an dem dieser Client angemeldet ist, kann mittels Transport Layer Security (SSL/TLS) verschlüsselt werden (Client-zu-Server-Verschlüsselung). SSL-Verbindungen zum XMPP-Server wurden in der Regel auf Port 5223 angeboten, mittlerweile nutzen TLS-Verbindungen jedoch laut RFC 6120<ref name="RFC6120" /> mittels STARTTLS ebenfalls den Standardport 5222. Einige Server bieten abweichend auch explizit Port 5224 für TLS an. Client-zu-Client-Verschlüsselung ist für die Betreiber eines XMPP-Servers sicher die bevorzugte Variante, da so weniger Ressourcen auf den Servern verbraucht werden, er kann dann aber nicht mehr nachvollziehen, welche Inhalte übertragen werden (d. h., er kann keine Textnachrichten mitlesen), was wiederum für den Client von Vorteil ist.
Selbst wenn die Verbindungen der Clients zu ihren jeweiligen Servern verschlüsselt sind, ist die Kommunikation zwischen den Servern ein möglicher Angriffspunkt. Viele Server verschlüsseln daher ihre Verbindungen zu anderen Servern (Server-zu-Server-Verschlüsselung). Eine Kombination mit der Client-zu-Server-Verschlüsselung ist sinnvoll, da sonst die Verbindung am schwächsten Punkt – d. h. dort, wo die Verbindung nicht verschlüsselt ist – angreifbar ist. Werden beide Verfahren eingesetzt, wird die Sicherheit erheblich verbessert, dennoch sind die Server ein Angriffspunkt, da selbst bei einer Kombination aus Server-zu-Server- und Client-zu-Server-Verschlüsselung die Daten an beiden Servern entschlüsselt werden. Im März 2014 unterschrieben viele Betreiber der großen öffentlichen XMPP-Server ein Manifest, in dem sie sich verpflichten, Server-zu-Server Verschlüsselung anzubieten und unsichere Protokolle wie SSLv2 abzuschalten.<ref>Manifesto auf GitHub, abgerufen am 5. November 2014</ref>
Einen noch höheren Grad an Sicherheit bietet daher die Ende-zu-Ende-Verschlüsselung. Indem alle Daten vom Ausgangsclient ver- und erst vom jeweiligen Zielclient wieder entschlüsselt werden, werden Angriffspunkte minimiert. Die Verbindung ist gezwungenermaßen jederzeit verschlüsselt, und die Server können die von ihnen weitergeleiteten Daten nicht entschlüsseln. So können die Betreiber des Servers und potenzielle Angreifer lediglich Rückschlüsse auf den Zeitpunkt, die Dauer und den ungefähren Umfang eines Gespräches schließen.
Ein Verfahren zur Ende-zu-Ende-Verschlüsselung ist OpenPGP. Es beruht auf dem Prinzip der asymmetrischen Verschlüsselung. Die Schlüssel bleiben über einen längeren Zeitraum unverändert. Jedes Schlüsselpaar kann eindeutig einem „Schlüsselinhaber“ zugeordnet werden. Daher kann mit dieser Form der Verschlüsselung nicht nur die „Vertraulichkeit“ einer Datenübertragung erreicht werden, sondern auch eine „Verbindlichkeit“ im Sinne der Informationssicherheit: Gesprächsteilnehmer können damit anhand von Aufzeichnungen später nachweisen, welche Aussagen in dem Gespräch von welchen Personen gemacht wurden.
Off-the-Record Messaging (OTR) bietet die Möglichkeit, Übertragungen abhörsicher („vertraulich“) zu gestalten, gleichzeitig jedoch eine Glaubhafte Abstreitbarkeit („Unverbindlichkeit“) zu ermöglichen: Nach erfolgter Kommunikation ist der Inhalt abstreitbar, da die Integrität der übertragenen Nachrichten gezielt zunichtegemacht wird, indem die temporär genutzten Signaturschlüssel nach deren Gebrauch im Klartext übertragen werden. Dadurch kann auch kein Gesprächsteilnehmer später nachweisen, dass bestimmte Inhalte tatsächlich übertragen wurden, da dieser die Inhalte selbst im Nachhinein hätte signieren können. Durch Perfect Forward Secrecy (PFS) wird außerdem erreicht, dass bei Verlust von privaten Schlüsseln vorherige Trafficmitschnitte nicht entschlüsselt werden können. Diese Form der Verschlüsselung eignet sich somit besonders für vertrauliche Gespräche „sub rosa“. Die Tatsache, dass ein Gespräch zwischen den Teilnehmern stattgefunden hat, bleibt davon unabhängig jedoch nachweisbar.
OMEMO ist eine Erweiterung des XMPP-Protokolls das Ende-zu-Ende-Verschlüsselung zwischen Nutzern ermöglicht. Außerdem realisiert OMEMO die Anforderung Perfect Forward Secrecy und Glaubhafte Abstreitbarkeit. Alle gängigen XMPP-Server beherrschen diese Protokollerweiterung, sowie zahlreiche Jabber-Clienten wie z. B. Gajim, Dino oder Conversations.
Da die Server-zu-Server-Verschlüsselung von XMPP nicht vom Endbenutzer beeinflusst werden kann, weil sie im Hoheitsbereich der Serveradministratoren stattfindet, ist die für den Endbenutzer größtmögliche Sicherheit durch die gleichzeitige Verwendung von Client-zu-Server-Verschlüsselung und Ende-zu-Ende-Verschlüsselung erreichbar.
Siehe auch
- Liste von Instant-Messaging-Protokollen
- Liste von mobilen Instant-Messengern
- Liste von Multi-Protokoll-Messengern
- Liste von XMPP-Clients
- Liste von XMPP-Server-Software
Normen und Standards
XMPP ist standardisiert über mehrere RFCs. Es gibt eine Hauptlinie und zugehörige Ergänzungen bzw. Update-RFC's:
Erste Generation:
Zweite Generation:
Literatur
- D. J. Adams: Programming Jabber. O’Reilly Media, Januar 2002, ISBN 0-596-00202-5
- Stephen Lee u. a.: Jabber Programming. John Wiley & Sons, April 2002, ISBN 0-7645-4934-0
- Iain Shiegoka: Instant Messaging in Java: The Jabber Protocols. Manning Publications, Mai 2002, ISBN 1-930110-46-4
- P. Saint-Andre, K. Smith, R. Tronçon: XMPP: The Definitive Guide. O’Reilly Media, April 2009, ISBN 978-0-596-52126-4
Weblinks
|1|= – Lern- und Lehrmaterialien |0|-= |X|x={{#switch: 0
|0|4|10|12|14|100=}}
|#default= – {{{suffix}}}
}}{{#if: | ({{#invoke:Multilingual|format|{{{lang}}}|slang=!|shift=m}}) }}{{#invoke:TemplatePar|check
|opt= 1= 2= lang= suffix= |template=Vorlage:Wikibooks |cat=Wikipedia:Vorlagenfehler/Schwesterprojekt }}
- XMPP Standards Foundation XSF (englisch)
- Jabber.org (englisch)
- XMPP Software-Liste (Clients, Server, Bibliotheken) der XMPP Standards Foundation (englisch)
- Geschichte des XMPP-Protokolls (xmpp.org) (englisch)
- Linkkatalog zum Thema Jabber bei curlie.org (ehemals DMOZ) (englisch)
- Einführung zu XMPP (deutsch)
- XMPP Providers Liste von XMPP-Providern auf xmpp.net (englisch)
Einzelnachweise
<references> <ref name="RFC6120"> Vorlage:RFC-Internet </ref> <ref name="RFC6121"> Vorlage:RFC-Internet </ref> <ref name="RFC6122"> Vorlage:RFC-Internet </ref> </references>
- Seiten mit defekten Dateilinks
- Wikipedia:Vorlagenfehler/Vorlage:Webarchiv
- Wikipedia:Vorlagenfehler/Vorlage:Webarchiv/Archiv-URL
- Wikipedia:Vorlagenfehler/Parameter:URL
- Wikipedia:Vorlagenfehler/Parameter:Linktext
- Wikipedia:Vorlagenfehler/Vorlage:Webarchiv/Linktext fehlt
- Wikipedia:Vorlagenfehler/Schwesterprojekt
- Synchronous Conferencing-Protokoll
- Instant-Messaging-Protokoll
- XML-basierte Sprache
- XMPP