xmpp 之Jabber RFC3920 [草稿]

::-- run mei [DateTime(2005-07-05T10:11:22Z)]

TableOfContents

翻译者

Extensible Messaging and Presence Protocol (XMPP): Core

Status of this Memo

Abstract

Table of Contents

  1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2
  2. Generalized Architecture . . . . . . . . . . . . . . . . . . 3
  3. Addressing Scheme . . . . . . . . . . . . . . . . . . . . . 5
  4. XML Streams . . . . . . . . . . . . . . . . . . . . . . . . 7
  5. Use of TLS . . . . . . . . . . . . . . . . . . . . . . . . . 19
  6. Use of SASL . . . . . . . . . . . . . . . . . . . . . . . . 27
  7. Resource Binding . . . . . . . . . . . . . . . . . . . . . . 37
  8. Server Dialback . . . . . . . . . . . . . . . . . . . . . . 41
  9. XML Stanzas . . . . . . . . . . . . . . . . . . . . . . . . 48
  10. Server Rules for Handling XML Stanzas . . . . . . . . . . . 58
  11. XML Usage within XMPP . . . . . . . . . . . . . . . . . . . 60
  12. Core Compliance Requirements . . . . . . . . . . . . . . . . 62
  13. Internationalization Considerations . . . . . . . . . . . . 64
  14. Security Considerations . . . . . . . . . . . . . . . . . . 64
  15. IANA Considerations . . . . . . . . . . . . . . . . . . . . 69
  16. References . . . . . . . . . . . . . . . . . . . . . . . . . 71
  17. Nodeprep . . . . . . . . . . . . . . . . . . . . . . . . . . 75 B. Resourceprep . . . . . . . . . . . . . . . . . . . . . . . . 76 C. XML Schemas . . . . . . . . . . . . . . . . . . . . . . . . 78 D. Differences Between Core Jabber Protocols and XMPP . . . . . 87 Contributors. . . . . . . . . . . . . . . . . . . . . . . . . . . 89 Acknowledgements. . . . . . . . . . . . . . . . . . . . . . . . . 89 Author's Address. . . . . . . . . . . . . . . . . . . . . . . . . 89 Full Copyright Statement. . . . . . . . . . . . . . . . . . . . . 90

1. Introduction

1.1. Overview

1.2. Terminology

2. Generalized Architecture

2.1. Overview

2.2. Server

2.3. Client

2.4. Gateway

2.5. Network

因为每一个服务器都可以通过一个网络地址来标识,同时因为 服务器之间的通信 是 客户端与服务器之间的通信协议的一个直接的扩展,在实践中,系统由交互通 信的服务器网络组成。因此,例如<[email protected]>能够与<[email protected]> 交换消息、presence和其它信息。这种模式在使用网络地址标准的消息通信协议 (如SMTP)中是常见的,任何两个通信是可选的。如开启,那么通信在基于xml流上 发生,它一定要建立 TCP 连接。推荐的连接端口为 5269, 它已向IANA注册。

Saint-Andre, Ed. Standards Track [Page 4]

RFC 3920 XMPP Core October 2004

3. Addressing Scheme["run_mei"]

3.1. Overview

Saint-Andre, Ed. Standards Track [Page 5]

RFC 3920 XMPP Core October 2004

3.2. Domain Identifier

3.3. Node Identifier

3.4. Resource Identifier

Saint-Andre, Ed. Standards Track [Page 6]

RFC 3920 XMPP Core October 2004

3.5. Determination of Addresses

4. XML Streams

4.1. Overview["run_mei"]

Saint-Andre, Ed. Standards Track [Page 7]

RFC 3920 XMPP Core October 2004

Saint-Andre, Ed. Standards Track [Page 8]

RFC 3920 XMPP Core October 2004

   |--------------------|
   | <stream>           |
   |--------------------|
   | <presence>         |
   |   <show/>          |
   | </presence>        |
   |--------------------|
   | <message to='foo'> |
   |   <body/>          |
   | </message>         |
   |--------------------|
   | <iq to='bar'>      |
   |   <query/>         |
   | </iq>              |
   |--------------------|
   | ...                |
   |--------------------|
   | </stream>          |
   |--------------------|

Saint-Andre, Ed. Standards Track [Page 9]

RFC 3920 XMPP Core October 2004

4.2. Binding to TCP["run_mei"]

4.3. Stream Security

4.4. Stream Attributes

Saint-Andre, Ed. Standards Track [Page 10]

RFC 3920 XMPP Core October 2004

Saint-Andre, Ed. Standards Track [Page 11]

RFC 3920 XMPP Core October 2004

              | initiating to receiving  | receiving to initiating
-------------------------------------------------------------------------------
   | to       | hostname of receiver     | silently ignored
   | from     | silently ignored         | hostname of receiver
   | id       | silently ignored         | session key
   | xml:lang | default language         | default language
   | version  | signals XMPP 1.0 support | signals XMPP 1.0 support

4.4.1. Version Support

Saint-Andre, Ed. Standards Track [Page 12]

RFC 3920 XMPP Core October 2004

  1. The receiving entity MUST set the value of the 'version'
    • attribute on the response stream header to either the value supplied by the initiating entity or the highest version number supported by the receiving entity, whichever is lower. The receiving entity MUST perform a numeric comparison on the major and minor version numbers, not a string match on

      "<major>.<minor>".

  2. If the version number included in the response stream header is
    • at least one major version lower than the version number included in the initial stream header and newer version entities cannot interoperate with older version entities as described above, the

      initiating entity SHOULD generate an <unsupported-version/> stream error and terminate the XML stream and underlying TCP connection.

  3. If either entity receives a stream header with no 'version'
    • attribute, the entity MUST consider the version supported by the other entity to be "0.0" and SHOULD NOT include a 'version' attribute in the stream header it sends in reply.

4.5. Namespace Declarations

===4.6. Stream Features===

Saint-Andre, Ed. Standards Track [Page 13]

RFC 3920 XMPP Core October 2004

4.7. Stream Errors

4.7.1. Rules

4.7.2. Syntax

Saint-Andre, Ed. Standards Track [Page 14]

RFC 3920 XMPP Core October 2004

4.7.3. Defined Conditions

Saint-Andre, Ed. Standards Track [Page 15]

RFC 3920 XMPP Core October 2004

Saint-Andre, Ed. Standards Track [Page 16]

RFC 3920 XMPP Core October 2004

4.7.4. Application-Specific Conditions

Saint-Andre, Ed. Standards Track [Page 17]

RFC 3920 XMPP Core October 2004

4.8. Simplified Stream Examples

Saint-Andre, Ed. Standards Track [Page 18]

RFC 3920 XMPP Core October 2004

5. Use of TLS

5.1. Overview

Saint-Andre, Ed. Standards Track [Page 19]

RFC 3920 XMPP Core October 2004

Saint-Andre, Ed. Standards Track [Page 20]

RFC 3920 XMPP Core October 2004

  1. If the TLS negotiation is successful, the receiving entity MUST
    • discard any knowledge obtained in an insecure manner from the initiating entity before TLS takes effect.
  2. If the TLS negotiation is successful, the initiating entity MUST
    • discard any knowledge obtained in an insecure manner from the receiving entity before TLS takes effect.
  3. If the TLS negotiation is successful, the receiving entity MUST
    • NOT offer the STARTTLS extension to the initiating entity along with the other stream features that are offered when the stream is restarted.
  4. If the TLS negotiation is successful, the initiating entity MUST
    • continue with SASL negotiation.
  5. If the TLS negotiation results in failure, the receiving entity
    • MUST terminate both the XML stream and the underlying TCP connection.
  6. See Mandatory-to-Implement Technologies (Section 14.7) regarding
    • mechanisms that MUST be supported.

5.1.1. ASN.1 Object Identifier for XMPP Address

Saint-Andre, Ed. Standards Track [Page 21]

RFC 3920 XMPP Core October 2004

5.2. Narrative

Saint-Andre, Ed. Standards Track [Page 22]

RFC 3920 XMPP Core October 2004

  1. Upon receiving the new stream header from the initiating entity,
    • the receiving entity MUST respond by sending a new XML stream header to the initiating entity along with the available features (but not including the STARTTLS feature).

5.3. Client-to-Server Example

Saint-Andre, Ed. Standards Track [Page 23]

RFC 3920 XMPP Core October 2004

Saint-Andre, Ed. Standards Track [Page 24]

RFC 3920 XMPP Core October 2004

5.4. Server-to-Server Example

Saint-Andre, Ed. Standards Track [Page 25]

RFC 3920 XMPP Core October 2004

Saint-Andre, Ed. Standards Track [Page 26]

RFC 3920 XMPP Core October 2004

6. Use of SASL

6.1. Overview

Saint-Andre, Ed. Standards Track [Page 27]

RFC 3920 XMPP Core October 2004

  1. If the initiating entity wishes to act on behalf of another
    • entity and the selected SASL mechanism supports transmission of an authorization identity, the initiating entity MUST provide an authorization identity during SASL negotiation. If the initiating entity does not wish to act on behalf of another entity, it MUST NOT provide an authorization identity. As specified in [SASL], the initiating entity MUST NOT provide an authorization identity unless the authorization identity is different from the default authorization identity derived from the authentication identity as described in [SASL]. If provided, the value of the authorization identity MUST be of the form

      <domain> (i.e., a domain identifier only) for servers and of the form <node@domain> (i.e., node identifier and domain identifier) for clients.

  2. Upon successful SASL negotiation that involves negotiation of a
    • security layer, the receiving entity MUST discard any knowledge obtained from the initiating entity which was not obtained from the SASL negotiation itself.
  3. Upon successful SASL negotiation that involves negotiation of a
    • security layer, the initiating entity MUST discard any knowledge obtained from the receiving entity which was not obtained from the SASL negotiation itself.
  4. See Mandatory-to-Implement Technologies (Section 14.7) regarding
    • mechanisms that MUST be supported.

6.2. Narrative

Saint-Andre, Ed. Standards Track [Page 28]

RFC 3920 XMPP Core October 2004

  1. The initiating entity selects a mechanism by sending an <auth/>

    • element qualified by the 'urn:ietf:params:xml:ns:xmpp-sasl' namespace to the receiving entity and including an appropriate value for the 'mechanism' attribute. This element MAY contain XML character data (in SASL terminology, the "initial response") if the mechanism supports or requires it; if the initiating entity needs to send a zero-length initial response, it MUST transmit the response as a single equals sign ("="), which indicates that the response is present but contains no data.
  2. If necessary, the receiving entity challenges the initiating
    • entity by sending a <challenge/> element qualified by the 'urn:ietf:params:xml:ns:xmpp-sasl' namespace to the initiating entity; this element MAY contain XML character data (which MUST be computed in accordance with the definition of the SASL mechanism chosen by the initiating entity).

  3. The initiating entity responds to the challenge by sending a
    • <response/> element qualified by the 'urn:ietf:params:xml:ns:xmpp-sasl' namespace to the receiving entity; this element MAY contain XML character data (which MUST be computed in accordance with the definition of the SASL mechanism chosen by the initiating entity).

  4. If necessary, the receiving entity sends more challenges and the
    • initiating entity sends more responses.
    This series of challenge/response pairs continues until one of three things happens:
  5. The initiating entity aborts the handshake by sending an <abort/>

    • element qualified by the 'urn:ietf:params:xml:ns:xmpp-sasl'

      namespace to the receiving entity. Upon receiving an <abort/> element, the receiving entity SHOULD allow a configurable but reasonable number of retries (at least 2), after which it MUST terminate the TCP connection; this enables the initiating entity (e.g., an end-user client) to tolerate incorrectly-provided credentials (e.g., a mistyped password) without being forced to reconnect.

Saint-Andre, Ed. Standards Track [Page 29]

RFC 3920 XMPP Core October 2004

  1. The receiving entity reports failure of the handshake by sending
    • a <failure/> element qualified by the 'urn:ietf:params:xml:ns:xmpp-sasl' namespace to the initiating entity (the particular cause of failure SHOULD be communicated in an appropriate child element of the <failure/> element as defined under SASL Errors (Section 6.4)). If the failure case occurs, the receiving entity SHOULD allow a configurable but reasonable number of retries (at least 2), after which it MUST terminate the TCP connection; this enables the initiating entity (e.g., an end-user client) to tolerate incorrectly-provided credentials (e.g., a mistyped password) without being forced to reconnect.

  2. The receiving entity reports success of the handshake by sending
    • a <success/> element qualified by the 'urn:ietf:params:xml:ns:xmpp-sasl' namespace to the initiating entity; this element MAY contain XML character data (in SASL terminology, "additional data with success") if required by the chosen SASL mechanism. Upon receiving the <success/> element, the initiating entity MUST initiate a new stream by sending an opening XML stream header to the receiving entity (it is not necessary to send a closing </stream> tag first, since the receiving entity and initiating entity MUST consider the original stream to be closed upon sending or receiving the <success/> element). Upon receiving the new stream header from the initiating entity, the receiving entity MUST respond by sending a new XML stream header to the initiating entity, along with any available features (but not including the STARTTLS and SASL features) or an empty <features/> element (to signify that no additional features are available); any such additional features not defined herein MUST be defined by the relevant extension to XMPP.

6.3. SASL Definition

Saint-Andre, Ed. Standards Track [Page 30]

RFC 3920 XMPP Core October 2004

6.4. SASL Errors

Saint-Andre, Ed. Standards Track [Page 31]

RFC 3920 XMPP Core October 2004

6.5. Client-to-Server Example

Saint-Andre, Ed. Standards Track [Page 32]

RFC 3920 XMPP Core October 2004

Saint-Andre, Ed. Standards Track [Page 33]

RFC 3920 XMPP Core October 2004

Saint-Andre, Ed. Standards Track [Page 34]

RFC 3920 XMPP Core October 2004

===6.6. Server-to-Server Example===

Saint-Andre, Ed. Standards Track [Page 35]

RFC 3920 XMPP Core October 2004

Saint-Andre, Ed. Standards Track [Page 36]

RFC 3920 XMPP Core October 2004

7. Resource Binding

Saint-Andre, Ed. Standards Track [Page 37]

RFC 3920 XMPP Core October 2004

Saint-Andre, Ed. Standards Track [Page 38]

RFC 3920 XMPP Core October 2004

Saint-Andre, Ed. Standards Track [Page 39]

RFC 3920 XMPP Core October 2004

Saint-Andre, Ed. Standards Track [Page 40]

RFC 3920 XMPP Core October 2004

8. Server Dialback

8.1. Overview

Saint-Andre, Ed. Standards Track [Page 41]

RFC 3920 XMPP Core October 2004

8.2. Order of Events

Saint-Andre, Ed. Standards Track [Page 42]

RFC 3920 XMPP Core October 2004

8.3. Protocol

Saint-Andre, Ed. Standards Track [Page 43]

RFC 3920 XMPP Core October 2004

  1. The Originating Server sends a stream header to the Receiving
    • Server:

    <stream:stream

    Note: The 'to' and 'from' attributes are OPTIONAL on the root stream element. The inclusion of the xmlns:db namespace declaration with the name shown indicates to the Receiving Server that the Originating Server supports dialback. If the namespace name is incorrect, then

    the Receiving Server MUST generate an <invalid-namespace/> stream error condition and terminate both the XML stream and the underlying TCP connection.

  2. The Receiving Server SHOULD send a stream header back to the
    • Originating Server, including a unique ID for this interaction:

    <stream:stream

    Note: The 'to' and 'from' attributes are OPTIONAL on the root stream element. If the namespace name is incorrect, then the Originating

    Server MUST generate an <invalid-namespace/> stream error condition and terminate both the XML stream and the underlying TCP connection. Note well that the Receiving Server SHOULD reply but MAY silently terminate the XML stream and underlying TCP connection depending on security policies in place; however, if the Receiving Server desires to proceed, it MUST send a stream header back to the Originating Server.

  3. The Originating Server sends a dialback key to the Receiving
    • Server:

    <db:result

    • to='Receiving Server'

      from='Originating Server'>

    • 98AF014EDC0...

    </db:result> Note: This key is not examined by the Receiving Server, since the Receiving Server does not keep information about the Originating Server between sessions. The key generated by the Originating Server MUST be based in part on the value of the ID provided by the

Saint-Andre, Ed. Standards Track [Page 44]

RFC 3920 XMPP Core October 2004

Saint-Andre, Ed. Standards Track [Page 45]

RFC 3920 XMPP Core October 2004

Saint-Andre, Ed. Standards Track [Page 46]

RFC 3920 XMPP Core October 2004

Saint-Andre, Ed. Standards Track [Page 47]

RFC 3920 XMPP Core October 2004

9. XML Stanzas

9.1. Common Attributes

9.1.1. to

Saint-Andre, Ed. Standards Track [Page 48]

RFC 3920 XMPP Core October 2004

9.1.2. from

Saint-Andre, Ed. Standards Track [Page 49]

RFC 3920 XMPP Core October 2004

9.1.3. id

9.1.4. type

9.1.5. xml:lang

Saint-Andre, Ed. Standards Track [Page 50]

RFC 3920 XMPP Core October 2004

9.2. Basic Semantics

9.2.1. Message Semantics

9.2.2. Presence Semantics

9.2.3. IQ Semantics

Saint-Andre, Ed. Standards Track [Page 51]

RFC 3920 XMPP Core October 2004

Saint-Andre, Ed. Standards Track [Page 52]

RFC 3920 XMPP Core October 2004

  1. An IQ stanza of type "get" or "set" MUST contain one and only one
    • child element that specifies the semantics of the particular request or response.
  2. An IQ stanza of type "result" MUST include zero or one child
    • elements.
  3. An IQ stanza of type "error" SHOULD include the child element
    • contained in the associated "get" or "set" and MUST include an

      <error/> child; for details, see Stanza Errors (Section 9.3).

9.3. Stanza Errors

9.3.1. Rules

Saint-Andre, Ed. Standards Track [Page 53]

RFC 3920 XMPP Core October 2004

9.3.2. Syntax

Saint-Andre, Ed. Standards Track [Page 54]

RFC 3920 XMPP Core October 2004

9.3.3. Defined Conditions

Saint-Andre, Ed. Standards Track [Page 55]

RFC 3920 XMPP Core October 2004

Saint-Andre, Ed. Standards Track [Page 56]

RFC 3920 XMPP Core October 2004

9.3.4. Application-Specific Conditions

Saint-Andre, Ed. Standards Track [Page 57]

RFC 3920 XMPP Core October 2004

10. Server Rules for Handling XML Stanzas

10.1. No 'to' Address

10.2. Foreign Domain

Saint-Andre, Ed. Standards Track [Page 58]

RFC 3920 XMPP Core October 2004

10.3. Subdomain

10.4. Mere Domain or Specific Resource

10.5. Node in Same Domain

Saint-Andre, Ed. Standards Track [Page 59]

RFC 3920 XMPP Core October 2004

  1. If the JID is of the form <node@domain> and there exists at least

    • one connected resource for the node, the recipient's server SHOULD deliver the stanza to at least one of the connected resources, according to application-specific rules (a set of delivery rules for instant messaging and presence applications is defined in [XMPP-IM]).

11. XML Usage within XMPP

11.1. Restrictions

11.2. XML Namespace Names and Prefixes

Saint-Andre, Ed. Standards Track [Page 60]

RFC 3920 XMPP Core October 2004

11.2.1. Streams Namespace

11.2.2. Default Namespace

Saint-Andre, Ed. Standards Track [Page 61]

RFC 3920 XMPP Core October 2004

11.2.3. Dialback Namespace

11.3. Validation

11.4. Inclusion of Text Declaration

11.5. Character Encoding

12. Core Compliance Requirements

Saint-Andre, Ed. Standards Track [Page 62]

RFC 3920 XMPP Core October 2004

12.1. Servers

12.2. Clients

Saint-Andre, Ed. Standards Track [Page 63]

RFC 3920 XMPP Core October 2004

13. Internationalization Considerations

14. Security Considerations

14.1. High Security

14.2. Certificate Validation

Saint-Andre, Ed. Standards Track [Page 64]

RFC 3920 XMPP Core October 2004

14.3. Client-to-Server Communications

Saint-Andre, Ed. Standards Track [Page 65]

RFC 3920 XMPP Core October 2004

=== 14.4. Server-to-Server Communications ===

Saint-Andre, Ed. Standards Track [Page 66]

RFC 3920 XMPP Core October 2004

14.5. Order of Layers

14.6. Lack of SASL Channel Binding to TLS

14.7. Mandatory-to-Implement Technologies

Saint-Andre, Ed. Standards Track [Page 67]

RFC 3920 XMPP Core October 2004

14.8. Firewalls

14.9. Use of base64 in SASL

14.10. Stringprep Profiles

Saint-Andre, Ed. Standards Track [Page 68]

RFC 3920 XMPP Core October 2004

15. IANA Considerations

15.1. XML Namespace Name for TLS Data

15.2. XML Namespace Name for SASL Data

Saint-Andre, Ed. Standards Track [Page 69]

RFC 3920 XMPP Core October 2004

15.3. XML Namespace Name for Stream Errors

15.4. XML Namespace Name for Resource Binding

15.5. XML Namespace Name for Stanza Errors

15.6. Nodeprep Profile of Stringprep

Saint-Andre, Ed. Standards Track [Page 70]

RFC 3920 XMPP Core October 2004

15.7. Resourceprep Profile of Stringprep

15.8. GSSAPI Service Name

15.9. Port Numbers

16. References

16.1. Normative References

Saint-Andre, Ed. Standards Track [Page 71]

RFC 3920 XMPP Core October 2004

Saint-Andre, Ed. Standards Track [Page 72]

RFC 3920 XMPP Core October 2004

=== 16.2. Informative References ===

Saint-Andre, Ed. Standards Track [Page 73]

RFC 3920 XMPP Core October 2004

Saint-Andre, Ed. Standards Track [Page 74]

RFC 3920 XMPP Core October 2004

Appendix A. Nodeprep

A.1. Introduction

A.2. Character Repertoire

A.3. Mapping

A.4. Normalization

Saint-Andre, Ed. Standards Track [Page 75]

RFC 3920 XMPP Core October 2004

A.5. Prohibited Output

A.6. Bidirectional Characters

Appendix B. Resourceprep

B.1. Introduction

Saint-Andre, Ed. Standards Track [Page 76]

RFC 3920 XMPP Core October 2004

B.2. Character Repertoire

B.3. Mapping

B.4. Normalization

Saint-Andre, Ed. Standards Track [Page 77]

RFC 3920 XMPP Core October 2004

B.5. Prohibited Output

B.6. Bidirectional Characters

Appendix C. XML Schemas

C.1. Streams namespace

Saint-Andre, Ed. Standards Track [Page 78]

RFC 3920 XMPP Core October 2004

Saint-Andre, Ed. Standards Track [Page 79]

RFC 3920 XMPP Core October 2004

C.2. Stream error namespace

Saint-Andre, Ed. Standards Track [Page 80]

RFC 3920 XMPP Core October 2004

C.3. TLS namespace

  • <?xml version='1.0' encoding='UTF-8'?>

    <xs:schema

    • xmlns:xs='http://www.w3.org/2001/XMLSchema' targetNamespace='urn:ietf:params:xml:ns:xmpp-tls' xmlns='urn:ietf:params:xml:ns:xmpp-tls' elementFormDefault='qualified'>

Saint-Andre, Ed. Standards Track [Page 81]

RFC 3920 XMPP Core October 2004

C.4. SASL namespace

Saint-Andre, Ed. Standards Track [Page 82]

RFC 3920 XMPP Core October 2004

C.5. Resource binding namespace

  • <?xml version='1.0' encoding='UTF-8'?>

    <xs:schema

    • xmlns:xs='http://www.w3.org/2001/XMLSchema' targetNamespace='urn:ietf:params:xml:ns:xmpp-bind' xmlns='urn:ietf:params:xml:ns:xmpp-bind' elementFormDefault='qualified'>

    • <xs:element name='bind'>

      • <xs:complexType>

        • <xs:choice minOccurs='0' maxOccurs='1'>

          • <xs:element name='resource' type='xs:string'/> <xs:element name='jid' type='xs:string'/>

Saint-Andre, Ed. Standards Track [Page 83]

RFC 3920 XMPP Core October 2004

  • </xs:choice>

  • </xs:complexType>

  • </xs:element>

  • </xs:schema>

C.6. Dialback namespace

  • <?xml version='1.0' encoding='UTF-8'?>

    <xs:schema

    • <xs:element name='result'>

      • <xs:complexType>

        • <xs:simpleContent>

          • <xs:extension base='xs:token'>

            • <xs:attribute name='from' type='xs:string' use='required'/> <xs:attribute name='to' type='xs:string' use='required'/> <xs:attribute name='type' use='optional'>

              • <xs:simpleType>

                • <xs:restriction base='xs:NCName'>

                  • <xs:enumeration value='invalid'/> <xs:enumeration value='valid'/>

                  </xs:restriction>

                </xs:simpleType>

              </xs:attribute>

            </xs:extension>

          </xs:simpleContent>

        </xs:complexType>

      </xs:element>

      <xs:element name='verify'>

      • <xs:complexType>

        • <xs:simpleContent>

          • <xs:extension base='xs:token'>

            • <xs:attribute name='from' type='xs:string' use='required'/> <xs:attribute name='id' type='xs:NMTOKEN' use='required'/> <xs:attribute name='to' type='xs:string' use='required'/> <xs:attribute name='type' use='optional'>

              • <xs:simpleType>

                • <xs:restriction base='xs:NCName'>

                  • <xs:enumeration value='invalid'/> <xs:enumeration value='valid'/>

                  </xs:restriction>

Saint-Andre, Ed. Standards Track [Page 84]

RFC 3920 XMPP Core October 2004

  • </xs:simpleType>

  • </xs:attribute>

  • </xs:extension>

  • </xs:simpleContent>

  • </xs:complexType>

  • </xs:element>

  • </xs:schema>

C.7. Stanza error namespace

  • <?xml version='1.0' encoding='UTF-8'?>

    <xs:schema

    • xmlns:xs='http://www.w3.org/2001/XMLSchema' targetNamespace='urn:ietf:params:xml:ns:xmpp-stanzas' xmlns='urn:ietf:params:xml:ns:xmpp-stanzas' elementFormDefault='qualified'>

    • <xs:element name='bad-request' type='empty'/> <xs:element name='conflict' type='empty'/> <xs:element name='feature-not-implemented' type='empty'/> <xs:element name='forbidden' type='empty'/> <xs:element name='gone' type='xs:string'/> <xs:element name='internal-server-error' type='empty'/> <xs:element name='item-not-found' type='empty'/> <xs:element name='jid-malformed' type='empty'/> <xs:element name='not-acceptable' type='empty'/> <xs:element name='not-allowed' type='empty'/> <xs:element name='payment-required' type='empty'/> <xs:element name='recipient-unavailable' type='empty'/> <xs:element name='redirect' type='xs:string'/> <xs:element name='registration-required' type='empty'/> <xs:element name='remote-server-not-found' type='empty'/> <xs:element name='remote-server-timeout' type='empty'/> <xs:element name='resource-constraint' type='empty'/> <xs:element name='service-unavailable' type='empty'/> <xs:element name='subscription-required' type='empty'/> <xs:element name='undefined-condition' type='empty'/> <xs:element name='unexpected-request' type='empty'/>

      <xs:group name='stanzaErrorGroup'>

      • <xs:choice>

        • <xs:element ref='bad-request'/> <xs:element ref='conflict'/> <xs:element ref='feature-not-implemented'/> <xs:element ref='forbidden'/> <xs:element ref='gone'/>

Saint-Andre, Ed. Standards Track [Page 85]

RFC 3920 XMPP Core October 2004

  • <xs:element ref='internal-server-error'/> <xs:element ref='item-not-found'/> <xs:element ref='jid-malformed'/> <xs:element ref='not-acceptable'/> <xs:element ref='not-allowed'/> <xs:element ref='payment-required'/> <xs:element ref='recipient-unavailable'/> <xs:element ref='redirect'/> <xs:element ref='registration-required'/> <xs:element ref='remote-server-not-found'/> <xs:element ref='remote-server-timeout'/> <xs:element ref='resource-constraint'/> <xs:element ref='service-unavailable'/> <xs:element ref='subscription-required'/> <xs:element ref='undefined-condition'/> <xs:element ref='unexpected-request'/>

  • </xs:choice>

Saint-Andre, Ed. Standards Track [Page 86]

RFC 3920 XMPP Core October 2004

Appendix D. Differences Between Core Jabber Protocols and XMPP

D.1. Channel Encryption

D.2. Authentication

D.3. Resource Binding

Saint-Andre, Ed. Standards Track [Page 87]

RFC 3920 XMPP Core October 2004

D.4. JID Processing

D.5. Error Handling

D.6. Internationalization

D.7. Stream Version Attribute

Saint-Andre, Ed. Standards Track [Page 88]

RFC 3920 XMPP Core October 2004

Contributors

Acknowledgements

Author's Address

Saint-Andre, Ed. Standards Track [Page 89]

RFC 3920 XMPP Core October 2004

Full Copyright Statement

Intellectual Property

Acknowledgement

Saint-Andre, Ed. Standards Track [Page 90]