1.7 Versioning and Capability Negotiation

The version numbers for the client and the server are sent in the Server Announce Request (section 2.2.2.2) and Client Announce Reply (section 2.2.2.3) messages. These messages are the first to be exchanged after the static virtual channel transport is established.

The capabilities are sent in separate messages: the Server Core Capability Request (section 2.2.2.7) for the server and the Client Core Capability Response (section 2.2.2.8) for the client. Both messages have a similar structure, and are a combination of capabilities for each feature that will be transported by the static virtual channel. If a feature does not have a capability subpacket, that feature is not supported by the remote side. The following figure shows the structure of a combined capabilities message.

Combined capabilities

Figure 3: Combined capabilities

The first part of this message is a header that describes the number of capabilities in the message. After the header, an array of capabilities follows, each one of which has a common Capability header (section 2.2.1.2); this header describes the type of the capability and its length. The content of the capability depends on its type.