1.3.2.1 Initialization Sequence

The initialization sequence has the following goals:

  1. Establish the client and server protocol versions and capabilities.

  2. Establish a list of audio formats common to both the client and the server. All audio data transmits in a format specified in this list.

  3. Determine if UDP can be used to transmit audio data.

Initially, the server sends a Server Audio Formats and Version PDU, specifying its protocol version and supported audio formats to the client. In response, the client sends a Client Audio Formats and Version protocol data unit (PDU). At this point, the server and client have each other's versions, each other's capabilities, and a synchronized list of supported audio formats.

If both the client and the server are at least version 6, the client has to send a Quality Mode PDU immediately after sending the Client Audio Formats and Version PDU.

If the client wants to accept data over UDP, the client advertises a port to be used for UDP traffic. Given the client's port, the server attempts to use UDP to send a Training PDU to the client over the port. The client in turn attempts to reply with its own Training Confirm PDU. The server then attempts to send a private key (using a Crypt Key PDU) to the client, using the audio virtual channels. This key will be used to encrypt some data sent over UDP. If all of the preceding steps succeed, the data transfer sequences are sent over UDP. If any of the preceding steps fail, the data transfer sequences are sent over virtual channels.

Initialization sequence using UDP for data transfer

Figure 1: Initialization sequence using UDP for data transfer

If all data transfer sequences are to be sent over virtual channels, the server and client exchange a Training PDU and a Training Confirm PDU over virtual channels.

Initialization sequence using virtual channels for data transfer

Figure 2: Initialization sequence using virtual channels for data transfer

Show: