This commit is contained in:
Jay Graber 2020-06-09 21:53:13 -07:00
parent a54d68d712
commit 80dbb091d7
1 changed files with 78 additions and 0 deletions

View File

@ -0,0 +1,78 @@
#XMPP
XMPP, the Extensible Messaging and Presence Protocol, is a protocol designed for instant messaging and generalized routing of XML data. It was originally developed in the Jabber open source community in 1999 to provide an alternative to closed instant messaging services.
XMPP uses a federated client-server architecture that is similar to email, but introduced several modifications to facilitate real-time communication.
XMPP is a large protocol, with many Extension Protocols that have been added over time. Due to the maturity of the protocol, it is well documented, with clearly written specs available for every component.
### Identity
Every user has a unique XMPP address, called a JID (Jabber ID). A JID is a username followed by the homeserver, for example:
```
alice@example.com
```
Users can choose a [global, memorable nickname,](https://xmpp.org/extensions/xep-0172.html) but these are not globally unique.
### Networking/Message passing
XMPP is implemented in a distributed client-server architecture.
The basic protocol data unit in XMPP is an XML "stanza", a fragment of XML that is sent over a stream.
### Data Storage/Message Persistence
An XMPP client may store data on the server. Whether it is accessible to others or not depends on the client implementation.
Default settings for a Jabber server [store information](https://jabber.at/p/privacy/) including: saved contacts ("buddies"), offline messages, error logs, and perhaps chat messages and file uploads for a limited number of days.
### Moderation/Reputation
Due to the federated nature of XMPP, moderation actions are only respected if they are supported by the client.
Some examples of moderation in XMPP:
[An experimental spec for groupchat moderation](https://xmpp.org/extensions/xep-0425.html)
### Social/Discovery
Built-in information about network availability (“presence”)
Presence subscriptions for two-way authorization
Presence-enabled contact lists (“rosters”)
XMPP includes the ability for users to advertise their network availability or "presence." This is not strictly necessary for the exchange of data, but facilitates real-time interaction by indicating the the recipient is online and available.
### Privacy/Access Control
Channel encryption using Transport Layer Security (TLS)
Strong authentication using the Simple Authentication and Security Layer (SASL)
### Monetization
### User experience (if applies)
### Interoperability
XMPP was designed with the goal of connecting users through multiple instant message systems. This was done through transports or gateways to other IM protocols, but also to protocols such as SMS and email.
In February 2010, the social-networking site Facebook opened up its chat feature to third-party applications via XMPP.[13] Some functionality was unavailable through XMPP, and support was dropped in April 2014.[14]
Similarly, in December 2011, Microsoft released an XMPP interface to its Microsoft Messenger service.[15] Skype, its de facto successor, also provides limited XMPP support.[16]
### Scalability
[A single ejabberd node with 2+ million concurrent users](https://www.process-one.net/blog/ejabberd-massive-scalability-1node-2-million-concurrent-users/)
### Metrics
### Implementations
A list of [XMPP clients](https://xmpp.org/software/clients.html)
Gtalk, Whatsapp
### Links
[XMPP About](https://xmpp.org/about/technology-overview.html)
[XMPP Wikipedia](https://en.wikipedia.org/wiki/XMPP)