3.1 Common Details

The following diagram illustrates the states and transitions of this protocol.

State diagram

Figure 7: State diagram

Static channel created event: This event signals that the static channel is available to send and receive data, as described in [MS-RDPBCGR] section 3.1.5.2.

Caps exchange state: In this state, the client and the server exchange capabilities, as described in section 2.2.1.

Caps received event: After the capabilities have been received by both sides, the protocol is ready to open dynamic channels.

Ready state: In this state, the protocol can open new channels, as described in 2.2.2. For each new channel it will enter new state.

Create channel event: Signifies that the server is requesting a new channel, as described in section 2.2.2.

Opening channel state: In this state, the server awaits a DVC Create Response PDU, as described in section 2.2.2.2.

Channel create fail event: The response indicated failure, the channel is closed.

Create success event: The channel is ready to send and receive data.

Send/Receive state: The dynamic channel is ready to send and process incoming data. See below for detailed data processing state diagram.

Channel close event: Close the channel because either the client or the server have sent Closing a DVC packet, as described in section 2.2.4.

Static channel disconnected event: This event signifies that the connection between the client and the server is broken and, at this point, the protocol terminates.

The following diagram illustrates data processing while a channel is in the Send/Receive state.

Data processing while a channel is in Send/Receive state

Figure 8: Data processing while a channel is in Send/Receive state

There are basically two substates:

Multi fragment state: This state starts with DYNVC_DATA_FIRST packet and then multiple DYNVC_DATA packets until the amount of data received is equal to the Length field of this packet.

Single fragment: Only a single DYNVC_DATA packet is received.

These reassembly rules are described in more detail in section 3.1.5.2.3.