Abstract: | This specification defines the term "Nonza", describing every top level stream element that is not a Stanza. |
Author: | Florian Schmaus |
Copyright: | © 1999 – 2017 XMPP Standards Foundation. SEE LEGAL NOTICES. |
Status: | Experimental |
Type: | Standards Track |
Version: | 0.1 |
Last Updated: | 2015-07-14 |
WARNING: This Standards-Track document is Experimental. Publication as an XMPP Extension Protocol does not imply approval of this proposal by the XMPP Standards Foundation. Implementation of the protocol described herein is encouraged in exploratory implementations, but production systems are advised to carefully consider whether it is appropriate to deploy implementations of this protocol before it advances to a status of Draft.
1. Introduction
2. Nonza Definition
3. Nonza Examples
3.1. Nonzas used before resource binding
3.2. Nonzas used after resource binding
4. Use Cases
5. Business Rules
6. Security Considerations
7. IANA Considerations
8. XMPP Registrar Considerations
Appendices
A: Document Information
B: Author Information
C: Legal Notices
D: Relation to XMPP
E: Discussion Venue
F: Requirements Conformance
G: Notes
H: Revision History
The usage of non-Stanza top-level XMPP stream elements is steadily increasing in the last years. Starting with Stream Management (XEP-0198) [1], one of the earliest XEPs which specified and used additional non-Stanza elements, the XMPP community sees an increasing usage of those elements in submitted specifications. Unlike Stanzas which are specified in RFC 6120 [2] § 4.1 "Stream Fundamentals" and § 8. "XML Stanzas", there is no term and definition provided for them.
This leads to the unfortunate situation where some submitted XEPs erroneous refer to non-Stanza top level stream elements as 'Stanzas'. Thus causing confusion, and opening the door to possible interoperability breakage and security vulnerabilities.
This XEP tries to fix this by providing a term, a definition and declaring some rules for those XMPP stream elements.
Nonza: A Nonza is every XML element found at the XMPP stream's top level which is not a Stanza. The top level of an XMPP stream is the child XML level beneath the last <stream> opening tag as defined in RFC 6120 § 4.2. "Opening a Stream", i.e. at depth=1 of the stream.
Informal definition: A XMPP stream element is a Nonza, if its element name is not 'message', 'iq' or 'presence'.
The term 'Nonza' originates from the beginning and ending letters of its definition and thus makes it easy to recall that definition: Not a Stanza.
<compress xmlns='http://jabber.org/protocol/compress'> <method>zlib</method> </compress>
<enable xmlns='urn:xmpp:sm:3'/>
<active xmlns='urn:xmpp:csi:0'/>
Nonzas are commonly used when it is not necessary to route the exchanged information behind the endpoints of an XMPP stream. For example, one use case is to control the XMPP stream like it is done in XEP-0198: Stream Management.
Nonzas sent before resource binding, as defined in RFC 6120 § 7., usually follow a request-response pattern. But after the client successfully bound a resource, they are used in a more "asynchronous" fashion, where a 'request' Nonza does not, or at least not immediately, trigger a 'result' Nonza sent back.
Note that an exception from 2. are the the widely used <db/> Nonzas defined in Server Dialback (XEP-0220) [3].
As noted, Nonzas MUST NOT get routed, because this could introduce the ability for third parties to spoof them.
This document requires no interaction with the Internet Assigned Numbers Authority (IANA) [4].
This document requires no interaction with XMPP Registrar [5].
Series: XEP
Number: 0360
Publisher: XMPP Standards Foundation
Status:
Experimental
Type:
Standards Track
Version: 0.1
Last Updated: 2015-07-14
Approving Body: XMPP Council
Dependencies: XMPP Core
Supersedes: None
Superseded By: None
Short Name: NOT_YET_ASSIGNED
Source Control:
HTML
This document in other formats:
XML
PDF
Email:
flo@geekplace.eu
JabberID:
flo@geekplace.eu
The Extensible Messaging and Presence Protocol (XMPP) is defined in the XMPP Core (RFC 6120) and XMPP IM (RFC 6121) specifications contributed by the XMPP Standards Foundation to the Internet Standards Process, which is managed by the Internet Engineering Task Force in accordance with RFC 2026. Any protocol defined in this document has been developed outside the Internet Standards Process and is to be understood as an extension to XMPP rather than as an evolution, development, or modification of XMPP itself.
The primary venue for discussion of XMPP Extension Protocols is the <standards@xmpp.org> discussion list.
Discussion on other xmpp.org discussion lists might also be appropriate; see <http://xmpp.org/about/discuss.shtml> for a complete list.
Errata can be sent to <editor@xmpp.org>.
The following requirements keywords as used in this document are to be interpreted as described in RFC 2119: "MUST", "SHALL", "REQUIRED"; "MUST NOT", "SHALL NOT"; "SHOULD", "RECOMMENDED"; "SHOULD NOT", "NOT RECOMMENDED"; "MAY", "OPTIONAL".
1. XEP-0198: Stream Management <https://xmpp.org/extensions/xep-0198.html>.
2. RFC 6120: Extensible Messaging and Presence Protocol (XMPP): Core <http://tools.ietf.org/html/rfc6120>.
3. XEP-0220: Server Dialback <https://xmpp.org/extensions/xep-0220.html>.
4. The Internet Assigned Numbers Authority (IANA) is the central coordinator for the assignment of unique parameter values for Internet protocols, such as port numbers and URI schemes. For further information, see <http://www.iana.org/>.
5. The XMPP Registrar maintains a list of reserved protocol namespaces as well as registries of parameters used in the context of XMPP extension protocols approved by the XMPP Standards Foundation. For further information, see <https://xmpp.org/registrar/>.
Note: Older versions of this specification might be available at http://xmpp.org/extensions/attic/
Initial published version approved by the XMPP Council.
(XEP Editor (mam))First draft.
(fs)END