从本文开始,我们将介绍一系列RDP协议的相关实现技术。



一、RDP协议的诞生



网络上存在着大量关于RDP协议是如何产生的话题和历史论述,有人说RDP协议是微软自家自研的协议,有人说这是微软从国际电信联盟收购而来的基于T.share协议进行改进的协议,有人说是微软公司从思杰公司收购而来等等不一而足。那么真实的RDP协议到底最初是如何产生的?

实际上,微软RDP协议在诞生之初,是基于ITU-T(国际电信联盟)的T.120协议集中T.128应用程序共享协议(在设计之初,国际电信联盟对其的名称为T.share)进行改进而来,T.120描述了如何为一系列应用程序和服务提供实时,多点数据通信的支持。它由CiscoWebEx的MeetingCenter,Microsoft NetMeeting,Nortel CS 2100和Lotus Sametime等产品使用,以支持应用程序共享,实时文本会议和其他功能。实际上其是一个远程的应用程序共享协议,为终端计算机提供远程计算机上的应用程序共享、实时文本等图像信息,我们也可以理解为是一个远程的共享显示协议。微软在T.128应用程序共享协议的基础上进行改进,最终推出RDP协议的第一个版本(名为版本4.0)。所以其实严格从远程显示协议上来说,其RDP就是基于国际电信联盟进行设计并且建构的T.128应用程序共享协议(T.share协议)进行改进而来。T.128应用程序共享技术最初由国际电信联盟进行设计并且建构,后来英国软件开发商DataConnection Limited基于T.128应用程序共享协议(T.share协议)进行改进,由微软从英国软件开发商Data Connection Limited收购到该技术。

但是我们为什么要有这种远程的图形显示协议呢?远程的图形显示协议其本质是远程控制技术,远程控制技术早在 DOS 时代就已经产生了萌芽,当时的计算机技术研究者们提出了Telnet 协议来通过网络登录、访问和控制远端的计算机。那时候还没有桌面系统,Telnet 协议是基于字符界面以及虚终端的,由于当时的网络比较落后,加之那时计算机只是及少的一部分人能够使用的贵重物品,所以对于远程访问技术既没有完全成熟技术或者条件支持,同时也几乎没有市场需求,所以远程控制技术自然的不需要图形的显示。在桌面系统诞生之后,远程控制技术再继续使用Telnet协议去登录、访问和控制远端的计算机已经达不到用户对远程控制技术的要求了。必须要有一个图形的界面的显示远端计算机的桌面系统。其实那个时候微软本身已经有了针对于远程图形显示技术和协议,就是收购T.128应用程序共享技术来构建的一个具有图形显示的远程协议。微软最初是根据Windows 用户对图形界面的需求,将该协议最先使用于NetMeeting项目,也就是说RDP协议其实是起源于NetMeeting项目派生的代码,而NetMeeting项目又源于国际电联标准(T.120系列)。

有了图形化的远程图形显示技术之后,微软将其放置在了Windows Server的系统中,并将其作为WindowsServer终端系统的一部分进行发布。WindowsServer终端系统使得用户可以访问终端服务器上安装的基于 Windows 的程序或访问完整的Windows 桌面。用户访问终端服务器上的某个程序时,在服务器上执行该程序。只有键盘、鼠标和显示器信息才通过网络传输。每个用户只能看到自己的会话。服务器操作系统透明地管理会话,与任何其他客户端会话无关。微软认为这样的终端服务结合远程图形显示技术可以为企业带来诸多好处。但是在终端服务这里,微软遇见了第一个难题:服务器操作系统如何支持多个会话同时远程登录?这个时候微软发现了Citrix的MultiWin技术,Citrix的MultiWin技术可以同时支持多个用户和会话登录Windows Server的系统。因此微软向Citrix购买其MultiWin技术授权用于Windows Server的终端系统中。有了Citrix的MultiWin技术集成到终端系统中运行多用户和会话同时登录运行在服务器操作系统上,并且用户可以使用远程图形显示技术访问服务器上的应用程序以及Windows桌面,这就就完美的构成了微软的远程桌面技术。

但是从本质上来说,我们应该把微软的远程桌面技术分成两个部分:远程图形显示协议和终端服务(在高版本的服务器系统中更名为远程桌面服务)。所以单就远程图形显示协议而言,其实是和思杰公司没有任何关系的。目前的终端服务(远程桌面服务)支持除了RDP协议之外,还支持第三方远程图形显示协议,比如Citrix ICA/HDX协议。


二、RDP协议的基础



RDP协议位于TCP/IP协议族的应用层。在使用RDP协议的会话中,客户端的鼠标或者键盘等消息经过加密后传输到远端服务器并予以重放执行,而远端服务器所进行的一系列响应也以加密消息的形式通过网络回传给客户端,并借助客户端的图形引擎表示出来。RDP远程桌面协议是一个庞大的协议集合体,其最初是基于T.128协议基础上构建,后来经过发展出现了各种版本的RDP,不断增强其功能,为用户带来更好的体现的同时,不断提升数据传输效率、带来更好更完善的操作方法,