Share via


1.3.2.1 RAIL Session Connection

RAIL connection establishment follows the Remote Desktop Protocol: Basic Connectivity and Graphics Remoting connection establishment sequence (as specified in [MS-RDPBCGR] section 1.3.1.1). RAIL-specific information during connection establishment is outlined as follows:

  • The client creates and initializes a static virtual channel to be used for RAIL protocol messages. Information regarding this channel is sent to the server in the Client MCS Connect Initial PDU with GCC Conference Create Request (as specified in [MS-RDPBCGR] section 2.2.1.3).

  • The Client Info PDU (as specified in [MS-RDPBCGR] section 2.2.1.11) indicates the client's request to establish a RAIL connection.

  • The Alternate Shell field of the Client Info PDU, as specified in [MS-RDPBCGR] section 2.2.1.11, is NOT used to communicate the initial application started in the session. Instead, the initial application information is communicated to the server via the Client Execute PDU.

  • The client can set the INFO_HIDEF_RAIL_SUPPORTED flag of the Client Info PDU (as specified in [MS-RDPBCGR] section 2.2.1.11.1.1) to request an Enhanced RemoteApp session. If the server does not support Enhanced RemoteApp, it should fall back to a standard RemoteApp session.

  • If the server supports RAIL, the Demand Active PDU has to contain the Remote Programs Capability Set and Window List Capability Set to indicate that it supports RAIL.

  • The client sends corresponding Remote Programs Capability Set and Window Capability Set in the Confirm Active PDU.

  • If, in the Demand Active PDU, the server does not indicate that it supports RAIL, the client requests a disconnection according to the Remote Desktop Protocol: Basic Connectivity and Graphics Remoting ([MS-RDPBCGR] section 1.3.1.4.1). Likewise, if the client does not indicate that it supports RAIL in the Confirm Active PDU, the server disconnects the client (see [MS-RDPBCGR] section 1.3.1.4.2).

After the RDP connection is established, a RAIL client and server exchange Handshake PDUs over the RAIL Virtual Channel to indicate that each is ready for data on the virtual channel. The server should send a HandshakeEx PDU instead of a Handshake PDU if the client and server both indicate support for it in the Remote Programs Capability Set, or if Enhanced RemoteApp is in use. The client must respond with a Handshake PDU.

Handshake PDU

Figure 1: Handshake PDU