XMPP

XMPP ist das Extensible Messaging and Presence Protocol, eine Reihe offener Technologien für Instant Messaging, Präsenz, Chat mit mehreren Parteien, Sprach- und Videoanrufe, Zusammenarbeit, leichte Middleware, Inhaltssyndizierung und generalisiertes Routing von XML-Daten.

XMPP wurde ursprünglich in der Jabber Open-Source-Community entwickelt, um eine offene, dezentrale Alternative zu den damals geschlossenen Instant Messaging-Diensten zu bieten. XMPP bietet mehrere wichtige Vorteile gegenüber solchen Diensten:

  • Offen – Die XMPP-Protokolle sind frei, offen, öffentlich und leicht verständlich; Darüber hinaus gibt es mehrere Implementierungen in Form von Clients, Servern, Serverkomponenten und Codebibliotheken.

  • Standard – Die Internet Engineering Task Force (IETF) hat die XML-Streaming-Kernprotokolle als genehmigte Instant Messaging- und Präsenztechnologie formalisiert. Die XMPP-Spezifikationen wurden 2004 als RFC 3920 und RFC 3921 veröffentlicht, und die XMPP Standards Foundation veröffentlicht weiterhin viele XMPP-Erweiterungsprotokolle. Im Jahr 2011 wurden die Kern-RFCs überarbeitet, was zu den aktuellsten Spezifikationen (RFC 6120, RFC 6121 und RFC 7622) führte.

  • Bewährt — Die ersten Jabber / XMPP-Technologien wurden 1998 von Jeremie Miller entwickelt und sind heute recht stabil; Hunderte von Entwicklern arbeiten an diesen Technologien, es gibt heute Zehntausende von XMPP-Servern im Internet, und Millionen von Menschen nutzen XMPP für Instant Messaging über öffentliche Dienste wie Google Talk und XMPP-Bereitstellungen in Organisationen weltweit.

  • Dezentralisiert – Die Architektur des XMPP-Netzwerks ähnelt der von E-Mails; Daher kann jeder seinen eigenen XMPP-Server betreiben, sodass Einzelpersonen und Organisationen die Kontrolle über ihre Kommunikationserfahrung übernehmen können.

  • Sicher – Jeder XMPP-Server kann vom öffentlichen Netzwerk isoliert sein (z. B. in einem Firmen-Intranet) und robuste Sicherheit mit SASL und TLS wurde in die XMPP-Kernspezifikationen integriert. Darüber hinaus arbeitet die XMPP-Entwickler-Community aktiv an einer Ende-zu-Ende-Verschlüsselung, um die Sicherheitslatte noch weiter anzuheben.

  • Erweiterbar – Mit der Leistungsfähigkeit von XML kann jeder benutzerdefinierte Funktionen auf den Kernprotokollen aufbauen; Um die Interoperabilität aufrechtzuerhalten, werden gemeinsame Erweiterungen in der XEP-Serie veröffentlicht, eine solche Veröffentlichung ist jedoch nicht erforderlich, und Organisationen können auf Wunsch ihre eigenen privaten Erweiterungen verwalten.

  • Flexibel – XMPP-Anwendungen, die über IM hinausgehen, umfassen Netzwerkmanagement, Content-Syndication, Tools für die Zusammenarbeit, Dateifreigabe, Spiele, Remote-Systemüberwachung, Webdienste, leichte Middleware, Cloud Computing und vieles mehr.

  • Vielfältig – Eine Vielzahl von Unternehmen und Open-Source-Projekten verwenden XMPP, um Echtzeitanwendungen und -dienste zu erstellen und bereitzustellen.

Diese Seite bietet eine Einführung in verschiedene XMPP-Technologien, einschließlich Links zu Spezifikationen, Implementierungen, Tutorials und speziellen Diskussionsforen.

Wichtige XMPP-Technologien:

  • Core — Informationen zu den XMPP—Kerntechnologien für XML-Streaming
  • Jingle – SIP—kompatible Multimedia-Signalisierung für Sprach—, Video—, Dateiübertragungs- und andere Anwendungen
  • Multi-User-Chat – flexible Kommunikation mit mehreren Parteien
  • PubSub – Warnungen und Benachrichtigungen für Datensyndizierung, Rich Presence und mehr
  • BOSH – eine HTTP-Bindung für XMPP (und anderen) Datenverkehr

Kern

Im Kern ist XMPP eine Technologie zum Streamen von XML über ein Netzwerk. Das Protokoll, das 1999 aus der Jabber-Open-Source-Community hervorgegangen ist, wurde ursprünglich entwickelt, um eine offene, sichere und dezentrale Alternative zu verbraucherorientierten Instant Messaging-Diensten (IM) wie ICQ, AIM und MSN bereitzustellen. Die Kerntechnologien wurden 2004 auf der IETF unter dem Namen Extensible Messaging and Presence Protocol (XMPP) formalisiert. Zu diesen Kerntechnologien gehören:

  • Die Basis-XML-Streaming-Schicht
  • Kanalverschlüsselung mit Transport Layer Security (TLS)
  • Starke Authentifizierung mit der einfachen Authentifizierungs- und Sicherheitsschicht (SASL)
  • Verwendung von UTF-8 für vollständige Unicode-Unterstützung, einschließlich vollständig internationalisierter Adressen
  • Integrierte Informationen zur Netzwerkverfügbarkeit („Präsenz“)
  • Präsenzabonnements für die bidirektionale Autorisierung
  • Präsenzfähige Kontaktlisten („Dienstpläne“)

Spezifikationen

Die Kerntechnologien von XMPP sind in zwei RFCs definiert veröffentlicht von der IETF:

  • RFC 6120: XMPP Core
  • RFC 6121: XMPP IM
  • RFC 7622: XMPP-Adressformat

Die ersten XMPP-RFCs (RFC 3920 und RFC 3921) wurden im Oktober 2004 von der XMPP-Arbeitsgruppe der IETF erstellt. Im Jahr 2011 wurden sie überarbeitet, was zu den aktuellen Spezifikationen führte.

Implementierungen

Es gibt viele Implementierungen der XMPP-Kernspezifikationen. Weitere Informationen finden Sie auf den folgenden Seiten:

  • Clients
  • Server
  • Codebibliotheken

Jingle

Im Wesentlichen bietet Jingle eine Möglichkeit für Jabber-Clients, Multimedia-Sitzungen einzurichten, zu verwalten und abzureißen. Solche Sitzungen können eine Vielzahl von Anwendungstypen unterstützen (z. B. Sprach-Chat, Video-Chat und Dateiübertragung) und eine Vielzahl von Medientransportmethoden verwenden (z. B. TCP, UDP, RTP oder sogar In-Band-XMPP selbst). Die Signalisierung zum Aufbau einer Jingle-Sitzung wird über XMPP gesendet, und normalerweise werden die Medien direkt Peer-to-Peer oder über ein Medienrelay gesendet. Jingle bietet ein steckbares Framework sowohl für Anwendungstypen als auch für Medientransporte; Im Falle von Sprach- und Videochats führt eine Jingle-Aushandlung normalerweise zur Verwendung des Real-Time Transport Protocol (RTP) als Medientransport und ist daher mit vorhandenen Multimedia-Technologien wie dem Session Initiation Protocol (SIP) kompatibel. Darüber hinaus wurde die Semantik der Jingle-Signalisierung so konzipiert, dass sie sowohl mit SIP als auch mit dem Session Description Protocol (SDP) übereinstimmt, wodurch es einfach ist, Signalisierungs-Gateways zwischen XMPP-Netzwerken und SIP-Netzwerken bereitzustellen.

Spezifikationen

Jingle ist in einer Reihe von Spezifikationen definiert:

  • XEP-0166: Jingle
  • XEP-0167: Jingle RTP Sitzungen
  • XEP-0176: Jingle ICE-UDP Transport Methode
  • XEP-0177: Jingle Raw UDP Transport Methode
  • XEP-0181: Jingle DTMF
  • XEP-0234: Jingle-Dateiübertragung

Implementierungen

Hinweis: Viele der folgenden Implementierungen unterstützen das ältere Google Talk-Protokoll und werden aktualisiert, um Jingle zu unterstützen, wie es in den Spezifikationen definiert ist; kontaktieren Sie die Projektentwickler für Details.

Kunden

  • Coccinella
  • Gajim
  • Jitsi (früher SIP Communicator genannt)
  • Movim
  • Pandion
  • Pidgin (früher Gaim genannt)
  • Psi
  • Telepathie
  • Yate

Bibliotheken

  • libjingle (C / C ++)
  • Klatschen (Java)
  • Telepathie Gabble (C)
  • yjingle (C++)

Anrufmanager / VoIP-Server

  • Asterisk
  • FreeSWITCH
  • Yate

Multi-User-Chat (MUC)

MUC ist eine XMPP-Erweiterung für den Mehrparteieninformationsaustausch ähnlich dem Internet Relay Chat (IRC), bei dem mehrere XMPP-Benutzer Nachrichten im Kontext eines Raums oder Kanals austauschen können. Zusätzlich zu den Standard-Chatroom-Funktionen wie Raumthemen und Einladungen definiert das Protokoll ein starkes Raumsteuerungsmodell, einschließlich der Möglichkeit, Benutzer zu treten und zu verbieten, Raummoderatoren und Administratoren zu benennen, Mitgliedschaft oder Passwörter zu verlangen, um dem Raum beizutreten usw. Da MUC-Räume auf XMPP basieren, können sie nicht nur zum Austausch von Klartext-Nachrichtentexten, sondern auch für eine Vielzahl von XML-Nutzlasten verwendet werden.

Spezifikationen

MUC ist in einer Primärspezifikation (XEP-0045) und mehreren Nebenspezifikationen definiert:

  • XEP-0045: Mehrbenutzer-Chat
  • XEP-0249: Direkte MUC-Einladungen
  • XEP-0272: Mehrparteien-Jingle

Implementierungen

Server – Die folgenden XMPP-Server enthalten integrierte Unterstützung für MUC:

  • ejabberd
  • Jabber XCP
  • M-Link
  • MongooseIM
  • Openfire
  • Prosodie
  • Tigase

Externe Komponenten – Die folgenden eigenständigen Komponenten können mit einer Vielzahl von XMPP-Servern verwendet werden:

  • mu-Konferenz
  • palaver

Kunden

  • Adium
  • Gajim
  • JWChat
  • mcabber
  • Movim
  • Pidgin
  • Psi

Bibliotheken

  • Beliebiges Ereignis:XMPP (Perl)
  • gloox (C ++)
  • jabber-net (.Net)
  • libpurple (C)
  • Klatschen (Java)
  • XMPP4R (Ruby)

PubSub

PubSub ist eine Protokollerweiterung für die generische Publish-Subscribe-Funktionalität, die in XEP-0060 spezifiziert ist. Das Protokoll ermöglicht es XMPP-Entitäten, Knoten (Themen) in einem Pubsub-Dienst zu erstellen und Informationen auf diesen Knoten zu veröffentlichen; Eine Ereignisbenachrichtigung (mit oder ohne Nutzlast) wird dann an alle Entitäten gesendet, die den Knoten abonniert haben. Pubsub hält sich daher an das klassische Observer-Designmuster und kann als Grundlage für eine Vielzahl von Anwendungen dienen, darunter Newsfeeds, Content-Syndication, Rich Presence, Geolocation, Workflow-Systeme, Netzwerkmanagementsysteme und jede andere Anwendung, die Ereignisbenachrichtigungen erfordert. Das in XEP-0163 spezifizierte Personal Eventing Protocol (PEP) stellt ein präsenzfähiges Profil von PubSub bereit, mit dem die JabberID jedes Benutzers als virtueller Pubsub-Dienst für umfassende Präsenz, Microblogging, soziale Netzwerke und Echtzeitinteraktionen fungieren kann.

Spezifikationen

PubSub ist in mehreren Spezifikationen definiert:

  • XEP-0060: Publish-Subscribe
  • XEP-0163: Personal Eventing Protocol
  • XEP-0248: PubSub Collection Nodes

Payloads

PubSub und PEP sind „Payload—agnostisch“ – Sie können sie als neutrale Transporte für eine Vielzahl von Datenformaten verwenden. Einige der beliebtesten Payloads sind unten aufgeführt, insbesondere für Rich Presence im Zusammenhang mit IM-Benutzern:

  • Aktivitäten
  • Atom / RSS-Benachrichtigungen
  • Avatare
  • Chatroom-Besuche
  • Spielaktivitäten
  • Geolokalisierung
  • Stimmungen
  • Musik Melodien
  • TV-/Videoaktivitäten
  • Website-Besuche

Implementierungen

Server – Die folgenden XMPP-Server bieten integrierte Unterstützung für PubSub oder PEP:

  • ejabberd
  • Jabber XCP
  • M-Link
  • Openfire
  • Tigase

Serverkomponenten

  • Idavoll

Kunden

  • Gajim
  • Movim
  • Psi

3.4 Bibliotheken

  • Strophe (C oder JavaScript)
  • XMPP4R (Ruby)

BOSH

BOSH ist „Bidirektional-Streams über synchrones HTTP“, eine Technologie für die bidirektionale Kommunikation über das Hypertext Transfer Protocol (HTTP). BOSH emuliert viele der Transportprimitive, die aus dem Transmission Control Protocol (TCP) bekannt sind. Für Anwendungen, die sowohl „Push“ – als auch „Pull“ -Kommunikation erfordern, ist BOSH deutlich bandbreiteneffizienter und reaktionsschneller als die meisten anderen bidirektionalen HTTP-basierten Transportprotokolle und die als AJAX bekannten Techniken. BOSH erreicht diese Effizienz und niedrige Latenz durch die Vermeidung von HTTP-Polling, aber es tut dies ohne Rückgriff auf Chunked HTTP-Antworten, wie es in der Technik bekannt als Comet getan wird. Bisher wurde BOSH hauptsächlich als Transportmittel für den Datenverkehr zwischen Jabber / XMPP-Clients und Servern verwendet (z. B. um Verbindungen von Webclients und mobilen Clients in intermittierenden Netzwerken zu erleichtern). BOSH ist jedoch nicht nur an XMPP gebunden und kann auch für andere Arten von Datenverkehr verwendet werden.

Spezifikationen BOSH ist in zwei Spezifikationen definiert:

  • XEP-0124: Bidirektional-Streams über synchrones HTTP
  • XEP-0206: XMPP über BOSH

Implementierungen

Server Die folgenden XMPP-Server enthalten integrierte Unterstützung für BOSH:

  • ejabberd
  • Jabber XCP
  • M-Link
  • MongooseIM
  • Openfire
  • Prosodie
  • Tigase

Verbindungsmanager

Die folgenden eigenständigen XMPP-Verbindungsmanager können mit einer Vielzahl von XMPP-Servern verwendet werden:

  • JabberHTTPBind
  • Punjab
  • Knoten-xmpp-bosh
  • rhb

Kunden

  • Adium
  • Gajim
  • JWChat
  • Pidgin
  • Soashable
  • SparkWeb
  • Schnell
  • Tigase Messenger
  • Tigase Minichat

Bibliotheken

  • emite (gwt)
  • gloox (C++)
  • JSJaC (JavaScript)
  • Strophe (C oder JavaScript)
  • Swiften (C++)
  • XIFF (Flash)
  • XMPP4GWT (gwt)
  • xmpp4js (JavaScript)
  • XMPP4R (Rubin)

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.