RFB (abbr. From the English. Remote framebuffer ) - client-server network protocol for remote access to the graphical desktop computer. Used in VNC [1] remote access systems. Since it works at the frame buffer level, it can be used for graphic window systems, such as the X Window System , Windows , Quartz Compositor .
Content
Description
By default, RFB uses the TCP port range from 5900 to 5906. Each port represents the corresponding X server screen (ports 5900 through 5906 are associated with screens from: 0 to: 6). Java clients that are available in many implementations that use the embedded web server for this purpose, for example, RealVNC , are associated with screens in the same way, but on the port range from 5800 to 5806. Many Windows computers can use only one port due to the lack of multi-user properties inherent in UNIX-systems. For Windows systems, the default screen is: 0, which corresponds to port 5900.
There is a possibility of reverse connection from the server to the client. In this case, the client is switched to listening ( listening ) mode and the connection is initiated by the server on the 5500 TCP port of the client. One of the advantages of this mode is that it is not necessary for the user to configure Firewall / NAT to allow access to the specified ports.
Despite the fact that RFB was created as a relatively simple protocol, over time it began to be supplemented by new functions, such as file transfer, more sophisticated security methods, and compression. At the time of connection, the client and the server compare the versions of the protocol implemented in them and agree on a compatible set of compression and security options.
History
RFB was developed at the Olivetti Research Laboratory (ORL) as a remote display technology for use with a Videotile thin client , connected via an ATM connection. The development of its protocol allowed the client to be simplified.
The VNC implementation was released as open source software, and the RFB specification was published online. Since then, RFB has become a more popular protocol.
After the closure of the ORL in 2002, some key people from VNC and RFB formed RealVNC Ltd. to continue the development of VNC and support the RFB protocol. The current specification of the RFB protocol is published on the RealVNC website.
Protocol Versions
Published versions of the RFB protocol:
Version | Publisher | date | Specification |
RFB 3.3 | Orl | January 1998 | The Remote Framebuffer Protocol 3.3 |
RFB 3.7 | RealVNC Ltd | August 2003 | The Remote Framebuffer Protocol 3.7 |
RFB 3.8 (current) | RealVNC Ltd | June 2007 | The Remote Framebuffer Protocol 3.8 |
Developers can add additional coding and security types, but they must agree on unique identification numbers for their additions with the accompanying protocol, so that the numbers do not repeat. Same numbers can cause confusion when a connection occurs and break cross-compatibility between implementations. The list of coding and security types is maintained by RealVNC Ltd separately from the protocol specification so that new types can be added without requiring a reissue of the specification.
Coding Types
· 0x00000000 - Raw (Raw) · 0x00000001 - Copying Rectangles (CopyRect) · 0x00000002 - Rising Rectangle · 0x00000004 - CoRRE (Compact Rising Rectangle) · 0x00000005 - Hextile · 0x00000006 - Compress Zlib · 0x00000007 - Client Version Tight · 0x00000008 - ZlibHex · 0x00000009 - Ultra client version · 0x00000010 - Compress ZRLE · 0x00000011 - Compress ZYWRLE (ZLib YUV Wavelet Run Length Encoding) · 0xFFFF0001 - Caching flag (CacheEnable) | · 0xFFFF0006 - Bitwise XOR (XOREnable) flag · 0xFFFF8000 - ServerState (UltraVNC) · 0xFFFF8001 - EnableKeepAlive (UltraVNC) · 0xFFFF8002 - File Transfer (FTProtocolVersion - UltraVNC) · 0xFFFFFF00 - 0xFFFFFF09 - CompressLevel (Tight) · 0xFFFFFF10 - XCursor · 0xFFFFFF11 - RichCursor · 0xFFFFFF18 - PointerPos · 0xFFFFFF20 - LastRect · 0xFFFFFF21 - NewFBSize · 0xFFFFFFE0 - 0xFFFFFFE9 - QualityLevel (Tight) |
Limitations
From the point of view of clipboard data transfer , RFB is capable of transmitting text only within the Latin-1 encoding. [2]
VNC protocol is based on the transfer of rasters (arrays of pixels). Despite the fact that this leads to great flexibility (that is, it is possible to display any type of desktop), this method is often less efficient than solutions that are closer to graphic systems like X11 or RDP . In such protocols, it is possible to send more complex graphics primitives and high-level commands in a simpler form (for example, to create a window), while RFB simply sends raw pixel data, albeit compressed.
Notes
- ↑ Cameron Laird. The Art of VNC. How to learn how to work with a great virtualization tool . IBM DW (12/12/2007). The appeal date is October 25, 2018.
- ↑ Richardson, Tristan. Sections 6.4.6, 6.5.4 // The RFB Protocol - Version 3.8. - 2010.