了解 (RDP) 的远程桌面协议

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

原始产品版本:   Windows Server 2012 R2
原始 KB 数:   186607

摘要

远程桌面协议基于并是 T-120 系列协议标准的扩展。 多通道功能协议允许单独的虚拟通道用于携带演示文稿数据、串行设备通信、许可信息、高度加密的数据 (键盘、鼠标活动) 等等。 由于 RDP 是核心的 "共享" 协议的扩展,因此其他一些功能作为 RDP 的一部分保留,如支持多点 (多方会话) 所必需的体系结构功能。 通过 Multipoint data 传递,可以 实时 将应用程序中的数据传递到多个方,而无需分别向每个会话发送相同的数据 (例如,虚拟白板) 。

但是,在第一版的 Windows 终端服务器中,我们将重点提供可靠且快速的点到点 (单一会话) 通信。 在首次发布的终端服务器4.0 中将仅使用一个数据通道。 但是,RDP 的灵活性为将来的产品提供了大量功能空间。

Microsoft 在 Windows NT 终端服务器中为连接而决定实现 RDP 的一个原因是,它提供了可用于生成更多功能的可扩展基础。 这是因为 RDP 为数据传输提供了64000个单独的通道。 但是,当前传输活动仅对键盘、鼠标和演示文稿数据) 使用单个通道 (。

此外,RDP 设计用于支持多种不同类型的网络拓扑 (例如 ISDN、POTS 和许多 LAN 协议,如 IPX、NetBIOS、TCP/IP 等。 ) 当前版本的 RDP 将仅通过 TCP/IP 运行,但在客户反馈中,可能会在将来的版本中添加其他协议支持。

通过 RDP 堆栈发送和接收数据所涉及的活动基本上与当今常见 LAN 网络的七层 OSI 模型标准相同。 要传输的应用程序或服务中的数据将通过协议堆栈分剖传递给通道 (通过 MCS) 、加密、包装、分帧、打包到网络协议,最后进行寻址并通过线路发送到客户端。 返回的数据的工作方式与之前相反,因为数据包被剥离了其地址,然后将其解包、解密等,直到将数据呈现给应用程序以供使用。 协议堆栈修改的关键部分发生在第四层和第七层之间,数据被加密、包装和分帧,定向到通道并确定优先级。

应用程序开发人员的关键点之一是,在使用 RDP 时,Microsoft 已将处理协议堆栈的复杂性扔掉了。 这使他们能够编写简洁、设计良好且性能良好的32位应用程序,然后由终端服务器及其客户端连接所实现的 RDP 堆栈负责处理 rest。

有关应用程序如何在终端服务器上进行交互的详细信息,以及在为 Windows 终端服务器基础结构开发应用程序时要注意的事项,请参阅 优化应用程序以使用 WINDOWS NT server 4.0 终端服务器版本 白皮书。 在 RDP 堆栈实例中需要讨论的四个组件是 Multipoint Communication Service (MCSMUX) 、通用会议控制 (GCC) 、Wdtshare.sys 和 Tdtcp.sys。 MCSmux 和 GCC 是国际电信联盟 (ITU) T 120 系列的一部分。 MCS 由两个标准组成: T. 122,它定义 multipoint services 和 T. 125,后者指定数据传输协议。 MCSMux 控制信道分配 (通过将数据多路复用到协议中的预定义虚拟信道) 、优先级别和正在发送的数据的分段。 实际上,它将多个 RDP 堆栈抽象化为单个实体,从 GCC 的角度来看。 GCC 负责管理这些多个通道。 GCC 允许创建和删除会话连接,并控制 MCS 提供的资源。 每个终端服务器协议 (目前仅支持 RDP 和 Citrix 的 ICA,) 会在等待连接请求) 的侦听器堆栈 (加载协议堆栈实例。 终端服务器设备驱动程序协调和管理 RDP 协议活动,由较小组件组成,RDP 驱动程序 ( # A0) 用于 UI 传输、压缩、加密、组帧等,而传输驱动程序 ( # A1) 将协议打包到基础网络协议(TCP/IP)。

在这种情况下,RDP 已开发为完全独立于其基础传输堆栈(在本例中为 TCP/IP)。 RDP 是完全独立于其传输堆栈的,这意味着,我们可以为其他网络协议添加其他传输驱动程序,因为这些协议的客户需求增长,几乎或没有对协议的基础部分所做的重大更改。 这些是网络上的 RDP 性能和 extendibility 的关键因素。