SPICE协议浅析

天翼云开发者社区
• 阅读 28

本文分享自天翼云开发者社区《SPICE协议浅析》,作者:王****均

云环境中根据使用场景不同,有多种远程控制台传输协议,如SPICE、VNC、RDP等。 SPICE是Simple Protocol for independent Computing Environment的缩写,表示独立计算环境的简单协议。 SPICE协议由三个基本部分组成:Spice 协议,Spice server 和Spice client。采用带外的管理模式进行云主机图像画面的采集和传输,适用于LAN 和WAN,可以处理虚拟设备(后端back-end)和前端front-end。在前端和后端间通过VDI(Virtual Device Interfaces)进行交互。

一、SPICE协议 SPICE 协议用于client 和server 间的通信,比如传输图形对象, 键盘和鼠标事件, 光标信息, Audio playback 和录音,以及控制命令。 SPICE协议可以在云主机控制台画面传输过程中进行安全防护、效率优化,保障用户使用云主机的安全可靠和极致的用户体验,包括协议加密、算法自适应、USB重定向等多个关键技术。 1、协议加密:支持TLS加密,提供保密性和数据完整性,保障数据在传输过程中的安全,并且可根据用户需求进行算法替换。 2、算法自适应:针对文字、图片、视频等不同的显示类型,自动进行检测适配,及时调整压缩算法,降低控制台带宽占用,保障用户网络稳定。 3、USB重定向:利用USB重定向技术,支持将多种类型的USB外部设备接入云主机,具有良好的兼容性和使用体验。 另外,SPICE协议还支持高清的分辨率、多媒体高清视频(4K视频)播放和多屏显示,保障用户远程访问云主机具有极致体验。

二、Spice server spice server 是通过libspice 和VDI library 实现的。VDI 提供了一个标准的方法来发布虚拟设别的接口。这使得其他的软件部件可以和这些virtual device 交互。一方面,server 使用Spice 协议和远程client 通信,另一方面,它和VDI host 应用进行交互。 server 为了远程显示的目的,server 维护了一个命令序列和一棵树来管理当前对象的依赖关系和覆盖关系。QXL 命令被处理转换为Spice 协议,然后发送给客户端。 架构图如下:

SPICE协议浅析

Server 通过channels 和client 通信。每一个channel 类型对应一种特定类型的数据。每一个channel 使用专用的TCP port。服务端的channel 和client 的channel 是对应的,也有Main, Inputs, Display, Cursor Playback 和Record。

三、Spice client Spice 跨平台客户端是终端用户的接口。架构图如下:

SPICE协议浅析

Spice包含的关键类有:Application、Channels、Screens 和Windows

Application包含Clients, monitos 和screens,这个类实现了通用的应用功能:命令行解析,主循环,时间处理,鼠标事件重定向,全屏切换等等。

Channels:client 和服务端通过channels 进行通信,每一个channel 类型对应着特定的数据类型。每个channel 使用专门的TCP 端口,有一个专门的线程来处理,所以我们可以为每一个channel 设置单独的优先级来达到不同的QoS。

Screens 和Windows:提供窗口控制和操作逻辑。ScreenLayer - screen layer绑定到特定的screen,用来提供矩形区域的操作。layer 是z-order。RedScreen - 实现screen的逻辑,控制window,使用screen layers 来显示他的内容。RedDrawable - 基本pixmap 的平台特定实现。它支持基本的渲染操作。

综上,SPICE协议提供了一种兼顾色彩、音频和外设管理等方面的云主机控制台解决方案。

点赞
收藏
评论区
推荐文章
LinMeng LinMeng
4年前
下载二维码至钉盘
后端生成二维码的普通文件流,前端接收后在img标签中渲染将二维码下载至钉盘通过接口获取后端返回mediaId字段,采用“dingtalkjsapi”插件中的方法下载注意:dingTalkFun中,除了corId和mediaId必传外,文件名name也是必须要传的!!!<template<divclass"onlineSign"
Easter79 Easter79
3年前
ssh实现远程登陆以及使用技巧
SSH简介SSH为SecureShell的缩写,由IETF的网络工作小组(NetworkWorkingGroup)所制定;SSH为建立在应用层和传输层基础上的安全协议。SSH是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。常用于远程登录,以及用户之间进行资料拷贝。利用SSH协议可以有
Wesley13 Wesley13
3年前
Spicy 修改代码 实现双屏显示以及鼠标键盘绑定
修改spicy.c staticSpiceWindow\create\_spice\_window(spice\_connection\conn,SpiceChannel\channel,intid,gintmonitor\_id){//注释掉的地方  就是隐藏菜单、工具栏和状态栏   gtk\_container\_
Wesley13 Wesley13
3年前
SSH介绍及连接原理
SSH是Secure Shell Protocol的简写,由IETF网络工作小组(Network Working Group)指定;在进行数据传输之前,SSH先对联机数据包通过加密技术处理,加密后在进行数据传输。确保了传递的数据安全。  SSH是专为远程登录会话和其他网络服务提供的安全性协议。利用SSH协议可以有效的防止远程管理过程中的信息泄露问题,
Easter79 Easter79
3年前
springboot2之优雅处理返回值
前言最近项目组有个老项目要进行前后端分离改造,应前端同学的要求,其后端提供的返回值格式需形如{"status":0,"message":"success","data":{}}方便前端数据处理。要实现前端同学这个需求,其实也挺简单的,
Wesley13 Wesley13
3年前
TCP、UDP和HTTP关系
先来一个讲TCP、UDP和HTTP关系的http:是用于www浏览的一个协议。tcp:是机器之间建立连接用的到的一个协议。1、TCP/IP是个协议组,可分为三个层次:网络层、传输层和应用层。在网络层有IP协议、ICMP协议、ARP协议、RARP协议和BOOTP协议。在传输层中有TCP协议与UDP协议。在应用层有FTP、HTT
Stella981 Stella981
3年前
SPICE Simulators and SPICE Models
ThisarticleintroducessourcesfordownloadingSPICEbasedsimulatorsandSPICEmodels.Itisafterallbesttoactuallyrunasimulatorinordertocometounderstandit.Thesim
Wesley13 Wesley13
3年前
HTTP协议简介
关于HTTP协议的基本介绍。<!moreHTTP协议是基于TCP/IP协议之上的应用层协议,主要用于规定互使用联网中客户端和服务器之间的通信格式,不关心具体传输细节,默认80端口。对于Web开发,不管是前端还是后端开发,了解HTTP协议是必备的一些基本知识。发展历程HTTP/0.9于
京东云开发者 京东云开发者
8个月前
浅谈从浏览器输入URL到页面渲染的流程
浏览器输入URL到页面渲染完成,这个过程大致可分为两个阶段:网络通信和页面渲染。一、网络通信互联网内各网络间设备的通信遵循TCP/IP协议,利用TCP/IP协议进行网络通信时,会通过分层与对方通信。数据传输的过程:由应用层产生数据后,经过传输层的分段处理(
京东云开发者 京东云开发者
5个月前
前后端数据传输约定探讨
1目的稳定可靠,降本增效前后端数据传输约定旨在提升系统稳定性、可靠性,降低线上线下bug率;并提升研发效率、降低沟通成本、降低延期率。是确保项目前端和后端开发顺利进行的重要规约之一,定义了前端与后端交互的规则和标准。2数据传输约定2.1数据向后端传递,及在
天翼云开发者社区
天翼云开发者社区
Lv1
天翼云是中国电信倾力打造的云服务品牌,致力于成为领先的云计算服务提供商。提供云主机、CDN、云电脑、大数据及AI等全线产品和场景化解决方案。
文章
727
粉丝
15
获赞
40