整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

一款HTML5的远程桌面网关

ext Terminal是使用Golang和React开发的一款HTML5的远程桌面网关,具有小巧、易安装、易使用、资源占用小的特点,支持RDP、SSH、VNC和Telnet协议的连接和管理。

Next Terminal基于 Apache Guacamole 开发,使用到了guacd服务。

目前支持的功能有:

  • 授权凭证管理
  • 资产管理(支持RDP、SSH、VNC、TELNET协议)
  • 指令管理
  • 批量执行命令
  • 在线会话管理(监控、强制断开)
  • 离线会话管理(查看录屏)
  • 双因素认证 感谢 naiba 贡献
  • 资产标签
  • 资产授权
  • 用户分组

默认账号密码为 admin/admin

相关截图

资源占用截图

资产管理

rdp

vnc

ssh

批量执行命令

项目地址:

https://gitee.com/dushixiang/next-terminal

018年世界杯都来了,你还在看几年前的云桌面传输协议文章吗?来看新鲜出炉的!

上期我们谈到了影响云桌面性能的三个重要因素是啥?分别是服务器配置、网络和桌面传输协议。其中,桌面传输协议是各云桌面厂家的技术核心。本期我们来谈谈全球几大主流桌面传输协议。

那么,桌面传输协议是啥DongDong呢?

桌面传输协议,指的是一组特殊的数据传输规则,可以使云主机和云终端之间的数据有序并高效传输,从而达到“丰富而流畅”的用户体验。简单来说,就是一套踢球规则,每个球员(每种数据)都有自己的路径,并且球员之间要配合好,才能快速传球传球进球!

戈洛文45度角斜传到后点,无人盯防的加津斯基头球攻门得手,此球也是本届2018世界杯的首粒进球

云主机和云终端之间传输的数据包括视频、音频、图像、键盘鼠标输入以及其它外设输入。需要注意的是,桌面传输协议应用于虚拟云桌面(VDI)和共享云桌面是不同的。在其它条件相同时,使用相同的桌面传输协议在共享云桌面中,其传输速度会比虚拟云桌面(VDI)要快。毕竟球场不同(因为虚拟云桌面VDI多了虚拟层),路程远了,传球时间自然也就长了。

影响桌面传输协议的性能有哪些因素呢?

1. 图形数据处理方式

目前主要有两种:

  • 基于位图数据传输是在服务器端对图形数据进行渲染,然后再进行压缩传输;缺点是在高分辨率下其文字和图片边缘会有锯齿,如深信服的SRAP协议。
  • 基于矢图数据传输则是在客户端上拆分多种格式,然后传送到客户端上再渲染;特点是,无论放大还是缩小都清晰。矢图数据传输方式带宽占用比位图的更低。

2. 传输层协议

目前主要有两种:

  • TCP协议主要用来传输对安全性要求较高的数据,比如打印机数据、用户操作数据等,但相对于UDP传输要慢;
  • UDP协议则是用于一些对完全性要求不高的数据传输。虽然快,但会丢帧(Frame)。比如看视频时,中间可能会有几个画面跳过了。如NComputing的UXP协议的丢帧现象就比较严重。

3. 压缩和缓存技术

压缩技术有两种:有损压缩和无损压缩。根据字面意思也很好理解,有损压缩就是传输的数据有损坏,而无损压缩则是数据是完整没有损坏的。两者最直观的区别就是图像数据的传输(如下图):经过无损压缩的图像依然清晰,而经过有损压缩后的图像则模糊不清。

来源:Google

有损压缩除非和终端渲染技术(client-side rendering)搭配使用,才可以保证图像清晰;对于无损压缩,如果数据传输量大,也会出现不流畅的现象。如RDP协议属于无损压缩,但是流畅度不佳。而微软后期推出RemoteFX技术使得图像加速,这时流畅了,但画质又有损耗。因此,两者中间得有个取舍。优质的压缩算法需要权衡二者,这样不仅可以保证图像质量清晰,还可以有效减少数据传输量,从而降低对带宽的要求。

缓存技术是保存经常使用的显示元素,如字体和图位等,如果需要就直接获取,而无需向服务器发送重复请求,以提供高效的桌面传输性能。

4. 外设支持技术

事实上,各协议都提供了对虚拟多通道支持的技术。简单来说,桌面传输协议为了保证外设设备正常运行,就要为每种设备建立一条道路,以保证其正常有序通行。

听不懂的,稍安勿躁。小微换个说法跟大家解释:

高效的桌面传输协议的性能可以从资源占用(CPU, 网络带宽),桌面流畅度(使用起来卡不卡),丢帧率(部分画面是否丢失),画质(画面清晰度和色彩还原度),外设支持(兼容性,识别速度,读写速度)等几个方面来测试和评价。至于其中的原理,我们暂且不用深究。

目前全球主流的桌面传输协议有

1.RDP协议

1.1 历史由来

RDP(Remote Desktop Protocol,远程桌面协议)是基于ITU-T(国际电信联盟)的T.120协议中的T.128应用程序共享协议(又称为T.share),随后由英国软件公司DataConnection Limited优化成RDP的雏形。此时,微软看到RDP是块肥肉,果断收购了DataConnection Limited,进而把RDP变成自己的囊中物(知识产权)。

RDP协议的第一个版本是RDP 4.0,当时随同“Terminal Services”出现在Windows NT 4.0 Server、Terminal Server Edition。事实上,这个版本不是微软自己开发的,而是通过Citrix开发的。当时微软对外宣称是“共同开发”。具体过程是这样的:

  • 1992年,Citrix在Windows NT Server源代码上创建Winframe,其主要目的是在Windows NT 上添加多用户功能;
  • 1995年,Winframe正式发布,将Windows NT 3.5扩展成多用户系统,从而使Windows NT服务器有了连接终端的能力;
  • 1998年,微软推出了Windows NT Server 4.0 Terminal Server Edition, 第一个RDP版本(4.0)随同走向市场。

在RDP4.0版本的开发期间,微软想自己单干,于是决定不再授予Citrix公司Windows NT 4.0的源代码开发的权利,还宣称要开发微软版本Winframe,并且要求Citrix将MultiWin技术许可给微软。微软想“过桥抽板”,Citrix当然不同意。于是,两位行业大佬开始谈判。谈判的结果是,微软同意在Windows NT Server 4.0的RDP服务命名为Citrix MetaFrame,并且包含在Windows NT 4.0终端服务中的Citrix提供的DLL仍然带有Citrix版权,而不是微软版权。同时,Citrix也答应不提供竞争产品,但保留向微软产品出售附加产品的权利。这种关系一直持续至今。

发展至今,已经有10个版本了。当前主要使用的版本有6.1(Windows Server 2008/Windows Vista SP1/Windows XP SP3),7.0(Windows Server 2008 R2/Windows 7),其中7.0版本增加了Remote FX功能,用于提升高清图像的渲染效果,如2D、3D图像。

1.2 原理及特点

RDP 10.0 是基于TCP/UDP协议的,其桌面传输速度有了很大的提升;此外,在视频方面,已经是AVC 4:4:4模式了,意味着显示效果非常接近PC机。不过其宽带占用高于PCoIP和HDX。RDP协议只能支持Windows和Mac平台。

在云桌面领域中,RDP协议主要应用于共享云桌面方案(基于多用户操作系统,实现多个用户共享一套系统和软件,每个用户独立使用,互不干扰),如Centerm(升腾)的C75零客户机就是搭配使用RDP8.0协议。但需要注意的是,RDP协议并非专门为多用户共享环境开发的,它的应用范围很广,所以RDP协议在云桌面中的性能并不能算“优”。因为RDP协议在多用户同时运行下,其桌面流畅度和响应度会降低,而且画质也会下降。

目前市面上专门为多用户共享环境开发的云桌面协议有NComputing的UXP(User eXtension Protocol,用户扩展协议)和vCloudPoint的DDP(Dynamic Desktop Protocol,动态桌面协议)。

vCloudPoint的DDP协议是混合使用了TCP和RDP协议,针对不同的画面场景(如文字、网页浏览、视频等)进行优化而开发的,适用于共享环境下的桌面传输协议。DDP协议除了使用独特的视频传输技术外,还使用了H.264,以视频流的方式传输整个桌面,其性能体现在一台i7电脑可以支持30个1080P高清视频超流畅播放。(好东西,不怕比较哈 )此外,IP虚拟化技术还可以允许每个用户桌面都使用自己的IP地址,解决共享环境下部分基于独立IP框架软件的兼容性问题。

DDP视频性能:在腾讯视频,输入“微云点云桌面1080p高清视频播放”

2.PCoIP协议

2.1 历史由来

PCoIP (PC over IP) 协议是由加拿大Teradici公司开发的远程显示协议。2008年,VMware宣布和Teradici共同开发PCoIP协议,以提高桌面虚拟化的性能。随后,VMware推出了使用了PCoIP协议的云桌面产品VMware Horizon View,这个举动直接促进PCoIP协议的商用化。2013年,亚马逊也在AWS Amazon Workspaces产品中也使用PCoIP协议。 在云桌面领域中,VMware的名气远远大于Teradici。所以大伙们都习惯说“VMware的PCoIP”。

需要注意的是,Teradici开发PCoIP协议的最初目的是应用于瘦客户机和一些硬件的图形加速,而不是桌面虚拟化,因此,PCoIP协议在应用于虚拟化软件上就显得心有余而力不足。为了弥补这个不足,VMware在View产品中增加对微软RDP协议的支持,即用户如果在使用桌面虚拟化时发现PCoIP协议无法实现的一些基础功能时,例如外设的重定向功能,可以在注销当前通过PCoIP登录的桌面,然后再选择微软RDP方式登录。让用户揪心的是,当然桌面的软件状态全部没有了,用户体验大打折扣;为彻底解决View产品在核心技术上依赖于其他公司的困境,VMware试图开发自己的协议Blast。最初是在2011年VMworld2011大会上宣布AppBlast项目。直到2016年,Blast协议才随同VMWARE HORIZON 7正式发布,不过目前Blast只能在Html5上访问。更多功能还待开发。

2.2 原理及特点

PCoIP协议基于UDP协议,其传输效率会比RDP协议更快。PCoIP协议灵活支持多种平台,如Windows, Linux, Mac, Android, iOS, Chrome, and web。目前最新版本是随同VMware Horizon 6.0发布的,带宽占用低,图像质量好。而在VMware Horizon 7.0,Blast协议出来了。这个是VMware自己独立研发的一款协议,不过目前只能支持HTMI访问,其特点是图像性能非常优(Blast默认H.264)。虽然目前还没推出视频AVC 4:4:4模式,但图像显示效果已经非常棒了。在介绍完Citrix的ICA/HDX之后,小微会给大家看两个视频体验。

3.ICA/HDX协议

ICA(Independent Computing Architecture)是Citrix公司自己开发的桌面传输协议。Citrix是一直专注于桌面虚拟化。所以非常有实力。

ICA协议基于UXP协议,其特点是平台无关性和节省带宽,换句话说,ICA协议几乎可以支持所有桌面操作系统和对带宽占用节省最低。目前使用ICA协议的产品有Citrix's WinFrame, Citrix XenApp , 和Citrix XenDesktop。ICA协议能够支持音频、视频和多媒体带宽控制,在视频观看、Flash播放、3D设计等应用上,其用户体验会很流畅。

2009年,Citrix在发布XenDesktop 3.0时推出HDX技术。HDX技术是基于ICA协议开发的,同时包含其它子系列协议,并且还增加了提高了多媒体、语音、视频和3D图形性能的功能。

来到这里,小微把国外一份对于RDP10.0,Blast和ICA/HDX三种协议的视频效果测试报告在这里简单展示一下(报告链接在参考文章的第13篇)。

  • 视频:RDP10.0版本-4:4:4模式视频测试+HDX和Blast协议视频测试

<script src="https://lf6-cdn-tos.bytescm.com/obj/cdn-static-resource/tt_player/tt.player.js?v=20160723"></script>

报告结论:HDX的性能是最棒的,无论是视频显示效果,还是网络带宽占用。其次是Blast,最后是RDP10.0。不过,整体来说,三种协议都是非常不错的。

不过需要注意的是,这份报告只是单纯比较三种协议的视频性能,而并没有测试N多个用户同时跑视频时的效果。从小微的N次测试来看,当服务器连接的终端数量超过15个时,RDP10.0会耗用大量的服务器资源。

4.SPICE协议

SIPCE(Simple Protocol for Independent Computing Environments)于2007年由Qumranet公司最先开发,后来Red Hat公司把Qumranet收购并开源了。SPICE协议的最大的特点是开源,国内很多云桌面产品都是直接在SPICE协议上做文章的。由于SPICE协议有太多版本了,在这里就不列举了。

不过,由于底层是固定了,所以可优化的程度不高。因此,基于SPICE协议开发的虚拟云桌面(VDI)方案性能不佳,带宽占用高、图像显示不优仍是其痛点。虽然国人的技术不断更新,方案也不断改善,但协议决定了其性能的上限。奈何?没错,SPICE协议主要看气质!

最后,小微总结一下几大协议的区别:

① RDP/Remote FX只能在Windows和Mac平台使用,而ICA/HDX 可以在 Windows, Mac, Linux, Blackberry, iOS, Android等多平台使用;

② RDP/Remote FX需要远程主机使用图形处理单元进行位图编码,而PCoIP直接使用服务器CPU,所以PCoIP比RDP/RemoteFX的传输效率要高;

③ PCoIP可以支持RDP;

④ 只有SPICE协议是开源的,提供平台给大家分吃云桌面蛋糕。

⑤ ICA/HDX协议和PCoIP协议的授权费用不菲,大多用于虚拟云桌面(VDI)中;而RDP/RemoteFX协议较为划算,但总体性能一般。至于SPICE协议,就的去自己研究了。因为实在是太多版本了!!

至于哪个好?

小微建议小伙伴们通过测试自己找答案。可以通过视频播放、画面显示质量、用户体验度、外设兼容等去判断。

不过,小微提醒大家,并不是性能高就适合自己的。毕竟,价格和应用需求也是考虑的重要因素。如果用于普通办公和需要标准化教学的普教电脑机房,不妨考虑vCloudPoint微云点的共享云桌面;)

欢迎关注下期话题:

VDI,VOI,IDV,共享云桌面的区别。

开始前准备:

  1. 开启一台以Amazon Linux 2为系统的AWS ec2机器C;
  2. 通过秘钥的方式SSH连接到开启的机器C。

主要步骤:

  1. 安装guacamole-server;
  2. 安装Tomcat;
  3. 安装guacamole-client;
  4. 安装rdp。

Guacamole简介

Guacamole是无客户端远程桌面网关。它支持众多标准协议,例如VNC,RDP和SSH。它不需要插件或客户端软件。得益于HTML5,在服务器上安装了Guacamole之后,只需使用Web浏览器即可访问远程桌面。


Guacamole架构

安装guacamole-server

  1. 安装依赖包

为了保证guacamole-server正常安装,并且体验更多功能,我们尽可能多的安装以下依赖包:

sudo yum install cairo-devel libjpeg-turbo-devel libpng-devel uuid-devel

sudo yum install libvncserver-devel pulseaudio-libs-devel 

sudo yum install freerdp-devel

sudo yum -y install libssh2-devel openssl-devel pango-devel

sudo amazon-linux-extras install epel
sudo yum install libtelnet-devel pango-devel

sudo rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-1.el7.nux.noarch.rpm
sudo yum install ffmpeg-devel

sudo yum -y install libvorbis-devel

sudo yum -y install libwebp-devel

2.编译安装guacamole_server源码包

# 安装gcc编译器,源码编译需要
sudo yum -y install gcc
# 下载源码
sudo wget http://apache.org/dyn/closer.cgi?action=download&filename=guacamole/1.1.0/source/guacamole-server-1.1.0.tar.gz
# 解压源码
sudo tar -zxvf guacamole-server-1.1.0.tar.gz
# 进入到guacamole-server-1.1.0目录
sudo cd guacamole-server-1.1.0
# 执行configure进行脚本配置,并将guacd的启动脚本置于/init.d目录下
sudo ./configure --with-init-dir=/etc/init.d
# 编译guacamole_server源码
sudo make
# 安装创建完的组件
sudo make install
# 更新已安装库的系统缓存
sudo ldconfig

3.配置guacamole为系统启动服务

# 增加guacd启动脚本为系统服务 
sudo chkconfig --add guacd
# 设置guacd在各执行等级为开启状态
sudo chkconfig guacd on

安装Tomcat

sudo yum install tomcat

安装guacamole-client


  1. 下载guacamole-client
# 下载guacamole-client预编译web应用
sudo wget http://apache.org/dyn/closer.cgi?action=download&filename=guacamole/1.1.0/binary/guacamole-1.1.0.war

2部署guacamole-client

# 将下载的guacamole-1.1.0.war拷贝至/var/lib/tomcat/webapps
sudo cp guacamole-1.1.0.war  /var/lib/tomcat/webapps/guacamole.war  

3.配置Guacamole服务文件

# 创建guacamole文件夹
sudo mkdir /etc/guacamole
# 创建配置文件guacamole.properties
touch /etc/guacamole/guacamole.properties
# 添加以下配置到guacamole.properties
basic-user-mapping: user-mapping.xml
# 创建配置文件user-mapping.xml
touch /etc/guacamole/user-mapping.xml
# 添加以下设置到user-mapping.xml
<user-mapping>
	<authorize username="test" password="test"> # 用于guacamole登录的的用户名密码,即安装server和client机器上的用户名密码
		<connection name="rdp localhost">
			<protocol>rdp</protocol>
			<param name="hostname">localhost</param> # 远程桌面连接安装server和client机器
			<param name="port">3389</param> # rdp一般默认使用3389端口
			<param name="ignore-cert">true</param> #注意设置此项
			<param name="username">test</param> # 需要远程连接桌面的用户名和密码
			<param name="password">test</param>
		</connection>
	</authorize>
</user-mapping>

4.启动guacd和tomcat

sudo systemctl start guacd
sudo systemctl start tomcat

安装rdp

1.Amazon Linux 2安装 MATE桌面

#  安装 MATE 软件包:
sudo amazon-linux-extras install mate-desktop1.x
# 将 MATE 定义为您的默认桌面。
# 要为所有用户定义 MATE:
sudo bash -c 'echo PREFERRED=/usr/bin/mate-session > /etc/sysconfig/desktop'
#  安装 TigerVNC 程序包:
sudo yum install tigervnc-server
# 安装xrdp
sudo yum install xrdp

2.启动rdp服务

sudo systemctl start xrdp.service

web浏览器访问Guacamole

在浏览地址栏通过 http://服务IP地址:8080/guacamole/ 形式访问,出现guacamole登录界面后输入用户名密码即可访问桌面。


登录界面


注意点:记得开放8080和3389端口,如果使用其他协议则开放对应端口。