加入收藏 | 设为首页 | 会员中心 | 我要投稿 晋中站长网 (https://www.0354zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 安全 > 正文

终端服务器演练:启动、连接和应用程序

发布时间:2022-11-04 14:02:30 所属栏目:安全 来源:未知
导读: 本文内容
本文介绍终端服务器的初始化过程,并介绍用户连接到服务器并运行应用程序时发生的情况。
适用于: Windows Server 2012 R2
原始 KB 编号: 186572
Windows 终端服务器初始化
当Wi

本文内容

本文介绍终端服务器的初始化过程,并介绍用户连接到服务器并运行应用程序时发生的情况。

适用于: Windows Server 2012 R2

原始 KB 编号: 186572

Windows 终端服务器初始化

当Windows 终端服务器启动并加载核心操作系统时,终端服务器服务 (Termsrv.exe) 将启动并创建侦听堆栈 (每个协议和传输对) 一个侦听传入连接。 为每个连接提供唯一的会话标识符或“SessionID”,以表示到终端服务器的单个会话。 会话中创建的每个进程都与关联的 SessionID“标记”,以将其命名空间与任何其他连接的命名空间区分开来。

主机 (终端服务器键盘、鼠标和视频) 会话始终是第一个加载的,并被视为特殊情况下的客户端连接和分配的 SessionID。 控制台会话以普通Windows NT系统会话开始,其中已配置Windows NT显示器、鼠标和键盘驱动程序加载。

终端服务器服务随后调用Windows NT会话管理器 (Smss.exe) ,在创建等待客户端连接的控制台会话) 后,创建两个 (默认 = 2) 空闲客户端会话 (。 若要创建空闲会话,会话管理器将执行基于Windows NT的客户端/服务器运行时子系统进程 (Csrss.exe) ,并向该进程分配新的 SessionID。 CSRSS 进程还将调用 Winlogon (Winlogon.exe) 进程以及Win32k.sys (窗口管理器和图形设备接口 - GDI) 新关联的 SessionID 下的内核模块。 修改后的Windows NT图像加载程序会通过图像标头中预定义的位将此Win32k.sys识别为 SessionSpace 可加载的映像。 然后,如果尚未加载Win32k.sys,它将图像的代码部分重新定位到物理内存中,其中包含来自该会话的虚拟内核地址空间的指针。 根据设计,如果内存中已存在,它将始终附加到以前加载的映像代码 (Win32k.sys) 。 例如,从任何活动应用程序或会话。

然后,将从新创建的 SessionSpace 可分页内核内存部分将此图像中的数据 (或非共享) 部分分配给新会话。 与控制台会话不同,终端服务器客户端会话配置为为显示、键盘和鼠标加载单独的驱动程序。

签名时发生错误 windows加密服务_服务器内容加密_jar加密混淆器

新的显示驱动程序是远程桌面协议 (RDP) 显示设备驱动程序,Tsharedd.dll。 鼠标和键盘驱动程序通过多个实例堆栈管理器(termdd.sys)与堆栈通信。 Termdd.sys会向 RDP 驱动程序发送鼠标和键盘活动的消息,Wdtshare.sys。 这些驱动程序允许远程提供 RDP 客户端会话并进行交互。 最后,终端服务器还将调用 RDP 协议的连接侦听器线程,该协议再次由多个实例堆栈管理器 (Termdd.sys) 管理,该服务器侦听 TCP 端口号 3389 上的 RDP 客户端连接。

此时,CSRSS 进程存在于其自己的 SessionID 命名空间下,其数据根据需要实例化每个进程。 从此 SessionID 中创建的任何进程都将自动在 CSRSS 进程的 SessionSpace 中执行。 这会阻止具有不同 SessionID 的进程访问其他会话的数据。

客户端连接

RDP 客户端可以在基于 WinCE) 、运行 TCP/IP-32b 的 Windows for Workgroups 3.11 或基于 Microsoft Win32 API 的平台的任何基于 Windows 的终端 (上安装并运行。 Citrix 元帧加载项支持非基于 Windows 的客户端。 Windows for Workgroups RDP 客户端的可执行文件大小约为 70 KB,使用 300 KB 工作集,并使用 100 KB 显示数据。 基于 Win32 的客户端大小约为 130 KB,使用 300 KB 工作集和 100 KB 来显示数据。

客户端将通过 TCP 端口 3389 启动到终端服务器的连接。 终端服务器 RDP 侦听器线程将检测会话请求,并创建新的 RDP 堆栈实例来处理新的会话请求。 侦听器线程将传入会话移交给新的 RDP 堆栈实例,并继续侦听 TCP 端口 3389 以进行进一步的连接尝试。 每个 RDP 堆栈都是在连接客户端会话以处理会话配置详细信息协商时创建的。 第一个详细信息是为会话建立加密级别。 终端服务器最初将支持三个加密级别:低、中、高。

低加密将仅加密从客户端发送到终端服务器的数据包。 这种“仅输入”加密是为了保护敏感数据的输入服务器内容加密,例如用户的密码。 中等加密将加密来自客户端的传出数据包,与低级别加密相同,但也会加密从终端服务器返回到客户端的所有显示数据包。 这种加密方法可保护敏感数据,因为它通过网络传输以显示在远程屏幕上。 低加密和中型加密都使用 Microsoft-RC4 算法 (修改后的 RC4 算法,并使用 40 位密钥改进性能) 。 高加密会对来自客户端的两个方向的数据包进行加密,但会使用行业标准 RC4 加密算法,再次使用 40 位密钥。 非导出版本的 Windows NT 终端服务器将提供 128 位高级 RC4 加密。

客户端和服务器之间将发生字体交换,以确定安装了哪些常用系统字体。 客户端将通知终端服务器所有已安装的系统字体,以便在 RDP 会话期间更快地呈现文本。 当终端服务器知道客户端有哪些字体可用时,可以通过将压缩字体和 Unicode 字符串(而不是较大的位图)传递给客户端来保存网络带宽。

默认情况下,所有客户端为用于缓存位图(如图标、工具栏、游标等)的位图缓存保留 1.5 MB 的内存,但不用于保存 Unicode 字符串。 缓存可通过注册表项) (,并使用最近使用的最少 (LRU) 算法进行覆盖。 终端服务器还包含缓冲区,用于启用流控制的屏幕刷新传递给客户端,而不是常量位流。 当客户端上的用户交互较高时,缓冲区每秒刷新大约 20 次。 在空闲时间或没有用户交互时,缓冲区将减慢为每秒仅刷新 10 次。 可以通过注册表调整所有这些数字。

协商会话详细信息后,此连接的服务器 RDP 堆栈实例将映射到现有的空闲 Win32k 用户会话,系统会提示用户使用Windows NT登录屏幕。 如果配置了 autologon,加密的用户名和密码将传递给终端服务器,登录将继续进行。 如果当前不存在空闲 Win32k 会话,终端服务器服务将调用会话管理器 (SMSS) 为新会话创建新的用户空间。 许多 Win32k 用户会话正在利用共享代码,在以前加载一个实例后,加载速度会明显更快。

用户键入用户名和密码后,数据包将加密发送到终端服务器。 然后,Winlogon 进程执行必要的帐户身份验证,以确保用户具有登录权限,并将用户的域和用户名传递给维护域/用户名 SessionID 列表的终端服务器服务。 例如,如果 SessionID 已与此用户关联 (,则) 存在断开连接的会话,则当前活动的会话堆栈将附加到旧会话。 然后删除用于初始登录的临时 Win32 会话。 否则,连接将正常进行,终端服务器服务将创建新的域/用户名 SessionID 映射。 如果出于某种原因,此用户有多个会话处于活动状态,则会显示会话列表,用户将决定要选择哪个会话进行重新连接。

运行应用程序

用户登录后,如果在单应用程序模式下为用户显示桌面 (或应用程序) 。 当用户选择要运行的 32 位应用程序时,鼠标命令将传递到终端服务器,终端服务器会将所选应用程序启动到新的虚拟内存空间 (2-GB 应用程序,2-GB 内核) 。 终端服务器上的所有进程将尽可能在内核和用户模式下共享代码。 为了实现进程之间的代码共享,Windows NT虚拟内存 (VM) 管理器使用写入页面保护。 当多个进程想要读取和写入相同的内存内容时,VM 管理器会将写入复制页面保护分配给内存区域。 (会话) 的进程将使用相同的内存内容,直到执行写入操作,此时 VM 管理器会将物理页帧复制到另一个位置,将进程的虚拟地址更新为指向新的页面位置,现在将页面标记为读/写。 写入复制对于在终端服务器上运行的应用程序非常有用和高效。

当基于 Win32 的应用程序(如 Microsoft Word)通过一个进程加载到物理内存中 (会话) 时,它将标记为写入复制。 当新进程 (会话) 也调用 Word 时,图像加载程序只会将新进程 (会话) 指向现有副本,因为应用程序已加载在内存中。 例如,当需要缓冲区和用户特定的数据 (保存到文件) 时,所需的页面将复制到新的物理内存位置,并标记为各个进程 (会话) 的读/写。 VM 管理器将保护此内存空间免受其他进程的保护。 但是,大多数应用程序都是可共享代码,无论运行多少次,物理内存中都只有一个代码实例。

尽管) 不需要在终端服务器环境中运行 32 位应用程序,但最好 (。 Win32) (32 位应用程序将允许共享代码,并在多用户会话中更高效地运行。 Windows NT通过为每个 Win16 应用程序创建基于 MS-DOS 的虚拟计算机 (VDM) ,允许 Win16) (16 位应用程序在 Win32 环境中运行。 所有 16 位输出都转换为 Win32 调用,执行必要的操作。 由于 Win16 应用在其自己的 VDM 中执行,因此无法在多个会话中的应用程序之间共享代码。 Win16 和 Win32 调用之间的转换也会使用系统资源。 在终端服务器环境中运行 Win16 应用程序可能会消耗比基于 Win32 的类似应用程序两倍的资源。

会话断开连接和用户注销会话断开连接

如果用户决定断开会话的连接,则进程和所有虚拟内存空间将保留并分页到物理磁盘(如果其他进程需要物理内存)。 由于终端服务器保留域/用户名及其关联 SessionID 的映射,因此当同一用户重新连接时,将加载现有会话并再次提供。 RDP 的一个额外好处是,它能够更改会话屏幕分辨率,具体取决于用户对会话的请求。 例如,假设用户以前以 800 x 600 分辨率连接到终端服务器会话并断开连接。 如果用户随后移动到仅支持 640 x 480 分辨率的不同计算机,并重新连接到现有会话,则将重新绘制桌面以支持新分辨率。

用户注销

注销通常易于实现。 用户从会话注销后,与 SessionID 关联的所有进程都将终止,并释放分配给会话的任何内存。 如果用户正在运行 32 位应用程序(如 Microsoft Word)并注销会话,则应用程序本身的代码将保留在内存中,直到最后一个用户退出应用程序为止。

(编辑:晋中站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!