RDPBCGR协议详解——上
一、引言
这篇文章主要参考英文版RDPBCGR协议,可以认为是一篇翻译文章,但我这里并不会简单地翻译那篇文章,最主要的是提取里面重要的部分,加以整理,分析和讲解。并在必要的地方添加FreeRDP的代码,结合代码和文档一起分析。需要声明的是,代码均取自开源FreeRDP,不会使用公司内部代码及任何商业机密。
二、基本名词及简写约定
Remote Desktop Protocol(RDP) ——> 远程桌面连接协议
Basic Connectivity and Graphics Remoting(BCGR) ——> 基本链接和图形远程访问
Generic Conference Control(GCC) ——> 通用会议控制
Transport Layer Security(TLS)——> 传输层加密
Multipoint Communication Service(MCS) ——> 多点通信服务
Basic Encoding Rules (BER) ——> 基本编码规则
binary large object (BLOB) ——> 二进制大对象
certification authority (CA) ——> 证书授权
input method editor (IME) ——> 输入方法编辑器
Message Authentication Code (MAC) ——> 消息授权码
Network Level Authentication (NLA) ——> 网络级授权
Packed Encoding Rules (PER) ——> 封装式编码规则
protocol data unit (PDU) ——> 协议数据单元
Transmission Control Protocol (TCP) ——> 传输控制协议
三、消息流
上图是RDP传输基本流程,可以归为以下几个过程:
1. Connection Inotiation
2. Basic Settings Exchange
3.Channel Connection
4.RDP Security Commencement
5.Secure Settings Exchange
6.Optional Connect-Time Auto-Detection
7.Licensing
8.Optional Multitransport Bootstrapping
9.Capabilities Exchange
10. Connection Finalization
逐个分析上面流程
1. 连接初始化,客户端发送一个初始化请求给服务端,同时服务端回复一个初始化应答。这个连接请求格式遵循X224协议,如下:
这一过程涉及到两个方面的pdu。一个是客户端连接请求pdu,另一个是客户端和服务器端的协商pdu。首先,客户端发送一个连接请求给服务端,表示有客户端需要发起会话,这个时候服务端需要确认新接收的会话请求是否有效,如果有效那么才会作出连接响应,如果服务端已经存在会话,则还需要向之前会话推送授权pdu,只有在之前会话同意授权的情况下才会作出连接响应。其中具体的PDU格式需要查看有关协议文档,这个待以后的文章中详细讨论,这里不展开。
2. 基本设置交换,使用MCS连接初始化及应答PDU,客户端发送MSC初始化请求给服务端,即MCS连接初始化PDU,这里面包含有GCC会议新增请求。服务端收到这个请求后发送MSC应答PDU给客户端,这一过程完成。
MCS连接请求报文
MCS应答报文
基本设置交换pdu包含客户端所需的最为基本的设置信息,比方客户端的核心数据(client core data)、客户端的安全数据(client security data)、客户端的网络数据(client network data)以及各种其它的通道相关的数据信息。通常这些数据需要呈报给服务端,服务端根据这些数据作出相应的配置选择。
请求pdu格式如下:
应答pdu格式如下:
具体的一些数据本身也是有格式的,这里就不展开讲了。
3. 通道连接,首先客户端向服务端发送一个MCS创建域请求PDU,同时发送一个MCS附着用户请求。通道连接分成5个步骤。分别是建立域请求、用户访问请求、用户访问确认、通道加入请求和通道加入确认。这几个步骤中请求pdu是由客户端发给服务端,确认pdu是服务端发给客户端。它们的pdu格式相同,只是相应的数据有所区别。
比方建立域请求对应的是mcsEDrq而用户访问mcsAUrq。
通道连接,顾名思义就是为rdp建立各种会话所需的协议通道。这是相当重要的,因为一些基本的功能是一定需要通道来支持的,比方智能卡(smartcard)就需要智能卡扩展通道,如果在起初就没有建立相应的通道,那么这种设备是不能使用的。
上一篇: 国产达梦数据库学习笔记(一):NeoKylin7.0安装及配置与常用基础命令
下一篇: 广告基础术语