Extensible Messaging and Presence Protocol
Extensible Messaging and Presence Protocol (XMPP), voorheen Jabber geheten,[1] is een Open standaard, een op XML gebaseerd netwerkprotocol voor instant messaging en presence notification.
De XML-streamingtechnologie zag in 1998 het levenslicht onder de naam Jabber. De specificaties zijn publiekelijk beschikbaar, waardoor vele implementaties open-source zijn. De basis van Jabber werd in 2004 door het Internet Engineering Task Force (IETF) goedgekeurd als Extensible Messaging and Presence Protocol (XMPP).
Ontwerpprincipes
[bewerken | brontekst bewerken]XMPP is ontworpen als een gedecentraliseerd communicatiesysteem, vergelijkbaar met e-mail. Dit betekent dat geen centrale server nodig is en dat verschillende servers met elkaar kunnen communiceren via federatie.
Een belangrijk uitgangspunt van het protocol is eenvoud van de kernspecificatie[2][3], gecombineerd met uitbreidbaarheid via gestandaardiseerde extensies. Hierdoor blijft de basis stabiel, terwijl nieuwe functies onafhankelijk kunnen worden ontwikkeld en geïmplementeerd.[4]
Het protocol is gebaseerd op open standaarden en bevordert interoperabiliteit tussen verschillende implementaties.
Architectuur
[bewerken | brontekst bewerken]Client-servermodel
[bewerken | brontekst bewerken]In XMPP communiceren clients met een server via een permanente XML-stream. De server verzorgt authenticatie, routing van berichten en verbinding met andere servers.
Elke gebruiker heeft een unieke XMPP-adresvorm (een Jabber ID of JID), zoals: gebruiker@domein.tld.
Server-servermodel (federatie)
[bewerken | brontekst bewerken]Servers kunnen onderling verbinding maken om berichten uit te wisselen tussen gebruikers op verschillende domeinen. Dit federatieve model maakt communicatie mogelijk tussen onafhankelijke XMPP-domeinen.
Deze architectuur is vergelijkbaar met het e-mailprotocol SMTP.
Protocolwerking
[bewerken | brontekst bewerken]XMPP is gebaseerd op het versturen van XML-streams tussen entiteiten. Binnen deze streams worden zogeheten stanzas gebruikt, die de basis vormen van communicatie:
<message/>voor berichten<presence/>voor statusinformatie<iq/>(info/query) voor gestructureerde verzoeken en antwoorden
De communicatie verloopt doorgaans via TCP, met optionele beveiliging via TLS. Authenticatie gebeurt via SASL-mechanismen.
Specificaties en extensies (standaarden en XEP's)
[bewerken | brontekst bewerken]XMPP is opgebouwd uit een relatief kleine kernspecificatie die door de Internet Engineering Task Force (IETF) is gestandaardiseerd, aangevuld met een groot ecosysteem van uitbreidingen.
De kernspecificaties definiëren de basis van het protocol, zoals het transport van XML-streams, adressering en basisberichtenuitwisseling. Deze zijn vastgelegd in RFC 6120 (Core)[2], RFC 6121 (Instant Messaging and Presence)[3] en gerelateerde specificaties[5].
Naast deze kernspecificaties worden extra functies toegevoegd via XMPP Extension Protocols (XEP's).[6] XEP's zijn gestandaardiseerde uitbreidingsdocumenten die worden ontwikkeld en onderhouden door de XMPP Standards Foundation (XSF). Ze maken het mogelijk om nieuwe functionaliteit te introduceren zonder de kern van het protocol aan te passen.
De XEP-structuur omvat zowel informatieve als strikt gestandaardiseerde specificaties en bestrijkt een breed scala aan toepassingen. Enkele voorbeelden zijn groepscommunicatie via Multi-User Chat (XEP-0045)[7], bestandsoverdracht via HTTP Upload (XEP-0363)[8] en end-to-end encryptie via OMEMO (XEP-0384)[9].
Door deze scheiding tussen stabiele kernspecificaties en uitbreidbare XEP's kan XMPP enerzijds interoperabiliteit en stabiliteit garanderen, terwijl anderzijds innovatie en toepassing in uiteenlopende domeinen mogelijk blijft.
Beveiliging
[bewerken | brontekst bewerken]XMPP ondersteunt het gebruik van TLS voor het beveiligen van zowel client-server- als server-serververbindingen.
Voor end-to-end-encryptie zijn aanvullende protocollen beschikbaar via XEP's. Veelgebruikte methoden zijn OMEMO[9], een end-to-end encryptieprotocol gebaseerd op het Signal protocol, en OpenPGP-gebaseerde encryptie[10].
De beschikbaarheid van beveiligingsfuncties is afhankelijk van de gebruikte client en serverimplementatie.
Toepassingen
[bewerken | brontekst bewerken]XMPP wordt gebruikt in verschillende domeinen, waaronder instant messaging, bedrijfscommunicatie en gedecentraliseerde communicatiesystemen. Door de uitbreidbaarheid van het protocol wordt het ook toegepast in IoT-omgevingen en realtime datacommunicatie.
Bekende open-source implementaties zijn onder andere ejabberd en Openfire als servers, en clients zoals Gajim en Conversations. Historisch werd XMPP gebruikt in Google Talk en in de federatieve architectuur van Google Wave.[11]
Chronologie
[bewerken | brontekst bewerken]Een beknopt overzicht van de belangrijkste gebeurtenissen:
- 1998: Jeremie Miller onthulde het bestaan van Jabber aan het grote publiek.
- 2000: In mei werd de eerste versie van de serversoftware vrijgegeven: jabberd 1.0.
- 2001: In augustus zag de Jabber Software Foundation (JSF) het levenslicht. Haar taak was het groeiende aantal gebruikers van Jabber beter te kunnen coördineren. De voornaamste taak van de JSF is het beheren van het protocol. Derden kunnen Jabber Enhancement Proposals (JEPs) indienen die na overleg al dan niet worden goedgekeurd.
- 2002-2004: De JSF ijverde bij het IETF voor de opname van het protocol (dat de naam XMPP krijgt) als standaard.
- 2004: Na 3 jaar werk werden de 4 belangrijkste specificaties goedgekeurd door het IETF wat XMPP brede erkenning oplevert.
- 2005: Google Talk werd gelanceerd en is gebaseerd op XMPP.
- 2006: De JEPs veranderden van naam en heten sindsdien XMPP Extension Protocols (XEPs). Ze kregen ook een afzonderlijke website.
- 2007: De JSF veranderde haar naam in XMPP Standards Foundation (XSF)[12] en legde zo nog meer de nadruk op het ontwikkelen van nieuwe protocoluitbreidingen en niet op het ontwikkelen van software.
- 2011: Publicatie van RFC 6120 en RFC 6121, ter vervanging van verschillende in 2004 gepubliceerde specificaties.
- 2014: Een 70-tal diensten en programma's stappen over op beveiligde TLS-verbindingen.[13]
Vergelijkbare protocollen
[bewerken | brontekst bewerken]Zie ook
[bewerken | brontekst bewerken]Externe links
[bewerken | brontekst bewerken]- XMPP Standards Foundation
- IETF Publishes XMPP RFCs (Nederlandstalige versie)
- De geschiedenis van XMPP (Origineel)
- ↑ Jabber Inc. - About Us
- 1 2 RFC 6120
- 1 2 RFC 6121
- ↑ An Overview of XMPP
- ↑ XMPP RFCs.
- ↑ XMPP Extension Protocols (XEPs).
- ↑ XEP-0045: Multi-User Chat.
- ↑ XEP-0363 :HTTP File Upload.
- 1 2 XEP-0384: OMEMO Encryption.
- ↑ XEP-0373: OpenPGP for XMPP.
- ↑ Google Wave Federation Protocol Over XMPP - Draft Protocol Spec
- ↑ Jabber Software Foundation Renamed to XMPP Standards Foundation 16 januari 2007 - jabber.org is still maintained
- ↑ (en) 70-plus messaging services and XMPP software clients begin requiring TLS encryption. Gearchiveerd op 23 september 2021.