XMPP
Click on the red underlined text to get to the source
...
The Extensible Messaging and Presence Protocol (XMPP) is an open
Extensible Markup Language [XML ...
... syntax
and semantics were developed originally within the Jabber open-source
community, mainly in 1999. In 2002, the XMPP WG was chartered with
developing an adaptation of the Jabber ...
... instant messaging (IM) and presence technology.
As a result of work by the XMPP WG, the current memo defines the core
features of XMPP ...
... XMPP WG, the current memo defines the core
features of XMPP 1.0; the extensions required to provide the instant
messaging and presence functionality defined in RFC 2779 [IMP-REQS ...
... are specified in the Extensible Messaging and Presence Protocol
(XMPP): Instant Messaging and Presence [XMPP-IM].
...
...
Although XMPP is not wedded to any specific network architecture, to
date it usually has been implemented via a client-server architecture ...
... client-server architecture
wherein a client utilizing XMPP accesses a server over a [TCP]
connection ...
... high-level overview of this
architecture (where "-" represents communications that use XMPP and
"=" represents communications that use any other protocol).
...
...
o G1 = A gateway that translates between XMPP and the protocol(s)
used on a foreign (non-XMPP) messaging network ...
... gateway that translates between XMPP and the protocol(s)
used on a foreign (non-XMPP) messaging network
...
...
A server acts as an intelligent abstraction layer for XMPP
communications. Its primary responsibilities are:
...
... XML streams
Most XMPP-compliant servers also assume responsibility for the
storage of data that is used by clients (e.g., contact lists for
...
... storage of data that is used by clients (e.g., contact lists for
users of XMPP-based instant messaging and presence applications); in
this case, the XML data ...
... TCP] connection and
use XMPP to take full advantage of the functionality provided by a
server and any associated services. Multiple resources (e.g.,
...
... client, with each resource differentiated
by the resource identifier of an XMPP address (e.g., <node@domain ...
... server-side service whose primary
function is to translate XMPP into the protocol used by a foreign
(non-XMPP) messaging system ...
... primary
function is to translate XMPP into the protocol used by a foreign
(non-XMPP) messaging system, as well as to translate the return data
back into XMPP ...
... XMPP) messaging system, as well as to translate the return data
back into XMPP. Examples are gateways to email (see [SMTP ...
... endpoint
(i.e., an ID on the network) and that can communicate using XMPP.
All such entities are uniquely addressable in a form that is
consistent with RFC 2396(-> 3986std66) ...
... URI]. For historical reasons, the address
of an XMPP entity is called a Jabber Identifier or JID ...
... domain; within instant messaging and presence applications
of XMPP, this address is called a "bare JID" and is of the form
...
... XML stanzas sent over the two
XML streams. However, this perspective is a convenience only; XMPP
does not deal in documents but in XML streams and XML stanzas ...
... semantics of the three defined XML stanza types (<message/>,
<presence/>, and <iq/>). The numbering scheme for XMPP versions is
"<major>.<minor>". The major and minor numbers MUST be treated as
...
... "<major>.<minor>". The major and minor numbers MUST be treated as
separate integers and each number MAY be incremented higher than a
single digit. Thus, "XMPP 2.4" would be a lower version than "XMPP
...
... single digit. Thus, "XMPP 2.4" would be a lower version than "XMPP
2.13", which in turn would be lower than "XMPP 12.3". Leading zeros
...
... version than "XMPP
2.13", which in turn would be lower than "XMPP 12.3". Leading zeros
(e.g., "XMPP 6.01") MUST be ignored by recipients and MUST NOT be
...
... 2.13", which in turn would be lower than "XMPP 12.3". Leading zeros
(e.g., "XMPP 6.01") MUST be ignored by recipients and MUST NOT be
sent.
...
... header specifies a
version of XMPP that is not supported by the server; the server
MAY specify the version ...
... certificate MUST be checked as
"example.com". If a JID for any kind of XMPP entity (e.g.,
client or server ...
... method for authenticating a stream by means of an
XMPP-specific profile of the Simple Authentication and Security Layer
...
... adding authentication support to connection-based protocols, and XMPP
uses a generic XML namespace profile ...
... in the case of server-to-server communications or its registered
account name (user or node name as contained in an XMPP node
identifier) in the case of client-to-server communications.
...
... additional features are available); any such additional features
not defined herein MUST be defined by the relevant extension to
XMPP.
...
...
The Jabber protocols from which XMPP was adapted include a "server
dialback" method for protecting against domain ...
... o <jid-malformed/> -- the sending entity has provided or
communicated an XMPP address (e.g., a value of the 'to' attribute)
or aspect thereof (e.g., a resource identifier ...
...
XMPP is a simplified and specialized protocol for streaming XML
elements in order to exchange structured information in close to real
time. Because XMPP ...
... XMPP is a simplified and specialized protocol for streaming XML
elements in order to exchange structured information in close to real
time. Because XMPP does not require the parsing of arbitrary and
complete XML documents, there is no requirement ...
... complete XML documents, there is no requirement that XMPP needs to
support the full feature set of [XML ...
...
With regard to XML generation, an XMPP implementation MUST NOT inject
into an XML stream any of the following:
...
...
With regard to XML processing, if an XMPP implementation receives
such restricted XML data, it MUST ignore the data.
...
... namespaces is to separate different vocabularies of XML elements that
are structurally mixed together. Ensuring that XMPP-compliant XML is
namespace ...
... XML to be structurally mixed
with any data element within XMPP. Rules for XML namespace names and
prefixes ...
...
For the purposes of XMPP communications (client-to-server and
server-to-server), the term "high security ...
...
When an XMPP peer communicates with another peer securely, it MUST
validate the peer's certificate ...
... well-known ports allows administrators to easily enable or
disable XMPP activity through existing and commonly-deployed
firewalls.
...
... entity's
address in XMPP. One common usage is as the name for an instant
messaging user's connected resource (active session ...
... sub-namespace for TLS-related data in the Extensible Messaging
and Presence Protocol (XMPP) is defined as follows. (This namespace
name adheres to the format defined in The IETF XML ...
... TLS-related data in
the Extensible Messaging and Presence Protocol (XMPP) as defined
by RFC 3920prop.
...
... sub-namespace for SASL-related data in the Extensible Messaging
and Presence Protocol (XMPP) is defined as follows. (This namespace
name adheres to the format defined in [XML-REG].)
...
... SASL-related data in
the Extensible Messaging and Presence Protocol (XMPP) as defined
by RFC 3920prop.
...
... sub-namespace for stream-related error data in the Extensible
Messaging and Presence Protocol (XMPP) is defined as follows. (This
namespace name adheres to the format defined in [XML-REG ...
... stream-related error
data in the Extensible Messaging and Presence Protocol (XMPP) as
defined by RFC 3920prop.
...
... sub-namespace for resource binding in the Extensible Messaging
and Presence Protocol (XMPP) is defined as follows. (This namespace
name adheres to the format defined in [XML-REG].)
...
... resource binding in
the Extensible Messaging and Presence Protocol (XMPP) as defined
by RFC 3920prop.
...
... sub-namespace for stanza-related error data in the Extensible
Messaging and Presence Protocol (XMPP) is defined as follows. (This
namespace name adheres to the format defined in [XML-REG ...
... stanza-related error
data in the Extensible Messaging and Presence Protocol (XMPP) as
defined by RFC 3920prop.
...
... Saint-Andre, P., Ed., "Extensible Messaging and Presence Protocol (XMPP): Instant Messaging and Presence", RFC 3921prop, October 2004. ...
... internationalized node identifiers in the Extensible Messaging and
Presence Protocol (XMPP) and have the highest chance of getting the
content of the strings correct. (An XMPP node identifier ...
... Extensible Messaging and
Presence Protocol (XMPP) and have the highest chance of getting the
content of the strings correct. (An XMPP node identifier is the
optional portion of an XMPP ...
... XMPP node identifier is the
optional portion of an XMPP address that precedes a domain identifier
...
... username.) These processing rules are
intended only for XMPP node identifiers and are not intended for
arbitrary text or any other aspect of an XMPP ...
... XMPP node identifiers and are not intended for
arbitrary text or any other aspect of an XMPP address.
...
... o The intended applicability of the profile: internationalized node
identifiers within XMPP
o The character repertoire that is the input and output to
...
... internationalized resource identifiers in the Extensible Messaging
and Presence Protocol (XMPP) and have the highest chance of getting
the content of the strings correct. (An XMPP resource identifier ...
... Extensible Messaging
and Presence Protocol (XMPP) and have the highest chance of getting
the content of the strings correct. (An XMPP resource identifier is
the optional portion of an XMPP ...
... XMPP resource identifier is
the optional portion of an XMPP address that follows a domain
identifier and the '/' separator; it is often but not exclusively
...
... associated with an instant messaging session name.) These processing
rules are intended only for XMPP resource identifiers and are not
intended for arbitrary text or any other aspect of an XMPP ...
... XMPP resource identifiers and are not
intended for arbitrary text or any other aspect of an XMPP address.
...
... o The intended applicability of the profile: internationalized
resource identifiers within XMPP
o The character repertoire ...
... non-normative.
XMPP has been adapted from the protocols originally developed in the
Jabber open-source community ...
... Jabber open-source community, which can be thought of as "XMPP 0.9".
Because there exists a large installed base of Jabber implementations
...
... deployments, it may be helpful to specify the key differences
between the relevant Jabber protocols and XMPP in order to expedite
and encourage upgrades of those implementations and deployments to
...
... and encourage upgrades of those implementations and deployments to
XMPP. This section summarizes the core differences, while the
corresponding section of [XMPP-IM] summarizes the differences that
...
... ports other than 5222 and 5269 (the convention is to
use ports 5223 and 5270). XMPP uses TLS over the IANA-registered
...
... Jabber Software Foundation
[JSF]). XMPP uses SASL for authentication, as defined under Use of
...
... Server Dialback (Section 8)
protocol to prevent server spoofing. XMPP supersedes Server Dialback
with a true server-to-server authentication ...
... jabber:iq:auth' namespace (which was also used for client
authentication with a server). XMPP defines a dedicated namespace
for resource binding ...
... Jabber Software Foundation [JSF]).
XMPP specifies the use of [NAMEPREP] for domain identifiers and
...
... XML
character data text in a <stream:error/> element. In XMPP,
stream-related errors are handled via an extensible mechanism defined
...
... HTTP-style error codes. In XMPP, stanza-related errors are handled
via an extensible mechanism defined under Stanza ...
... Stanza Errors (Section 9.3)
herein. (Documentation of a mapping between Jabber and XMPP error
handling mechanisms is contained in [JEP-0086], published by the
...
... language of human-readable text provided in XML
character data. XMPP specifies the use of the 'xml:lang' attribute
in such contexts ...
... stream
headers. XMPP specifies inclusion of that attribute as a way to
signal support for the stream features (authentication ...
... base protocol also
included Ryan Eatmon, Peter Millard, Thomas Muldowney, and Dave
Smith. Work by the XMPP Working Group has concentrated especially on
security ...
... Keith Minkler, Julian Missig, Pete Resnick, Marshall Rose, Alexey
Shchepin, Jean-Louis Seguineau, Iain Shigeoka, Greg Troxel, and David
Waite. Thanks also to members of the XMPP Working Group and the IETF
community for comments and feedback provided throughout the life of
...
