- Order:
- Duration: 7:40
- Published: 2009-07-14
- Uploaded: 2010-12-26
- Author: Uuxaul
Although RFB started as a relatively simple protocol it has been enhanced with additional features (such as file transfers) and more sophisticated compression 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.
RFB found a second and more enduring use when VNC was developed. VNC was released as open source 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 the RealVNC website.
{| class="wikitable" |- !Version !Published !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 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 is 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.
A community version of the RFB protocol specification which aims to document all existing extensions is hosted by the TigerVNC project.
Encoding types
0x00000000 Raw
0x00000001 CopyRect
0x00000002 RRE (Rising Rectangle)
0x00000004 CoRRE (Compact Rising Rectangle)
0x00000005 Hextile
0x00000006 Zlib
0x00000007 Tight
0x00000008 ZlibHex
0x00000009 Ultra
0x00000010 ZRLE
0x00000011 ZYWRLE
0xFFFF0001 CacheEnable
0xFFFF0006 XOREnable
0xFFFF8000 ServerState (UltraVNC)
0xFFFF8001 EnableKeepAlive(UltraVNC)
0xFFFF8002 FTProtocolVersion (File Transfer Protocol Version - UltraVNC)
0xFFFFFF00 - 0xFFFFFF09 CompressLevel (Tight encoding)
0xFFFFFF10 XCursor
0xFFFFFF11 RichCursor
0xFFFFFF18 PointerPos
0xFFFFFF20 LastRect
0xFFFFFF21 NewFBSize
0xFFFFFFE0 - 0xFFFFFFE9 QualityLevel(Tight encoding)
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 or desktop such as RDP. 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.
This text is licensed under the Creative Commons CC-BY-SA License. This text was originally published on Wikipedia and was developed by the Wikipedia community.