1.7 Versioning and Capability Negotiation

This document covers versioning issues in the following areas:

Supported Transports: This protocol can be implemented on top of HTTP, as specified in section 2.1.

Protocol Versions: Clients specify the protocol version by using the User-Agent header. Servers specify the protocol version by using the Server header.

Security and Authentication Methods: This protocol supports the HTTP access authentication, as specified in [RFC2616] section 11. This protocol supports NTLM [MS-NLMP] authorization but only during PushSetup process. If an implementation requires validating authorization during PushStart process, the preferred authorization is digest.

Localization: This specification does not specify any localization-dependent protocol behavior.

Capability Negotiation: This protocol does explicit capability negotiation by using the X-Accept-Authentication header.

This protocol does not use operating system versioning because operating systems typically include multiple client implementations with different capabilities. Furthermore, the client software components are frequently updated independently of the rest of the operating system. Instead, the protocol versioning mechanism relies on the version number of the software product that is sending the request or the response to be stated on the User-Agent (section 2.2.1.8) and Server (section 2.2.1.5) headers, respectively.