了解远程桌面协议 (RDP)

本文介绍在终端服务器与终端服务器客户端之间通信所使用的远程桌面协议 (RDP)。 RDP 在 TCP 中进行封装和加密。

适用于: Windows Server 2012 R2
原始 KB 编号: 186607

摘要

RDP 基于 T-120 系列协议标准,并且是后者的扩展。 支持多通道的协议允许单独的虚拟通道来传送以下信息:

  • 演示数据
  • 串行设备通信
  • 许可信息
  • 高度加密的数据,如键盘、鼠标活动

RDP 是 T.Share 核心协议的扩展。 若干其他功能作为 RDP 的一部分保留,例如多点支持(多方会话)所需的体系结构功能。 多点数据传递允许应用程序中的数据实时传递到多方,例如虚拟白板。 不需要单独向每个会话发送相同的数据。

在 Windows 终端服务器的第一个版本中,我们专注于提供可靠且快速的点对点(单会话)通信。 终端服务器 4.0 的初始版本中仅使用一个数据信道。 但是,RDP 的灵活性为将来的产品提供了足够的功能空间。

Microsoft 决定在 Windows NT 终端服务器内实施 RDP 进行连接的一个原因是,它提供了一个可扩展的基础来构建更多功能。 RDP 提供 64,000 个单独的数据传输信道。 然而,当前的传输活动仅使用单个信道(用于键盘、鼠标和演示数据)。

RDP 旨在支持许多不同类型的网络拓扑,例如 ISDN、POTS。 RDP 还旨在支持多种 LAN 协议,例如 IPX、NetBIOS、TCP/IP。 当前版本的 RDP 将仅采用 TCP/IP。 根据客户反馈,将来的版本中可能会添加其他协议支持。

通过 RDP 栈发送和接收数据所涉及的活动基本上与目前一般 LAN 网络的七层 OSI 模型标准相同。 要传输的应用程序或服务中的数据将通过协议栈向下传递。 它经过分割、信道定向(通过 MCS)、加密、打包、制帧并封装到网络协议中,最后进行寻址并通过网络发送到客户端。 数据返回时原理相同,但步骤相反。 数据包会被剥离地址,然后解包、解密等。 最后,数据将提供给应用程序以供使用。 协议栈修改主要位于第四层和第七层之间,在此数据经过以下处理:

  • 加密
  • 打包
  • 制帧
  • 信道定向
  • 优先排序

对于应用程序开发人员,其中一个好处是 Microsoft 降低了 RDP 使用过程中处理协议栈的复杂性。 这使他们能够编写出简练、设计合理、行为良好的 32 位应用程序。 然后,终端服务器及其客户端连接实施的 RDP 栈负责处理其余操作。

有关应用程序如何在终端服务器上交互的详细信息,以及针对 Windows 终端服务器基础结构开发应用程序时要了解的内容,请参阅以下白皮书:
针对终端服务器版 Windows NT Server 4.0 优化应用程序

RDP 栈实例中值得讨论的四个组件包括:

  • 多点通信服务 (MCSMUX)
  • 通用会议控制 (GCC)
  • Wdtshare.sys
  • Tdtcp.sys

MCSmux 和 GCC 是国际电信联盟 (ITU) T.120 系列的一部分。 MCS 由两个标准组成:

  • T.122:定义多点服务
  • T.125:指定数据传输协议

MCSMux 控制:

  • 通过将数据多路复用到协议中的预定义虚信道进行信道分配
  • 优先级
  • 分割正在发送的数据

这实质上从 GCC 的角度将多个 RDP 栈抽象为单个实体。 GCC 负责管理这些多信道。 GCC 可以创建和删除会话连接并控制 MCS 提供的资源。 每个终端服务器协议(目前仅支持 RDP 和 Citrix 的 ICA)都会加载协议栈实例(等待连接请求的侦听栈) 终端服务器设备驱动程序协调和管理 RDP 协议活动。 它由较小的组件组成:

  • 用于 UI 传输、压缩、加密、组帧等的 RDP 驱动程序 (Wdtshare.sys)。
  • 将协议封装到基础网络协议 TCP/IP 中的传输驱动程序 (Tdtcp.sys)。

RDP 完全独立于其基础传输堆栈,在本例中为 TCP/IP。 这意味着,随着客户对其他网络协议的需求增长,我们可以为这些网络协议添加其他传输驱动程序,对协议的基础部分几乎没有重大更改。 它们是网络上 RDP 性能和可扩展性的要素。