Understanding the Remote Desktop Protocol (RDP)
This article describes the Remote Desktop Protocol (RDP) that’s used for communication between the Terminal Server and the Terminal Server Client. RDP is encapsulated and encrypted within TCP.
Original product version: В Windows Server 2012 R2
Original KB number: В 186607
Summary
RDP is based on, and is an extension of, the T-120 family of protocol standards. A multichannel capable protocol allows for separate virtual channels for carrying the following information:
- presentation data
- serial device communication
- licensing information
- highly encrypted data, such as keyboard, mouse activity
RDP is an extension of the core T.Share protocol. Several other capabilities are retained as part of the RDP, such as the architectural features necessary to support multipoint (multiparty sessions). Multipoint data delivery allows data from an application to be delivered in real time to multiple parties, such as Virtual Whiteboards. It doesn’t require to send the same data to each session individually.
In this first release of Windows Terminal Server, we’re concentrating on providing reliable and fast point-to-point (single-session) communications. Only one data channel is used in the initial release of Terminal Server 4.0. However, the flexibility of RDP gives plenty of room for functionality in future products.
One reason that Microsoft decided to implement RDP for connectivity purposes within Windows NT Terminal Server is that it provides an extensible base to build many more capabilities. RDP provides 64,000 separate channels for data transmission. However, current transmission activities are only using a single channel (for keyboard, mouse, and presentation data).
RDP is designed to support many different types of Network topologies, such as ISDN, POTS. RDP is also designed to support many LAN protocols, such as IPX, NetBIOS, TCP/IP. The current version of RDP will only run over TCP/IP. With customer feedback, other protocol support may be added in future versions.
The activity involved in sending and receiving data through the RDP stack is essentially the same as the seven-layer OSI model standards for common LAN networking today. Data from an application or service to be transmitted is passed down through the protocol stacks. It’s sectioned, directed to a channel (through MCS), encrypted, wrapped, framed, packaged onto the network protocol, and finally addressed and sent over the wire to the client. The returned data works the same way only in reverse. The packet is stripped of its address, then unwrapped, decrypted, and so on. Finally the data is presented to the application for use. Key portions of the protocol stack modifications occur between the fourth and seventh layers, where the data is:
- encrypted
- wrapped
- framed
- directed to a channel
- prioritized
One of the key points for application developers is that, in using RDP, Microsoft has abstracted away the complexities of dealing with the protocol stack. It allows them to write clean, well-designed, well-behaved 32-bit applications. Then the RDP stack implemented by the Terminal Server and its client connections takes care of the rest.
For more information about how applications interact on the Terminal Server, and what to know when developing applications for a Windows Terminal Server infrastructure, see the following white paper:
Optimizing Applications for Windows NT Server 4.0, Terminal Server Edition
Four components worth discussing within the RDP stack instance are:
- the Multipoint Communication Service (MCSMUX)
- the Generic Conference Control (GCC)
- Wdtshare.sys
- Tdtcp.sys
MCSmux and GCC are part of the International Telecommunication Union (ITU) T.120 family. The MCS is made up of two standards:
- T.122: It defines the multipoint services
- T.125: It specifies the data transmission protocol
- channel assignment by multiplexing data onto predefined virtual channels within the protocol
- priority levels
- segmentation of data being sent
It essentially abstracts the multiple RDP stacks into a single entity, from the perspective of the GCC. GCC is responsible for management of those multiple channels. The GCC allows the creation and deletion of session connections and controls resources provided by MCS. Each Terminal Server protocol (currently, only RDP and Citrix’s ICA are supported) will have a protocol stack instance loaded (a listener stack awaiting a connection request). The Terminal Server device driver coordinates and manages the RDP protocol activity. It’s made up of smaller components:
- an RDP driver (Wdtshare.sys) for UI transfer, compression, encryption, framing, and so on.
- a transport driver (Tdtcp.sys) to package the protocol onto the underlying network protocol, TCP/IP.
RDP was developed to be entirely independent of its underlying transport stack, in this case TCP/IP. It means that we can add other transport drivers for other network protocols as customers needs for them grow, with little or no significant changes to the foundational parts of the protocol. They’re key elements to the performance and extendibility of RDP on the network.
Общее представление о протоколе удаленного рабочего стола (RDP)
В этой статье описывается протокол удаленного рабочего стола (RDP), используемый для связи между сервером терминалов и клиентом сервера терминалов. RDP инкапсулируется и шифруется в TCP.
Исходная версия продукта: Windows Server 2012 R2
Исходный номер КБ: 186607
Сводка
Протокол RDP основан и является расширением семейства стандартов протокола T-120. Протокол с несколькими каналами позволяет использовать отдельные виртуальные каналы для переноса следующих сведений:
- данные презентации
- последовательное взаимодействие с устройствами
- сведения о лицензировании
- зашифрованные данные, такие как клавиатура, действия с помощью мыши
Протокол RDP является расширением основного протокола T.Share. В RDP сохраняется ряд других возможностей, таких как функции архитектуры, необходимые для поддержки многоточки (многостоловые сеансы). Доставка данных с несколькими точками позволяет доставить данные из приложения в режиме реального времени нескольким сторонам, таким как виртуальные доски. Не требуется отправлять одинаковые данные для каждого сеанса по отдельности.
В этом первом выпуске Windows Terminal Server мы хотим обеспечить надежное и быстрое взаимодействие между точками (один сеанс). В первоначальном выпуске terminal Server 4.0 используется только один канал данных. Однако гибкость RDP предоставляет достаточно места для функциональности в будущих продуктах.
Одна из причин, по которой корпорация Майкрософт решила реализовать RDP в целях подключения в Windows NT Terminal Server, заключается в том, что она предоставляет мобильную базу для создания большего количество возможностей. RDP предоставляет 64 000 отдельных каналов для передачи данных. Однако в текущих действиях по передаче используется только один канал (для данных клавиатуры, мыши и презентаций).
RDP предназначен для поддержки различных типов сетевых topologies, таких как ISDN, POTS. Протокол RDP также поддерживает множество протоколов локальной сети, таких как IPX, NetBIOS, TCP/IP. Текущая версия RDP будет работать только по TCP/IP. Благодаря отзывам клиентов в будущих версиях может быть добавлена поддержка других протоколов.
Действия, связанные с отправкой и получением данных через стек RDP, практически такие же, как и семиуровневые стандарты модели OSI для распространенных сетей локальной сети. Передаваемые данные из приложения или службы передаются через стеки протокола. Он разделяется, направляется в канал (через MCS), шифруется, упаковывается, упаковывается в сетевой протокол, а затем рассматривается и отправляется клиенту по сети. Возвращенные данные работают одинаково только в обратном направлении. Пакет срезается с адреса, а затем расшифровываются, расшифровываются и так далее. Наконец, данные представляются приложению для использования. Основные части изменений стека протокола происходят между четвертым и седьмым уровнями, где данные:
- encrypted
- wrapped
- кадр
- направляется в канал
- prioritized
Один из ключевых моментов для разработчиков приложений заключается в том, что при использовании протокола RDP корпорация Майкрософт абстрагировали сложности работы с стеком протокола. Это позволяет им писать чистое, хорошо разработанное, правильное поведение 32-битных приложений. Затем стек RDP, реализованный сервером терминалов и его клиентские подключения, берет на себя остальные действия.
Дополнительные сведения о взаимодействии приложений на сервере терминалов и о том, что необходимо знать при разработке приложений для инфраструктуры Сервера терминалов Windows, см. в следующем документе:
Оптимизация приложений для Windows NT Server 4.0, Terminal Server Edition
В экземпляре стека RDP стоит обсудить четыре компонента:
- Служба связи Multipoint (MCSMUX)
- Универсальный контроль конференций (GCC)
- Wdtshare.sys
- Tdtcp.sys
MCSmux и GCC являются частью семейства T.120 Международного телекоммуникационного союза (ITU). McS состоит из двух стандартов:
- T.122: определяет службы multipoint
- T.125: указывает протокол передачи данных
Элементы управления MCSMux:
- назначение каналов путем мультиплексирования данных на предварительно заранее задав в рамках протокола
- уровни приоритета
- сегментация от отправляется данных
Он абстрагировать несколько стеков RDP в один объект с точки зрения GCC. GCC отвечает за управление этими несколькими каналами. GCC позволяет создавать и удалять подключения сеансов и управляет ресурсами, предоставляемыми MCS. Каждый протокол сервера терминалов (в настоящее время поддерживается только протокол RDP и ICA Citrix) будет иметь загруженный экземпляр стека протокола (стек прослушиватель ожидает запроса на подключение). Драйвер устройства сервера терминалов координирует и управляет действиями протокола RDP. Он состоит из небольших компонентов:
- драйвер RDP (Wdtshare.sys) для передачи пользовательского интерфейса, сжатия, шифрования, фрейма и так далее.
- драйвер транспорта (Tdtcp.sys) для упаковки протокола в сетевой протокол, TCP/IP.
RDP был разработан полностью независимо от его стека транспорта, в данном случае TCP/IP. Это означает, что мы можем добавлять другие транспортные драйверы для других сетевых протоколов по мере роста потребностей клиентов в них с небольшим количеством существенных изменений в основах протокола или без существенных изменений. Они являются ключевыми элементами производительности и расширения RDP в сети.
Remote Desktop Protocol
The Microsoft Remote Desktop Protocol (RDP) provides remote display and input capabilities over network connections for Windows-based applications running on a server. RDP is designed to support different types of network topologies and multiple LAN protocols.
This topic is for software developers. If you are looking for user information for Remote Desktop, see Windows Support. If you are looking for IT professional information for Remote Desktop, see Remote Desktop Services on TechNet.
Basic Architecture
RDP is based on, and an extension of, the ITU T.120 family of protocols. RDP is a multiple-channel capable protocol that allows for separate virtual channels for carrying device communication and presentation data from the server, as well as encrypted client mouse and keyboard data. RDP provides an extensible base and supports up to 64,000 separate channels for data transmission and provisions for multipoint transmission.
On the server, RDP uses its own video driver to render display output by constructing the rendering information into network packets by using RDP protocol and sending them over the network to the client. On the client, RDP receives rendering data and interprets the packets into corresponding Microsoft Windows graphics device interface (GDI) API calls. For the input path, client mouse and keyboard events are redirected from the client to the server. On the server, RDP uses its own keyboard and mouse driver to receive these keyboard and mouse events.
In a Remote Desktop session, all environment variables—for example, variables determining color depth and wallpaper enabling and disabling—are determined by the RCP-Tcp connection settings. This applies to all functions and methods that set environment variables in the Remote Desktop Web Connection Reference and the Remote Desktop Services WMI Provider interface.
Features
Microsoft RDP includes the following features and capabilities:
RDP uses RSA Security’s RC4 cipher, a stream cipher designed to efficiently encrypt small amounts of data. RC4 is designed for secure communications over networks. Administrators can choose to encrypt data by using a 56- or 128-bit key.
Bandwidth reduction features
RDP supports various mechanisms to reduce the amount of data transmitted over a network connection. Mechanisms include data compression, persistent caching of bitmaps, and caching of glyphs and fragments in RAM. The persistent bitmap cache can provide a substantial improvement in performance over low-bandwidth connections, especially when running applications that make extensive use of large bitmaps.
A user can manually disconnect from a remote desktop session without logging off. The user is automatically reconnected to their disconnected session when he or she logs back onto the system, either from the same device or a different device. When a user’s session is unexpectedly terminated by a network or client failure, the user is disconnected but not logged off.
Users can delete, copy, and paste text and graphics between applications running on the local computer and those running in a remote desktop session, and between sessions.
Applications running within a remote desktop session can print to a printer attached to the client device.
By using RDP virtual channel architecture, existing applications can be augmented and new applications can be developed to add features that require communications between the client device and an application running in a remote desktop session.
Computer support staff can view and control a remote desktop session. Sharing input and display graphics between two remote desktop sessions gives a support person the ability to diagnose and resolve problems remotely.
Network load balancing
RDP takes advantage of network load balancing (NLB), where available.
In addition, RDP contains the following features:
- Support for 24-bit color.
- Improved performance over low-speed dial-up connections through reduced bandwidth.
- Smart Card authentication through Remote Desktop Services.
- Keyboard hooking. The ability to direct special Windows key combinations, in full-screen mode, to the local computer or to a remote computer.
- Sound, drive, port, and network printer redirection. Sounds that occur on the remote computer can be heard on the client computer running the RDC client, and local client drives will be visible to the remote desktop session.