graph LR
RDP_Session_Manager["RDP Session Manager"]
TPKT_Layer["TPKT Layer"]
X_224_Transport_Layer["X.224 Transport Layer"]
RDP_Security_Layer["RDP Security Layer"]
RDP_Licensing_Layer["RDP Licensing Layer"]
MCS_Layer["MCS Layer"]
GCC_Layer["GCC Layer"]
PDU_Processing_Layer["PDU Processing Layer"]
RDP_Session_Manager -- "initiates connection with" --> X_224_Transport_Layer
RDP_Session_Manager -- "orchestrates" --> PDU_Processing_Layer
PDU_Processing_Layer -- "reports events to" --> RDP_Session_Manager
TPKT_Layer -- "frames/de-frames data for" --> X_224_Transport_Layer
X_224_Transport_Layer -- "handles transport for" --> MCS_Layer
X_224_Transport_Layer -- "signals connection status to" --> RDP_Session_Manager
MCS_Layer -- "manages channels for" --> RDP_Security_Layer
MCS_Layer -- "interacts with" --> GCC_Layer
MCS_Layer -- "delivers channel PDUs to" --> PDU_Processing_Layer
RDP_Security_Layer -- "encrypts/decrypts data for" --> MCS_Layer
RDP_Security_Layer -- "integrates with" --> RDP_Licensing_Layer
RDP_Licensing_Layer -- "provides licensing PDUs to" --> RDP_Security_Layer
GCC_Layer -- "provides capabilities to" --> MCS_Layer
PDU_Processing_Layer -- "processes PDUs from" --> MCS_Layer
The RDP subsystem in rdpy is structured as a layered protocol stack, mirroring the standard RDP architecture. The RDP Session Manager acts as the central orchestrator, initiating connections and managing the overall session lifecycle. At the lowest level, the TPKT Layer handles packet framing, passing data to the X.224 Transport Layer for reliable transport over the network. Above the transport layer, the MCS Layer establishes and manages virtual channels, facilitating multiplexed communication. The RDP Security Layer provides encryption, decryption, and authentication services, often integrating with the RDP Licensing Layer for compliance. The GCC Layer assists the MCS layer by exchanging capabilities. Finally, the PDU Processing Layer is responsible for handling various RDP Protocol Data Units, reporting significant events back to the RDP Session Manager.
Acts as the high-level coordinator for the RDP session lifecycle. It orchestrates the connection process, manages session parameters, and delegates control to specific client/server implementations.
Related Classes/Methods:
Handles the framing and de-framing of RDP data streams into TPKT (TPDU over TCP) packets. Ensures proper message boundaries and reliable segmentation/reassembly of RDP payloads.
Related Classes/Methods:
Manages the initial connection establishment and basic data transport over the underlying network, adhering to the ITU-T T.125/X.224 protocol specification. It handles connection setup and teardown at the transport level.
Related Classes/Methods:
Manages all aspects of RDP security, including negotiation of security capabilities, key exchange, encryption/decryption of RDP data, and message authentication. It supports various security protocols, including NLA.
Related Classes/Methods:
Implements the RDP client and server licensing procedures. This includes handling license challenge-response mechanisms and requests for new licenses, ensuring compliance with RDP licensing requirements.
Related Classes/Methods:
Establishes and manages virtual channels for multiplexing various RDP traffic types (e.g., graphics, input, sound, clipboard) over a single underlying connection, adhering to the T.125 MCS (Multiplexed Communication Service) protocol.
Related Classes/Methods:
Facilitates the exchange of RDP capabilities and settings between the client and server during the MCS connection phase (General Conference Control). This ensures that both parties agree on compatible session parameters.
Related Classes/Methods:
Processes and generates various RDP Protocol Data Units (PDUs) that represent specific RDP events and data, such as input events, display updates, and session management messages.
Related Classes/Methods: