rdp远程桌面服务协议概述

  • 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.mzph.cn/news/880702.shtml

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

相关文章

SpringBoot(Java)实现MQTT连接(本地Mosquitto)通讯调试

1.工作及使用背景 工作中需要跟收集各种硬件或传感器数据用于Web展示及统计计算分析,如电表、流量计、泵、控制器等物联网设备。 目前的思路及解决策略是使用力控或者杰控等组态软件实现数据的转储(也会涉及收费问题),通过组态软件…

鸿蒙开发(NEXT/API 12)【应用间消息通信】手机侧应用开发

在手机侧与穿戴设备侧构建应用到应用的通信隧道,用于收发应用自定义的报文消息以及文件。实现手机应用和穿戴设备应用间的交互,为用户提供分布式场景和体验。比如手机应用发送音频文件到穿戴设备侧应用,实现在穿戴设备侧应用上播放音乐&#…

BUG——IMX6ULL编译正点原子Linux内核报错

最初编译的是正点原子改过的Linux内核,可能是版本问题,一直报错,无法成功编译。然后换成NXP官方Linux内核6.6版本,初始编译虽然也报各种错,但都是缺少库或相关工具,全部安装后就可以成功编译出镜像了&#…

Leetcode 740. 删除并获得点数

原题链接:. - 力扣(LeetCode) 给你一个整数数组 nums ,你可以对它进行一些操作。 每次操作中,选择任意一个 nums[i] ,删除它并获得 nums[i] 的点数。之后,你必须删除 所有 等于 nums[i] - 1 和…

cscode搭建vue项目

创建前安装环境 ctrlj弹出终端 window需要管理员运行并且授权 node -v # 显示版本号,说明 node 已经装好 npm -v # 显示版本号,说明 npm 可以使用 # 安装cnpm npm install -g cnpm --registryhttps://registry.npm.taobao.org cnpm -v # 显示版本号&a…

【hot100-java】【合并两个有序链表】

记忆中,两个指针合并即可。 建立哨兵节点dum /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val val; }* ListNode(int val, ListNode next) { t…

Docker更换阿里容器镜像源

以Mac为例, 一、获取阿里容器镜像加速器地址 访问阿里云官网https://cn.aliyun.com/ 登录阿里云,没有账号就注册一个 登录完成后在搜索框搜索,容器镜像服务,并打开 点击管理控制台,进入管理控制台 左侧点击镜像加速…

【Python入门】20个Python自动化脚本,解放双手、事半功倍

如果你正在学习Python,那么你需要的话可以,点击这里👉Python重磅福利:入门&进阶全套学习资料、电子书、软件包、项目源码等等免费分享! 在当今的快节奏工作环境中,自动化不再是一种奢侈,而是…

下一代性能怪兽RTX 5090最新规格更新与Blackwell架构解析

据悉,目前各家AIC厂商已经陆续收到NVIDIA的相关资料,RTX 5090、RTX 5080已经正式进入开案阶段,也就是厂商们开始设计各自的产品方案了。不出意外,年初的CES 2025上会看到RTX 5090/5080的发布。 作为NVIDIA的新一代GPU&#xff0c…

【车联网安全】车端知识调研

一、CAN总线: 1、定义: CAN 总线相当于汽车的神经网络,连接车内各控制系统,其通信采用广播机制,各连接部件均可收发控制消息,通信效率高,可确保通信实时性。当前市场上的汽车至少拥有一个CAN网络&#xff0…

如何进行“服务器内部错误”的诊断 | OceanBase诊断案例

本文作者:任仲禹,爱可生数据库高级工程师,擅长故障分析和性能优化。 的OMS迁移工具具备丰富的功能。但在实际运维场景中,我们可能会遇到各种问题,其中“服务器内部错误”便是一个较为棘手的问题,因为界面上…

【易上手快捷开发新框架技术】nicegui标签组件lable用法庖丁解牛深度解读和示例源代码IDE运行和调试通过截图为证

传奇开心果微博文系列 序言一、标签组件lable最基本用法示例1.在网页上显示出 Hello World 的标签示例2. 使用 style 参数改变标签样式示例 二、标签组件lable更多用法示例1. 添加按钮动态修改标签文字2. 点击按钮动态改变标签内容、颜色、大小和粗细示例代码3. 添加开关组件动…

美图AI短片创作工具MOKI全面开放 支持生成配乐、细节修改

人工智能 - Ai工具集 - 集合全球ai人工智能软件的工具箱网站 美图公司近日宣布,其研发的AI短片创作工具MOKI已正式向所有用户开放。这款专注于AI短片创作的工具,提供了包括动画短片、网文短剧等多种类型视频内容的生成能力,致力于为用户带来…

linux-CMake

linux-CMake 1.安装CMake工具2.单个源文件3.多个源文件4.生成库文件5.将源文件组织到不同的目录下6.可执行文件和库文件放置到单独的目录下7.常见的命令 CMake使用。 1.安装CMake工具 sudo apt-get install cmake2.单个源文件 1.先在文件夹里创建两个文件:main.c&…

Vscode超好看的渐变主题插件

样式效果: 插件使用方法: 然后重启,之后会显示vccode损坏,不用理会,因为这个插件是更改了应用内部代码,直接不再显示即可。

cesium实战代码

代码中有一点bug还没改 cesium地球 地形+地形 <html lang="en"><head><style>.cesium-animation-rectButton .cesium-animation-buttonGlow {filter: url(#animation_blurred); }.cesium-animation-rectButton .cesium-animation-buttonMain {fil…

Win32打开UWP应用

最近无意间发现Windows里一个神奇的文件夹。 shell:appsfolder 运行打开 这个文件夹后&#xff0c;你可以看到本机安装的所有应用程序。 我觉得这个挺方便的&#xff0c;所以做了一个简单的appFolderDialog包给C#用 项目地址&#xff1a;https://github.com/TianXiaTech/App…

基于单片机的多路温度检测系统

**单片机设计介绍&#xff0c;基于单片机CAN总线的多路温度检测系统设计 文章目录 前言概要功能设计设计思路 软件设计效果图 程序设计程序 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师&#xff0c;一名热衷于单片机技术探…

总结拓展十一:S4 HANA和ECC区别

第一节 S/4 HANA系统简介 SAP系统的产品线 R/1版本——主要财务模块R/3版本——基本实现全模块ECC6.0——2005年推出&#xff08;ECC是2004年推出&#xff09;HANA——数据库产品——属于内存数据库BW on HANA——HANA与数据分析相结合 拓展&#xff1a; 数据库类型&#x…

【如何在Linux系统本地快速部署Leanote蚂蚁笔记】

文章目录 前言1. 安装Docker2. Docker本地部署Leanote蚂蚁笔记3. 安装cpolar内网穿透4. 固定Leanote蚂蚁笔记公网地址 前言 本篇文章主要介绍如何在Linux系统本地快速部署Leanote蚂蚁笔记&#xff0c;并且结合cpolar内网穿透实现公网远程访问本地笔记编辑并制作个人博客等。 …