1

云桌面传输协议介绍

 1 year ago
source link: https://www.51cto.com/article/752149.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

云桌面传输协议介绍

作者:池伟 鑫伶 2023-04-15 19:55:33
个人电脑的出现,其形态从搭配显示器、主机、键盘开始保持至今没有大的变化。但随着5G、云计算、千兆宽带等技术的普及,一种新型的电脑形态——云电脑正在悄然占据市场,在公有云场景下为了能够提供近似本地电脑的体验,整体技术栈中桌面传输协议是核心关键点。
47cac6f53eb005664a2810eb66ac0b40fd326d.jpg

1、定义

图片

如图所示,云桌面协议即在云电脑场景下,用于服务器与终端之间传输图形、音频、视频、输入信息设备、外设等数据的通信协议。

2、主流协议介绍

当前主流的云桌面协议共有4种,都是基于TCP或者UDP协议,分别为ICA(HDX)、PCoIP(Blast)、RDP、SPICE。

➤ ICA协议:云桌面协议最早可以追溯到1989年,当时的Citrix公司成立时就诞生了ICA协议,至今仍然保密,可以想象,当Linux和Java语言还没有出世时,Citrix就开始开发虚拟化软件,从窄带时代发展而来,ICA的稳定可靠性确有其因。后来出现的HDX,在面向更高的网络带宽,在ICA节省流量的基础上,致力于交付富媒体等更多形式的体验,让虚拟桌面的用户体验与物理PC的体验相接近。所以在当前宽带提速的大形势下,HDX整体技术方案又有了更大的发挥空间。

➤ PCoIP (PC over IP) 协议:PCoIP是由加拿大Teradici公司开发的远程显示协议。2008年,VMware宣布和Teradici共同开发PCoIP协议,以提高桌面虚拟化的性能,随后在2009年与其合作获得授权发布了VMware Horizon View产品,后来VMware为了摆脱在核心技术上依赖于其他公司的困境,试图开发自己的协议Blast,并于2013年正式发布。

➤ RDP协议 :由微软公司开发的一种专有协议,它为用户提供了通过网络连接到另一台计算机的图形界面,可用于大多数Windows操作系统,当然Linux、Mac系统也提供相应的支持。

➤ SPICE协议:SPICE为开源协议,该协议由Redhat公司研发,当前国内各大公司自研的桌面协议大多基于此协议进行深度改造优化而来。

3、协议剖析

云桌面协议的主要作用为,将本地终端的键鼠操作指令传输到云端,云端电脑收到指令后进行计算响应,桌面发生对应的变化后,将整个画面推送到本地终端再显示播放,让用户感觉像是在使用本地电脑一样,整个过程中就是通过云桌面协议将算力移至云端,让终端大幅瘦身,更加轻量化。如下图所示:

图片

云桌面协议本身又可以细分为多种通道,不同的通道承载不同的数据,对应不同的功能,以开源SPICE为例,如下图所示:

图片

主要分为如下几个传输通道:

  • Main Channel:处理与客户端的连接、断开等;
  • Inputs Channel:处理鼠标、键盘、触摸板等输入设备数据;
  • Display Channel:处理桌面图像传输数据;
  • Cursor Channel:处理鼠标指针显示的传输数据;
  • Playback Channel:处理GuestOS的主机声音数据;
  • Record Channel:处理终端侧的录音数据;
图片

如图所示为通过windows的spice client连接云桌面;

图片

如图所示为spice端口的连接情况,可以看出一个客户端连接后,在服务端就会建立6个socket连接,分别对应6个通道,每个通道的具体抓包数据如下:

1️⃣ Main Channel主通道

Main Channel主通道主要用于处理与客户端的连接、断开等操作指令,当客户端启动时,通过该通道发送连接认证请求,与服务端建立通信,后续的网络质量监控、心跳保活、客户端会话管理等都通过该通道处理。

协议数据👇

图片

如图为windows主机的UUID数据

图片

如图为windows主机server name,在spice主通道中体现如下:

图片

如图为主通道的抓包数据,结合业务,整个桌面连接认证的过程就可以通过UUID等数据来进行关联处理。

2️⃣ Inputs Channel输入通道

Inputs Channel输入通道主要用于处理鼠标、键盘、触摸板等输入设备数据。

协议数据👇

图片

如图为官方输入通道协议中定义的鼠标位置消息类型,为112,对应十六进制为0x70;

图片

如图为输入通道的抓包数据,客户端通过桌面协议向服务端发送鼠标当前的xy坐标信息。

3️⃣ Display Channel显示通道

Display Channel显示通道主要用于处理桌面图像传输数据;

协议数据👇

图片

如图为官方显示通道中定义的显示流数据,为123,十六进制为0x7b;

图片

如图为显示通道的抓包数据,流数据格式为JPEG格式,大小大约为193KB,在30FPS的情况下大约占用带宽为45Mbps,可见其优化空间之大;

4️⃣ Cursor Channel光标通道

Cursor Channel光标通道主要用于处理鼠标指针显示的传输数据;

协议数据👇

图片

如图为鼠标显示通道定义,官方说明“The relevant remote display area for a cursor channel is the one of the display channel that has the same channel id (i.e., SpiceLinkMess.channel_id).”表示鼠标显示包含在显示通道数据中;初始化为111,对应十六进制06x5;

图片

如图为抓包数据,message type=101,等同于显示通道中的定义SPICE_MSG_DISPLAY_MODE;

5️⃣ Playback Channel音频通道

主要用于处理GuestOS的主机声音数据,回传端侧播放;

协议数据👇

图片

如图为音频通道中的数据定义,为101,十六进制为0x65;

图片

如图为抓包数据,message type=101,data为具体的声音数据;

6️⃣ Record Channel录音通道

主要用于处理终端侧的录音数据,传输到云端;

协议数据👇

图片

如图为录音通道数据;

上述所有通道协议数据的具体定义格式可参照官网定义:​​https://www.spice-space.org/spice-protocol.html​

4、总结

看完原生的SPICE协议数据以及初步的测试后,可以发现目前端到端的传输性能仍然存在较大优化空间,在帧率不足20FPS的情况下约占用45Mbps的传输带宽,且还无法呈现连续高质量的画质体验,基本无法直接商用,在整个桌面通道数据传输过程中,显示通道的数据流量基本占据在90%以上,属于优化的重点;纵观ICA、PCoIP、RDP、SPICE四大桌面协议,从窄带时代发展起来的ICA,以其优质的协议算法及多达32个之多的通道数量定义,为用户提供了更优质的云桌面体验,但因其协议整体闭源,而且授权费用高昂,对于大部分云桌面厂商来说与其合作研发并不是长久之计,所以自研桌面协议成了国内众多厂家自研竞争、形成差异化优势的关键所在。目前,中国移动智慧家庭运营中心在与桌面协议相关的音视频编解码、GPU硬件加速、网络传输等领域已具备一定的技术积累,基于SPICE的端到端解决方案上已形成相应规模的落地实践方案,并取了一定的成效。未来,中国移动智慧家庭运营中心将进一步聚焦帧率提升、时延降低、低码高清三大关键目标,致力于为用户持供更优质、更流畅的产品体验。

随着5G+千兆宽带的普及,有了高速率+低时延的基础技术加持,结合日趋成熟的云计算底座,未来,云桌面在2C/2H领域的竞争必将日益激烈。

责任编辑:庞桂玉 来源: 移动Labs

Recommend

  • 54
    • blog.sina.com.cn 5 years ago
    • Cache

    谈MQTT消息传输协议(11.9)

    前面讲物联网云平台,经常会谈到MQTT协议,下面对MQTT协议做一个简单总结。 对于MQTT协议详细的介绍可以参考: https://mcxiaoke.gitbooks.io/mqtt-cn/content/

  • 39

    TCP/IP 协议就是传输洋葱?一文带你深入了解 不难看出,TCP/IP 与 OSI 在分层模块上稍有区别。OSI 参考模型注重“通信协议必要的功能是什么”,而 TCP/IP 则更强调“在计算机上实现协议应该开发哪种程序”。...

  • 24
    • 微信 mp.weixin.qq.com 4 years ago
    • Cache

    视屏面试传输协议到底是TCP还是UDP

    背景 又是一年一度的秋季校招开始了,以往的校招各个公司都会在公司现场或者学校现场安排学生进行现场面试?但是今年由于疫情的原因,不允许让同学在现场进行一个面试,所以今年的面试形式就从线下转到了线上,...

  • 27

    本文介绍在Java中如何使用基于SSH的文件传输协议(SFTP)将文件从本地上传到远程服务器,或者将文件在两个服务器之间安全的传输。我们先...

  • 13
    • blog.csdn.net 3 years ago
    • Cache

    超文本传输协议

    超文本传输协议 介绍 请求信息

  • 9
    • lanbing510.info 3 years ago
    • Cache

    利用UDP协议进行图像传输

    利用UDP协议进行图像传输 2014年08月31日 由于项目需要,自己实现了UPD协议下图像的快速无丢失传输,测试数据是Egtest01图像库,实现了PC和嵌入式端的图像传输,传输+读写的速度可以实现1...

  • 11

    传输短秘密值的条件下提高OT扩展协议的效率密码学话题下的优秀回答者最近收到了一位知友的私信,询问能否把《Winter School on Cryptography 2012: Lattice-Based Cryptography》...

  • 9

    作者:wentaomao, 腾讯 TEG  后台开发工程师 前言 QUIC 作为互联网下一代标准传输...

  • 7
    • www.cnblogs.com 3 years ago
    • Cache

    流媒体传输协议之 RTP(下篇)

    本系列文章将整理各个流媒体传输协议,包括 RTP/RTCP,RTMP,希望通过深入梳理协议的设计细节,能够给流媒体领域的开发者带来一定的启发。 作者:逸殊 审核:泰一 接上篇:《 流媒体传输协议之 RTP(上篇)》

  • 3

    消息中间件系列介绍-传输与消费模式 作者:移动Labs 2022-10-28 13:33:05 开发 虽然Push模式在语义上更符合事件驱动架构风格,但在当...

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK