RFB ("remote framebuffer") is an open simple
protocol for
remote access to
graphical user interface
A graphical user interface, or GUI, is a form of user interface that allows user (computing), users to human–computer interaction, interact with electronic devices through Graphics, graphical icon (computing), icons and visual indicators such ...
s. Because it works at the
framebuffer
A framebuffer (frame buffer, or sometimes framestore) is a portion of random-access memory (RAM) containing a bitmap that drives a video display. It is a memory buffer containing data representing all the pixels in a complete video frame. Mode ...
level it is applicable to all
windowing systems and applications, including
Microsoft Windows
Windows is a Product lining, product line of Proprietary software, proprietary graphical user interface, graphical operating systems developed and marketed by Microsoft. It is grouped into families and subfamilies that cater to particular sec ...
,
macOS
macOS, previously OS X and originally Mac OS X, is a Unix, Unix-based operating system developed and marketed by Apple Inc., Apple since 2001. It is the current operating system for Apple's Mac (computer), Mac computers. With ...
, the
X Window System
The X Window System (X11, or simply X) is a windowing system for bitmap displays, common on Unix-like operating systems.
X originated as part of Project Athena at Massachusetts Institute of Technology (MIT) in 1984. The X protocol has been at ...
and
Wayland. RFB is the protocol used in
Virtual Network Computing
VNC (Virtual Network Computing) is a graphical desktop-sharing system that uses the RFB protocol, Remote Frame Buffer protocol (RFB) to remotely control another computer. It transmits the computer keyboard, keyboard and computer mouse, mouse in ...
(VNC) and its derivatives.
Description
By default, a viewer/client uses TCP port 5900 to connect to a server (or 5800 for browser access), but can also be set to use any other port. Alternatively, a server can connect to a viewer in "listening mode" (by default on port 5500). One advantage of listening mode is that the server site does not have to configure its firewall/NAT to allow access on the specified ports; the burden is on the viewer, which is useful if the server site has no computer expertise, while the viewer user would be expected to be more knowledgeable.
Although RFB started as a relatively simple protocol, it has been enhanced with additional features (such as file transfers) and more sophisticated
compression
Compression may refer to:
Physical science
*Compression (physics), size reduction due to forces
*Compression member, a structural element such as a column
*Compressibility, susceptibility to compression
* Gas compression
*Compression ratio, of a ...
and security techniques as it has developed. To maintain seamless cross-compatibility between the many different VNC client and server implementations, the clients and servers negotiate a connection using the best RFB version, and the most appropriate compression and security options that they can both support.
History
RFB was originally developed at
Olivetti Research Laboratory (ORL) as a remote display technology to be used by a simple
thin client
In computer networking, a thin client, sometimes called slim client or lean client, is a simple (low-Computer performance, performance) computer that has been Program optimization, optimized for Remote desktop, establishing a remote connectio ...
with
Asynchronous Transfer Mode
Asynchronous Transfer Mode (ATM) is a telecommunications standard defined by the American National Standards Institute and International Telecommunication Union Telecommunication Standardization Sector (ITU-T, formerly CCITT) for digital trans ...
connectivity called a Videotile. In order to keep the device as simple as possible, RFB was developed and used in preference to any of the existing remote display technologies.
RFB found a second and more enduring use when VNC was developed. VNC was released as
open source
Open source is source code that is made freely available for possible modification and redistribution. Products include permission to use and view the source code, design documents, or content of the product. The open source model is a decentrali ...
software and the RFB specification published on the web. Since then RFB has been a free protocol which anybody can use.
When ORL was closed in 2002 some of the key people behind VNC and RFB formed
RealVNC, Ltd., in order to continue development of VNC and to maintain the RFB protocol. The current RFB protocol is published on th
RealVNC website
Versions
Published versions of the RFB protocol are as follows:
Developers are free to add additional encoding and security types but they must book unique identification numbers for these with the maintainers of the protocol so that the numbers do not clash. Clashing type numbers would cause confusion when handshaking a connection and break cross-compatibility between implementations. The list of encoding and security types was maintained by RealVNC Ltd and is separate from the protocol specification so that new types can be added without requiring the specification to be reissued. Since December 2012, the list went to
IANA
The Internet Assigned Numbers Authority (IANA) is a standards organization that oversees global IP address allocation, autonomous system number allocation, root zone management in the Domain Name System (DNS), media types, and other Internet P ...
.
A community version of the RFB protocol specification which aims to document all existing extensions is hosted by the
TigerVNC project.
Encoding types
Multiple encodings are part of the negotiation. Some of the encodings are pseudo-encodings used to advertise the ability to handle a certain extension. Encodings include:
* Raw
* Zlib
* Tight
* XZ
*
H.264
* Tight PNG
Of the publicly-defined picture-based encodings, the most efficient ones are the Tight encoding types. Two types of encodings are defined by TightVNC: Tight Encoding (a mixture of rectangle, palette and gradient filling with zlib and JPEG, plus a Zlib-plus-filter "basic compression") and Tight PNG Encoding (Tight encoding with basic compression replaced with
PNG data).
H.264 has been researched for encoding RFB data, but the preliminary results (using Open H.264 format) were described as lackluster by a
TurboVNC
VirtualGL (VGL) is an open-source software, open-source software package that redirects the 3D rendering commands from Unix and Linux OpenGL applications to 3D accelerator hardware in a dedicated server and sends the rendered output to a (thin cl ...
developer. It does become more efficient with fewer I-frames (keyframes), but CPU utilization remains a problem.
Limitations
In terms of transferring clipboard data, "there is currently no way to transfer text outside the Latin-1 character set".
A common pseudo-encoding extension solves the problem by using
UTF-8
UTF-8 is a character encoding standard used for electronic communication. Defined by the Unicode Standard, the name is derived from ''Unicode Transformation Format 8-bit''. Almost every webpage is transmitted as UTF-8.
UTF-8 supports all 1,112,0 ...
in an extended format.
The VNC protocol is pixel based. Although this leads to great flexibility (i.e. any type of desktop can be displayed), it is often less efficient than solutions that have a better understanding of the underlying graphic layout like
X11
The X Window System (X11, or simply X) is a windowing system for bitmap displays, common on Unix-like operating systems.
X originated as part of Project Athena at Massachusetts Institute of Technology (MIT) in 1984. The X protocol has been at ...
or desktop such as
RDP
RDP may refer to:
Computing
* Ramer–Douglas–Peucker algorithm, an algorithm for polygonal simplification
* Recombination detection program, for analysing genetic recombination
* Recursive descent parser, a type of top-down parser
* Remote Desk ...
. Those protocols send graphic primitives or high level commands in a simpler form (e.g. open window), whereas RFB just sends the raw pixel data, albeit compressed.
The VNC protocol expresses mouse button state in a single byte, as binary up/down. This limits the number of mouse buttons to eight (effectively 7 given convention of button 0 meaning "disabled"). Many modern mice enumerate 9 or more buttons, leading to forward/back buttons having no effect over RFB. A "GII" extension solves this problem.
The original protocol specification does not define any way to transfer sound data at all, with the sole exception that the server may signal a
bell
A bell /ˈbɛl/ () is a directly struck idiophone percussion instrument. Most bells have the shape of a hollow cup that when struck vibrates in a single strong strike tone, with its sides forming an efficient resonator. The strike may be m ...
(audible beep, notification sound) should be played by the client.
There is, however, a "QEMU Audio" extension defined in the RFB protocol's community version.
See also
*
Comparison of remote desktop software
This page is a comparison of notable remote desktop software available for various platforms.
Remote desktop software
Operating system support
Features
Terminology
In the table above, the following terminology is intended to ...
*
NX technology and
Xpra for efficient remote X Window System connections
*
SPICE
In the culinary arts, a spice is any seed, fruit, root, Bark (botany), bark, or other plant substance in a form primarily used for flavoring or coloring food. Spices are distinguished from herbs, which are the leaves, flowers, or stems of pl ...
*
Remote Desktop Protocol
Remote Desktop Protocol (RDP) is a proprietary protocol developed by Microsoft Corporation which provides a user with a graphical interface to connect to another computer over a network connection. The user employs RDP client software for this pu ...
(RDP)
References
{{Reflist
External links
The RFB Protocol - Community VersionRFC 6143: The Remote Framebuffer Protocol (describes Version 3.8, 2011)The RFB Protocol - Version 3.8 (2010-11-26)The RFB Protocol - Version 3.7 (2003-08-12)The RFB Protocol - Version 3.3 (1998-01)
Virtual Network Computing
Application layer protocols
Remote desktop protocols