(一)RFB协议概述

(文章是基于刚刚做过的一个项目,对相关知识点进行总结回顾。主要内容均是对之前收集资料的总结概括,很多内容转载自其它地方。因为时间比较长,没有一一记录转载地址,特此感谢!)

一、简介

  RFB(远程帧缓冲)是一个用于远程访问图形用户接口的简单协议。适用于所有的桌面系统和应用,包括X11,Windows和Macintosh等。

  RFB是基于tcp的一个应用层协议。

   

  我们把用户所在的一端(包括显示器、键盘和鼠标)被称为RFB客户端。而帧缓冲发生变化的一端(桌面系统和应用)称为RFB服务器。

  RFB协议是一个瘦客户协议。协议设计的重点是减小对客户端的要求。这样,客户端可以运行在多种范围的硬件上,实现的任务是使客户端尽可能地简单

  RFB协议也使得客户端是“无状态”的。如果一个客户端和服务器断开了连接,稍后再一次连接到这台服务器上,用户的会话不会被关闭,状态会一直保持着。不同的客户端可以连接到同一个服务器上,在新的客户端上用户看到的是和原来的客户端上相同的图形用户接口。这样,用户的桌面变的完全可移动了。只要有合适的网络连接,用户就可以访问他个人的桌面应用,不论他走到哪里都可以连接到自己的会话上,而这些应用的状态可以一直保持着。

二、显示协议

  RFB协议的显示部分基于一个简单的画图原理:“将一个矩形块的象素点放在给定位置(xy)上”。这样做初看起来也许非常低效,因为要将用户所有的图形组件都画出来。但是由于可以为象素数据进行多种不同的编码,可以根据不同的参数比如网络带宽、客户端计算速度和服务器处理的速度等选择灵活的编码方式。一系列的矩形块组成了一个帧缓冲更新。一个更新描述了帧缓冲从一个状态到另一个状态的变化情况,所以,某些方面,这和音频的帧很类似。

  更新协议是客户端“命令-驱动”型的。即服务器只有在收到客户端的请求才向其发送更新。这使得显示协议的质量可以调整。客户端和网络速度越慢,更新率就会越低。对于典型的应用,帧缓冲上相同区域的更新往往非常频繁。如果客户端或者网络非常慢,由于非常低的网络传输和客户端更新,帧缓冲上瞬时的状态都可以被忽略掉。

三、输入协议

  输入协议是基于键盘和多键鼠标设备的标准工作站模型。当用户敲了一下键盘或者鼠标,或者移动了一下鼠标,客户端把这些输入事件简单地传送给服务器。输入事件可以由其它非标准I/O设备产生,如笔形手写板引擎也可以生成键盘事件,之后服务端对事件进行相应处理。事件按照RFB协议规定的格式进行发送即可。

四、象素数据的表示

  RFB客户端和服务器最初的交互包括协商将要传输的象素数据的格式和编码类型。协商被设计成使客户端的工作尽可能的简单。底线是服务器必须可以一直提供客户端想要的象素数据的格式。但是如果客户端可以处理多种编码类型,它会选择对服务器来说最容易生成的编码。

  象素格式是指象素值颜色表示法 最常用的象素格式是24位或16位真彩色。,它通过位来直接实现像素值到红、绿、蓝亮度的转换。8 位“颜色映射”可以任意映射像素值到RGB亮度的转换。

  编码是指怎样通过网络把矩形象素点的数据发送出去。每一个矩形象素点的数据被加了一个前缀包括它在屏幕上的位置,矩形象素点的宽度和高度,以及一个“编码类型”来描述该象素的编码方式。然后是经过编码的数据本身。

  目前的编码方式主要有Raw、CopyRect、RRE、Hextile 和ZRLE.在实际应用中我们一般使用ZRLE、Hextile 和CopyRect,因为它们提供了典型桌面的最好压缩。其他可能的编码方式还包括,用于静态图片的JPEG和用于动态图像有效传输的MPEG。协议可以通过增加新的编码方式来进行扩展。(编码的具体描述见其它文章)

五、协议扩展(添加新的编码方式)

  协议可以通过以下方式进行扩展:

  新的编码方式:

  一种新的协议可以通过与现存的客户端和服务端进行相关兼容的添加。因为现存的服务器将会忽略它们所不支持的新编码方式。所以客户端通过新的编码方式进行请求也就不会有结果返回。

  伪编码方式:

  除了真正的编码方式,客户端也可以请求“伪编码”通告服务器,它支持某一协议的扩展。服务器如果不支持这种扩展,那么它将忽略。值得注意的是:客户端必须先假设服务器端不支持这种扩展,直到它获得服务器端支持的确认。

  新的安全方式:

  添加一个新型的安全方式会带来无限的灵活性,它通过修改协议的一些行为,但是并没有牺牲现存客户端和服务器端的兼容性。客户端和服务器端可以通过协议好的安全方式进行交流,当然并不一定与RFB协议类似。

  无论如何你都不应使用不同的版本号。

  RFB协议的版本是由RealVNC公司来制定的。如果你使用一个不同的协议版本可能与RFB/VNC不兼容,要保证协议的兼容性,请联系RealVNC公司。这样会减少在编码方式和安全类型上的冲突。

时间: 2024-11-29 11:57:43

(一)RFB协议概述的相关文章

HTTP协议概述

HTTP协议概述 什么是HTTP协议 1.HTTP协议:hypertext transfer protocol(超文本传输协议) 规定客户端和服务器如何进行交互 基于TCP/IP协议的应用层协议 2.HTTP最基本的三个条件: 1.HTTP协议基于请求响应模型 2.一次请求对应一次响应 3.请求只能由客户端发出,服务器只能被动的等待请求做出响应 2.HTTP1.0和HTTP1.1的区别 1.HTTP1.0协议中,客户端与web服务器建立连接后,只能获得一个web资源. 2.HTTP1.1协议,客

javaweb学习总结十九(http协议概述以及http请求信息分析)

一:http协议概述 1:http协议定义 2:使用telnet程序连接web服务器,获取资源 3:http协议:超文本传输协议,它是基于tcp/ip协议,就是建立在tcp/ip之上工作的, http协议前提是必须浏览器与服务器建立连接. 4:http/1.0与http/1.1的区别 telnet连接tomcat服务器演示: http1.0协议: 只与服务器交互了1次,然后就端口连接. http1.1协议: 5:浏览器请求服务器端次数问题 一个浏览器访问服务器,首先拿到html页面,然后发现有图

射频识别技术漫谈(6)——通讯协议概述

通讯协议是通讯的双方或多方在交流时遵守的规矩,包括谁先发起通讯,先交流什么,后交流什么,一方如何问,另一方如何答等.在这里通迅的双方指的是读写器和卡片. 首先是谁先发起通讯,很显然有两种,读写器先发言和卡片先发言.前一种叫Reader Talk First,简称为RTF;后一种叫Tag Talk First,简称为TTF. 我们知道,卡片从读写器产生的射频场获得工作时需要的能量,一般认为应该是读写器主动,卡片被动才对,这也是人之常情.所以多数功能稍复杂的卡片都是采用RTF模式,即读写器问,卡片回

网络协议概述:物理层、连接层、网络层、传输层、应用层详解(转载)

这篇文章主要介绍了网络协议概述:物理层.连接层.网络层.传输层.应用层详解,本文用生活中的邮差与邮局来帮助理解复杂的网络协议,通俗易懂,文风幽默,是少见的好文章,需要的朋友可以参考下 信号的传输总要符合一定的协议(protocol).比如说长城上放狼烟,是因为人们已经预先设定好狼烟这个物理信号代表了“敌人入侵”这一抽象信号.这样一个“狼烟=敌人入侵”就是一个简单的协议.协议可以更复杂,比如摩尔斯码(Morse Code),使用短信号和长信号的组合,来代表不同的英文字母.比如SOS(***---*

RFB协议及源码

1.VNC简介 VNC采用RFB通信协议.RFB("remote 帧缓存")是一个远程图形用户的简单协议,因为它工作在帧缓存级别上.VNC(Virtual Network Computing)基本上是属于一种显示系统,也就是说它能将完整的窗口界面通过网络,传输到另一台计算机的屏幕上. 独特的计算环境  RFB协议可进行可靠的传输,如字节流或基于消息的.和大多数协议一样,它也是通过TCP/IP协议簇连接. 协议由三步完成连接: 首先是握手报文,目的是对协议版本和加密方式进行协商. 第二步

HTTP 之 HTTP协议(HTTP协议概述、HTTP消息、缓存控制相关头部、Cookie相关头部)

一.HTTP 协议概述 HTTP协议历史与标准 总结:本章内容主要介绍了 HTTP协议(HTTP协议概述.HTTP消息.缓存控制相关头部.Cookie相关头部)

SMB协议概述

一.概述 SMB(Server Message Block)是由微软开发的一种软件程序级的网络传输协议,主要用来使得一个网络上的计算机共享计文件.打印机.串行端口和通讯等资源.它也提供认证的进行进程间通信机能.经过Unix服务器厂商重新开发后,它可以用于连接Unix服务器和Windows客户机,执行打印和文件共享等任务. SMB一开始的设计是在NetBIOS协议上运行的(而NetBIOS本身则运行在NetBEUI.IPX/SPX或TCP/IP协议上).从Windows2000开始,微软引入SMB

1.RapidIO协议概述

转自https://www.cnblogs.com/liujinggang/p/9925859.html 一.RapidIO背景介绍 RapidIO是由Motorola和Mercury等公司率先倡导的一种高性能. 低引脚数. 基于数据包交换的互连体系结构,是为满足和未来高性能嵌入式系统需求而设计的一种开放式互连技术标准.RapidIO主要应用于嵌入式系统内部互连,支持芯片到芯片.板到板间的通讯,可作为嵌入式设备的背板(Backplane)连接. RapidI0采用三层分级体系结构,该分级结的如下

搞懂分布式技术4:ZAB协议概述与选主流程详解

搞懂分布式技术4:ZAB协议概述与选主流程详解 ZAB协议 ZAB(Zookeeper Atomic Broadcast)协议是专门为zookeeper实现分布式协调功能而设计.zookeeper主要是根据ZAB协议是实现分布式系统数据一致性. zookeeper根据ZAB协议建立了主备模型完成zookeeper集群中数据的同步.这里所说的主备系统架构模型是指,在zookeeper集群中,只有一台leader负责处理外部客户端的事物请求(或写操作),然后leader服务器将客户端的写操作数据同步