RDP协议初步分析recv函数
Robin.Lee (chinaunixer@gmail)
RDP协议应用结构分析
基于RDP的应用一般应该包括三个部分:终端服务器、用户界面传输协议和客户端。其中用户界面传输协议允许客户机连接到终端服务器获取服务器上正在运行的应用程序的信息。客户端的显示与服务器端的运行界面通过用户界面传输协议进行操作数据与现实数据的交换与传输。
特性描述
Unicode兼容 16位字符集
传输协议 Tcp/ip 音频Windows server 2003以上就应该支持
用户会话客户端记住以前每个连接登陆名称。通过使
用与原来不用的会话连接活动或者断开的会
位图为改善性能在内存中缓存显示图像(可选)
缓存服务于低带宽连接(可选)
加密安全通信的三层加密
基本流程
在RDP 的应用中,由用户界面传输协议来连接客户端和服务器端,进行数据交换传输。这一连接的整个过程构成了RDP协议结构的实现。其中最重要且体现RDP 通信协议的部分是数据收取和数据操作的模块。这里包括了RDP 协议包的数据结构和加密算法,属于RDP 协议最核心的部分。
数据包头的组成
报头生成过程如上所示,
报头中包含以下功能的传输控制字符含义:序始、文始、文终、送毕、询问、确认、转义、否认、同步、块终;对于不同的通信协议报头中还会包含特定功能的传输控制字符含义。
数据的接收和发送
RDP 主程序的主循环始终与远端服务器进行数据同步,由rdp recv() 函数执行数据接收。服务器端对数据进行编码,以TCP 包形式发送给客户端。本地客户端接收TCP 包以后,经过ISO 层接收、MCS 层接收处理、安全处理、解密处理,转换成有效信息流,执行相应的操作。
对于RDP 数据的接收过程如下:
Recv从内核收到数据包====〉〉〉〉
Tcp_rcv中处理后交由====〉〉〉〉
Ios_recv_msg是一个通用函数,上层需要传送的数据都会走这个步骤;
。。。。。。
经过函数
的处理以后,整合成多点通信数据格式;
函数sec_rcv中获取密钥,进行解密。
最后由rdp_recv根据具体的内容进行显示更新。
数据的发送
RDP 程序的发送数据分为发送数据报头和发送有效数据两类。发送过程中,首先会生成一个密钥,进一步产生一系列随机参数。然后生成加密数据包,从而保证RDP 传输的安全可靠性。这些参数包括以下数据:传输长度,MCS 用户ID ,MCS 全球信道,RDP 共享ID ,压缩类型选择等。这里不把函数调用写出来了。对于数据的发送过程大概如下步骤所示:
rdp send 指令信息—产生随机数S;
rdp send() —根据S 产生传输参数,获得密钥和电子签名;
sec send() —根据密钥和电子签名进行数据加密;
mcs send( ) —获取MCS 传输参数,整合成多点通信数据格式;
iso send() —经过ISO 处理,整合成标准传输格式;
tcp send() —基于TCP 连接的数据发送。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。