RDP(Remote Desktop Protocal)协议研究

864 阅读7分钟

RDP研究

一、概述

RDP(Remote Desktop Protocal)远程桌面协议,是一个多通道协议,用于终端服务器与终端服务器客户端之间的通信,让用户(即客户端)连上提供微软终端机服务的电脑。服务端听取送到TCP3389端口的数据,RDP被封装并在TCP加密。

RDP协议栈分为五个层次,自上向下分别为应用层(也可以称为RDP层,因为应用就是RDP,主要是基于T.128协议)、安全层(用于加密,主要是RFC2246、RFC5246和RFC4346等)、MCS层(MCS和GCC都是国际电信联盟 (ITU) T.120 系列的一部分)、ISO层(包含国际电信联盟 (ITU) X224协议)和TCP/IP层

  1. RDP层次图

  2. 协议连接过程

  3. RDP应用结构分析

基于RDP的应用一般包括三个部分:

  • 终端服务器

  • 用户界面传输协议

  • 客户端

其中,用户界面传输协议允许客户机连接到终端服务器,获取服务器正在运行的应用程序信息。客户端的显示与服务期短的运行界面通过用户界面传输协议进行数据操作数据域显示数据的交换与传输。

 

  1. 基本流程

在RDP的应用中,由用户界面传输协议来连接客户端和服务器端,进行数据的交换传输,这一个过程的连接构成了RDP协议结构的实现。其中,最重要且体现RDP通信协议的部分是数据收取和数据操作的模块,基本流程见图3.

图3.RDP应用基本流程

图4.数据包头的组成

  1. 各连接模块说明

(一) ISO 连接模块

1)连接过程说明:

在客户端与服务器的网络套接口建立之后,需要首先建立RDP协议底层连接,得到连接确认后才能正常通信。初始连接时,在网络套接口TCP连接建立后,客户端首先进行连接请求,当收到连接确认后表示网络连接层连接建立,随后开始传送RDP数据。

2)RDP包类型说明

 

(二) 协议信息初始模块

1)

(三) 通道申请模块

对于RDP连接,各种功能数据都是通过单独的虚拟通道传输的。初始连接后,再进一步的信息通信之前,需要开辟相应的通道。

1)过程说明

客户端首先发送一个建立连接独立空间请求,再发送一个用户绑定请求,若服务器统一,将发送用户绑定确认,且含有需要申请的虚拟通道总数totalchannel,每次申请都应返回一个申请结果。

 

(四) 系统初始连接模块

当通道申请各部分通过后,开始系统登录的初始连接。从此数据包开始,所有虚拟通道层以上的网络数据都需要加密。

 

(五) 图形连接模块

在图形数据发送之前,服务器需要对此功能模块验证。,验证内容是所有与图形有关的信息。包括鼠标设置,键盘输入,字体类型,华图命令格式,图形显示的各种类型。

 

(六) 打印机映射连接模块

RDP协议当前提供映射5个设备。打印机的连接在系统登陆前完成,以配置操作系统信息。

(七) 声音处理连接模块

  RDP协议需要单独的虚拟通道传递关于声音的数据。为了能在本地播放数据,需要进行声音处理模块的连接,但只要有声音回放时才开始连接。连接的内容是:客户端对这些信息进行反馈,以在客户端与服务器之间确定相关的参数。

1)连接过程说明

  服务器首先发送一系列的关于声卡的设置参数,以及声音数据的网络格式信息,客户端对本地声卡进行测试并发回可支持的设置参数;服务器得到反馈后再发送测试数据,测试成功则反馈连接成功。

 

6.各功能模块说明

1)license身份模块

  在加密解密验证通过后,服务器发送license信息进行系统的身份认证。身份认证的加密、解密系统也是用RSA/RC4体系,但是与网络通信中的加密、解密系统分开的。license认证中的密钥是临时的、单独的。

 

2)加密解密模块

  在初始模块中对网络通信连接中所设定的加密信息提交给服务器,RDP协议实现的加密形式是RSA/RC4。

  当取得初始的加密、解密密钥(在发送初始连接信息后得到的),在初始连接结束后,客户端需要发送系统登录的初始信息,用以验证客户端加密、解密 的正确性。此后经过licence认证,通过认证后,所有的加密数据都经加密解密层处理。同时,密钥需要保存,因为加密数据包需要连续的正确加密或解密才能得到正确的数据。

 

3)图形处理模块

  在图形处理中,客户端将所有的事件转换为固定格式的网络数据发送到服务器,服务器将处理的结果以图片形式发回服务器。

 

4)打印数据模块

RDP协议提供本地打印机映射到服务器功能。在用户通过终端连接服务器并映射本地打印机后,可在远程主机上使用本地的打印机。客户端需要将本地打印机的型号传送给服务器,只有当前的服务器含有此打印机型号驱动时,打印机才会映射成功,在通道建立之后,对于打印机映射还需要信息交互确认。

   服务器把需要打印的数据发送到打印机所在的网络连接终端,通过单独的虚拟通道传送到客户端,由客户端负责打印数据的处理。在终端连接初始建立时,需要发送映射本地打印机的请求,服务器接受映射后,客户端应申请相应的虚拟通道以进行打印数据的相关操作。将要打印的数据在网络传输中,是以PRN格式存放的。在用本地映射的打印机进行打印工作时,需要对打印机进行相应的连接,打印数据以PRN的形式从服务器发送到客户端,客户端只要把他们直接输出到打印机端口即可打印。对于打印的数据及其网络协议本身的控制信息需要客户端能够正确的分离、操作。

   本地设备操作说明:设备的每一个任务操作,服务器都会发送请求,当任务操作结束时,需要客户端正确回复确认。对于设备的每一次具体任务,都需要首先创建任务,当得到确定的答复以后才可能继续任务。任务创建后执行具体的内容。设备的功能操作又分读、写和控制;对于每一种功能操作,任务数据分开始、传输中和结束三种。需要顺序传送。每一小段数据传输结束后需要回复确认。当任务结束后,需要回复确认。

 

5)声音回放模块

  RDP协议是提供声音回放功能。声音数据通过单独的虚拟通道传送,在初始连接时需要申请声音回放模式,当服务器接受声音回放模式后,应申请相应的虚拟通道以传送声音。

为在本地播放声音,服务器会对本地的声卡设置情况和状态进行询问,当得到合适的答复后,服务器才确认声音数据能够正常回放。关于声卡的确认在终端登录前完成。

声音数据是以wave格式传送过来的,当终端在使用过程中有声音回放请求时,服务器便将声音数据以wave格式映射到网络连接中,在客户端通过声音虚拟通道正确分离声音数据后,将其直接输出到声卡,即可实现声音回放。对声卡的设置,声音数据的属性调整等都通过网络映射到本地,需要终端程序能够正确的分离、响应。