rdp远程桌面服务协议概述

news2024/12/25 2:27:27
  • rdp远程桌面服务协议概述
    • 什么是远程桌面服务
    • 远程桌面服务的通信过程及功能
      • 建立连接
      • 资源重定向与用户体验
      • 断开连接
    • 远程桌面服务的协议架构
      • 核心协议与基础通信
      • 虚拟通道与扩展协议
      • 协议协作与层次划分
      • 协议的可扩展性
      • 协议扩展与性能优化
    • 总结
    • 参考

rdp远程桌面服务协议概述

对于大多数用户来说,使用远程桌面或许只是通过 Windows 上的“远程桌面连接”(mstsc.exe)登录到另一台计算机,简单方便。然而,在这一看似简单的背后,却隐藏着一套复杂的远程桌面服务协议体系(Remote Desktop Services,RDS)。这一体系涉及多种协议的协作与通信,确保了远程桌面连接的顺畅、安全。今天,我们将深入了解这些协议的工作原理,揭示其核心架构,看看它们如何让远程访问成为可能。

什么是远程桌面服务

远程桌面服务是一组协议,支持用户通过网络访问远程服务器上的资源。它允许用户在本地设备上查看并操作远程的桌面或应用程序,哪怕这些应用实际上并没有安装在本地机器上。这种技术在企业中得到了广泛应用,帮助用户远程访问工作站、服务器或虚拟机,极大地提升了远程办公和跨部门协作的效率。

rdp work

从用户角度来看,远程桌面服务的体验非常直观:他们看到的是自己电脑上的一个“远程桌面”,但所有的计算和数据处理实际上发生在远程的服务器上。远程桌面服务远不止是简单的客户端和服务器的连接。它依靠多层协议来保障数据传输的安全、稳定和高效。

远程桌面服务的通信过程及功能

在讨论远程桌面服务的通信过程之前,我们先来简单了解 RDP 协议栈的结构。RDP 协议栈由多个协议层组成,受到 OSI 模型的影响,每一层负责特定的功能。

  • TPKT层: 这一层提供了标准的封装格式,主要将高层协议的数据打包,以便通过较低层的传输协议传输。
  • X.224层: 属于会话层,负责远程连接的建立、维护和终止,确保会话的正常进行。
  • MCS(多通道层):负责管理多个虚拟通道,允许 RDP 在同一连接上传输不同类型的数据。
  • RDP层:处于协议栈的最上层,处理图形显示、输入输出操作以及资源重定向等核心功能。
protocol stack

虽然协议栈图中只展示了 TCP,但实际上 RDP 可以通过配置来选择使用 TCP 或者 UDP 进行数据传输。了解了 RDP 的协议栈结构后,我们可以进一步探讨 RDP 的通信过程及其各层如何协作完成远程桌面的功能。

建立连接

RDP 连接的目标是让客户端和服务器交换设置,并确定连接期间使用的通用配置,以确保能够顺畅传输和处理输入、图形以及其他数据。

RDP 连接顺序如下图所示,所有消息交换都是严格按顺序进行的1

connection sequence

RDP连接的具体步骤如下:

  • 连接建立:客户端发送 X.224 连接请求,服务器确认后进行连接建立,后续数据都会封装在 X.224 数据单元中传输。
  • 基本设置交换:通过 MCS 协议交换基本的连接设置,包括核心数据、安全设置、网络数据等。双方商定会话的共同配置。
  • 通道连接:客户端通过 MCS 连接虚拟通道和用户通道,确保输入/输出数据的传输。
  • 安全启动:如果启用 RDP 标准安全机制,客户端会生成加密的随机数,服务器使用公钥解密,双方生成会话密钥,后续数据加密传输。
    这里要注意一点,RDP 的内置安全机制早于 TLS 被引入,主要用于满足早期网络环境中的安全需求。当时,RDP 部署广泛,但并不是所有网络环境都具备 TLS 支持,因此 RDP 内置了自己的安全机制来确保基本的数据加密。TLS 引入后,提供了更强的安全性,允许对 RDP 会话的端到端加密和验证,但旧的 RDP 安全机制依然保留,用于没有 TLS 的环境中使用。因此,启用 TLS 是提升 RDP 安全性的标准做法。
  • 安全设置交换:客户端发送用户名、密码等信息进行身份验证。
  • 许可验证:客户端与服务器交换许可信息,确保客户端具有合法使用 RDP 服务的授权。许可验证与身份验证不同,它专门用于检查客户端是否有权访问 RDP 服务。
  • 能力交换:服务器发送支持的功能集,客户端回应其支持的功能,协商双方可用的功能。常见的能力包括:
    图形处理能力(如是否支持 RemoteFX 图形加速)
    多媒体重定向(如音频、视频流)
    设备重定向(如剪贴板、打印机、USB设备)
    带宽优化功能(如适应低带宽网络的图像压缩)
    举例来说,如果用户需要使用本地打印机重定向,能力交换时服务器需要告知支持该功能,客户端则会启用相应的能力。
  • 连接最终化:客户端和服务器同步最后的设置,确保输入输出的正常工作,并完成字体等资源的传输,之后连接正式进入工作状态。

资源重定向与用户体验

远程桌面服务不仅提供远程操作服务器的功能,还可以实现本地资源与远程应用的无缝集成。例如,用户能够在远程应用中访问本地的文件、使用本地打印机打印文件,甚至通过本地智能卡进行身份验证。这些资源重定向功能极大提升了用户体验,让远程办公变得更为便捷。具体的重定向机制和其实现方式将在下一个部分详细描述。

断开连接

远程桌面服务提供了灵活的会话管理机制,使用户能够根据需求选择不同的断开方式:

  • 主动注销(Logoff):用户主动结束远程会话时,所有运行中的应用程序会关闭,系统会清除会话状态。这种方式适用于用户完成所有工作后,确保服务器资源释放并关闭会话。
  • 断开(Disconnect):在断开连接时,远程会话并不会关闭,应用程序仍在服务器上运行,用户可以稍后重新连接并恢复当前会话。这对于暂时离开但稍后继续工作非常实用。
  • 超时机制:如果用户长时间没有操作或者网络中断,服务器可以根据配置自动断开连接或强制注销用户。超时机制的设计可以防止资源被长时间占用,确保服务器的稳定运行。

远程桌面服务的协议架构

RDP 是一个复杂的协议栈,它结合多个协议层次,以保证客户端和服务器之间的高效通信和多功能支持。RDP 的设计高度模块化,允许不同的协议组件协同工作,支持远程桌面功能,如图形处理、资源重定向和安全加密。

官方文档中提供了一个RDP协议家族的"图谱关系",每个方框代表一个核心协议或其扩展协议:

rdp protocol relationship

核心协议与基础通信

RDP 的核心协议是 MS-RDPBCGR,它负责管理基础连接和数据传输,是整个 RPD 体系的基础。无论是建立会话,还是传输鼠标、键盘输入或图形数据,都是通过这个协议完成的。MS-RDPBCGR 依赖于 TCP 或 UDP 传输层,同时借助 X.224 会话管理协议和 MCS(多通道层)来处理不同类型的数据流。

工作机制:

  • 会话管理(X.224):控制客户端和服务器间的连接状态,负责会话的建立、维护和关闭。
  • MCS(多通道层):在同一连接中管理多个虚拟通道,确保图形、输入和重定向数据流不会互相干扰。

虚拟通道与扩展协议

RDP 的虚拟通道机制可以为特定任务提供扩展支持,这些通道分为静态和动态两类:

  • 静态虚拟通道:在会话建立时就已存在,用于常规功能的数据传输,如:

    • 剪贴板重定向(MS-RDPECLIP):支持客户端与服务器之间的剪贴板共享。
    • 文件系统重定向(MS-RDPEFS):允许客户端访问服务器上的文件,反之亦然。
    • 打印机和USB设备重定向(MS-RDPEPC、MS-RDPEUSB):使远程服务器能够访问客户端的本地设备,如打印机和 USB 外设。
  • 动态虚拟通道:在会话中按需创建,通常用于高带宽或特定用途的数据传输。例如:

    • 图形数据优化(MS-RDPEGFX):用于图形密集型应用,确保低带宽条件下的图像压缩与优化传输。
    • 多媒体重定向(MS-RDPEMT):用于传输音频和视频流,保证多媒体数据的流畅播放。

虚拟通道工作机制:
虚拟通道是 RDP 协议扩展的关键,通过它们,客户端与服务器之间可以独立传输特定类型的数据,而不会干扰核心会话的正常工作。静态虚拟通道在连接建立时固定存在,而动态虚拟通道则根据需要动态创建,可以在会话过程中按需打开或关闭,具有更高的灵活性。

协议协作与层次划分

RDP 协议体系中的不同协议层次协同工作,实现了远程桌面服务的复杂功能。这些协议之间的关系可以概括为:核心协议负责会话建立和管理,扩展协议通过虚拟通道来实现更丰富的功能,如远程文件系统访问、外设重定向和高效的图形处理。

举例:
当用户在远程桌面上执行文件传输时,文件重定向功能(MS-RDPEFS)通过静态虚拟通道传输数据,而如果用户同时需要使用高性能的图形应用(如 CAD),图形数据则通过 MS-RDPEGFX 进行压缩并通过动态虚拟通道传输。

协议的可扩展性

RDP 协议的设计非常灵活,能够根据网络状况和用户需求动态调整。以下是 RDP 协议的可扩展性特征:

  • 传输层的灵活性:RDP 可以使用 TCP 或 UDP 作为传输层协议,基于网络状况自动选择更合适的传输方式。如果网络状况较差,可以切换到更加高效的多传输通道模式,减少延迟并提升用户体验。
  • 动态虚拟通道:允许在会话期间创建新的通道,用于支持特定数据类型的传输,适应不同应用需求。

RDP 的可扩展性确保了它能够在不同的场景下高效运行,无论是低带宽的办公环境,还是高性能要求的图形密集型应用。

协议扩展与性能优化

RDP 不仅能处理基础的远程桌面任务,还通过扩展协议进行性能优化。例如:

  • RemoteFX 图形加速:在低带宽条件下通过压缩和优化图形数据,确保用户获得高质量的图形体验。
  • 多媒体重定向:通过将音频和视频流直接传输到客户端,实现流畅的多媒体播放,减轻服务器的处理压力。

这些扩展功能使得 RDP 不仅能够处理基础的远程桌面任务,还能应对诸如多媒体播放、实时图形渲染等高性能需求。

总结

在现代工作环境中,远程桌面和远程应用的需求日益增长,市场上也存在多种解决方案,如 VNC、TeamViewer 和 AnyDesk 等,以及不同的协议支持。然而,Windows 平台原生支持的 RDP 却具有一些独特优势:它紧密集成于 Windows 操作系统中,提供了更高的兼容性和安全性,同时支持多种复杂功能,如资源重定向和高效的图形处理,几乎实现了开箱即用。

通过本文的梳理,读者可以对 RDP 的核心架构及其工作原理有一个基本的认识。这不仅帮助理解 RDP 的设计思路和实现机制,也为后续内容的深入探讨奠定了基础,包括 RDP 如何支持将单个应用映射到客户端,以及如何实现客户端文件系统的重定向。接下来,我将继续探索。

参考

  1. Remote Desktop Services Protocols Overview
  1. Remote Desktop Services (Remote Desktop Services)
  1. Understanding the Remote Desktop Protocol (RDP)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2181022.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2024重生之回溯数据结构与算法系列学习(10)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】

欢迎各位彦祖与热巴畅游本人专栏与博客 你的三连是我最大的动力 以下图片仅代表专栏特色 专栏跑道一 ➡️ MYSQL REDIS Advance operation 专栏跑道二➡️ 24 Network Security -LJS ​ ​ ​ 专栏跑道三 ➡️HCIP;H3C-SE;CCIP——LJS[华为、华三、思科高级网络]…

[Uninstall] 软件彻底卸载工具的下载及详细安装使用过程(附有下载文件)

一般软件安装的有问题,或者想重新安装其他版本就需要将原来的版本删除干净,但常常删不干净,本文分享一个软件彻底卸载工具,完成彻底卸载软件的工作 下载链接在文末 下载压缩包后解压 !!安装路径不要有中文…

计算机毕业设计 基于Python高校岗位招聘和分析平台的设计与实现 Python+Django+Vue 前后端分离 附源码 讲解 文档

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点…

一篇文章快速学会docker容器技术

目录 一、Docker简介及部署方法 1.1Docker简介 1.1.1什么是docker 1.1.2 docker在企业中的应用场景 1.1.3 docker与虚拟化的对比 1.1.4 docker的优势 二 、部署docker 2.1 容器工作方法 2.2 部署第一个容器 2.2.1 配置软件仓库 2.2.2 安装docker-ce并启动服务 2.2.…

YOLOv8改进 | 主干篇,YOLOv8改进主干网络为华为的轻量化架构GhostNetV1

摘要 摘要:将卷积神经网络(CNN)部署在嵌入式设备上是困难的,因为嵌入式设备的内存和计算资源有限。特征图的冗余是成功的 CNN 的一个重要特征,但在神经网络架构设计中很少被研究。作者提出了一种新颖的 Ghost 模块,用于通过廉价操作生成更多的特征图。基于一组内在特征图…

【C++算法】8.双指针_三数之和

文章目录 题目链接:题目描述:解法C 算法代码:图解 题目链接: 15.三数之和 题目描述: 解法 解法一:排序暴力枚举利用set去重O(n3) 例如nums[-1,0,1,2,-1&…

DolphinScheduler 资源中心无法上传大文件

服务:dolphinscheduler 版本:v3.16 问题描述:资源中心-文件管理中使用文件上传是出现中断或上传失败 排除思路: 测试小文件或其他类型文件时是否正常;F12查看接口调用成功以及失败时的对比,发现接口调用…

智慧应急指挥平台1+6+N体系建设方案

1. 智慧应急指挥平台概述 智慧应急指挥平台是一个综合性的应急响应体系,旨在通过高效的信息整合和通信技术,提升应急管理的智能化水平。该平台采用“16N”的体系结构,集成了智慧城市、智慧园区、智慧矿山等多个智慧应用,并依托三…

位运算(3)_判定字符是否唯一_面试题

个人主页:C忠实粉丝 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 C忠实粉丝 原创 位运算(3)_判定字符是否唯一_面试题 收录于专栏【经典算法练习】 本专栏旨在分享学习算法的一点学习笔记,欢迎大家在评论区交流讨论💌 目…

[Bandzip] 文件解压工具的下载及详细安装使用过程(附有下载文件)

文件解压工具,避免解压出错,双击即可解压文件 下载链接在文末 下载压缩包后解压 !!安装路径不要有中文 解压得到文件 双击exe文件 同意并安装 安装完成后,点击关闭, 右键点击需要解压的压缩包&#xff0…

Postman另存的curl脚本调试运行

文章目录 背景1、修改header 标识2、修改post请求方式3、修改单引号为双引号4、整体修改去掉多余字符curl 一行显示 5、执行结果 背景 在日常项目中调用外部服务接口,经常使用到Postman、ApiPost等工具调用,在没有工具的时候,可以使用 curl …

TI DSP TMS320F280025 Note14:模数转换器ADC原理分析与应用

TMS320F280025 模数转换器ADC原理分析与应用 ` 文章目录 TMS320F280025 模数转换器ADC原理分析与应用逐次比较型ADC和双积分型ADC工作原理逐次比较型 ADC双积分型 ADC280025ADCADC原理分析ADC时钟SOCSOC内部原理ADC触发方式ADC采集(采样和保持)窗口通道寄生电容基准电压发生器模…

心理咨询预约管理系统(含源码+sql+视频导入教程)

👉文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1 、功能描述 心理咨询预约管理系统2拥有三个角色: 管理员端 首页 系统近况(咨询师和注册来访者数量,预约数量) 显示最新的消息、留言和公告&#xff0…

回归预测 | Matlab基于POA-SVR鹈鹕算法优化支持向量机的数据多输入单输出回归预测

回归预测 | Matlab基于POA-SVR鹈鹕算法优化支持向量机的数据多输入单输出回归预测 目录 回归预测 | Matlab基于POA-SVR鹈鹕算法优化支持向量机的数据多输入单输出回归预测预测效果基本描述程序设计参考资料 预测效果 基本描述 1.Matlab基于POA-SVR鹈鹕算法优化支持向量机的数据…

rk3399开发环境的介绍

零. 前言 由于Bluez的介绍文档有限,以及对Linux 系统/驱动概念、D-Bus 通信和蓝牙协议都有要求,加上网络上其实没有一个完整的介绍Bluez系列的文档,所以不管是蓝牙初学者还是蓝牙从业人员,都有不小的难度,学习曲线也相…

中信银行西安分行:“极地来信”沉浸展西安站正式启幕

9月7日,中信银行“极地来信”跨界整合品牌线下巡展西安站在MOMOPARK艺术购物中心正式启幕。本次活动聚焦中国极地考察的冰路征程,以沉浸式展览与艺术创意传递中国极地考察“向南而行”的无畏精神,并将极地考察的探索之路与金融创新的实践之路…

智慧平台 PersonalDayInOutSchoolData SQL注入漏洞

漏洞描述 EDU 某智慧平台 PersonalDayInOutSchoolData 接口存在SQL注入漏洞,未经身份验证的远程攻击者除了可以利用 SQL 注入漏洞获取数据库中的信息(例如,管理员后台密码、站点的用户个人信息)之外,甚至在高权限的情…

OpenCL 学习(1)---- OpenCL 基本概念

目录 Overview异构并行计算OpenCL 架构平台模型执行模型OpenCL 上下文OpenCL 命令队列内核执行编程模型存储器模型存储器对象共享虚拟存储器 Overview OpenCL(Open Computing Language,开放计算语言) 最早由苹果公司提交草案,并于 AMD, IBM ,intel 和 n…

python14_运算符复合赋值

复合赋值缩写 A 7 B 3 C "hello" D "world" E True F False# 加法赋值运算符,7 3 10 def add1(a, b):a b # 等同于a a breturn a# 字符串加法赋值运算符,hello world helloworld def add2(c, d):c d # 等同于字符串拼接,c c dreturn c# …

尚乐代驾重做

微信小程序客户端登陆 一 总体流程 前段携带code发送请求给后端,后端利用微信小程序相关api解析这个code,获取能唯一认证登陆身份的openid。接着先到数据库查询是否有这个id,如果没有就保存用户信息实现注册,并返回token到前端…