Remote Framebuffer Protocol

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche
RFB (Remote Framebuffer Protocol)
Familie: Internetprotokollfamilie
Einsatzgebiet: Datenübertragung,
Bildschirminhalte, Benutzereingaben
Port: 5900/TCP (Siehe Text)
RFB im TCP/IP‑Protokollstapel:
Anwendung RFB
Transport TCP
Internet IP (IPv4, IPv6)
Netzzugang Ethernet Token
Bus
Token
Ring
FDDI

Das Remote Framebuffer Protocol (RFB) ist ein Netzwerkprotokoll für den Zugriff auf die grafischen Benutzungsoberflächen (GUI) anderer Computer. Es wird von VNC zur Übertragung von Bildschirminhalten und Benutzereingaben verwendet.

Grundprinzip[Bearbeiten]

Ein RFB-Server bietet einen so genannten „Desktop“ an. Dies ist eine grafische Arbeitsumgebung, die auf einem entfernten Computer läuft bzw. die dazugehörigen Anwendungen. Der RFB-Client stellt in der Regel diesen Desktop auf dem Arbeitsplatzrechner des Benutzers dar, nimmt Benutzereingaben (Tastatureingaben, Mausbewegungen und -klicks usw.) entgegen und leitet diese an den RFB-Server weiter, womit die dortige Arbeitsumgebung gesteuert wird.

Da es auf der Ebene des bitmaporientierten Grafikspeichers (engl. Framebuffer) arbeitet, ist die Anwendung auf beliebigen Fenstersystemen wie Windows, Mac OS oder X11 möglich. Die Bildschirminhalte werden als Bitmaps übertragen, wobei nur die jeweiligen Änderungen – in geeigneter Kodierung, siehe unten – zum Client übertragen werden. Es werden Farbtiefen von 8, 16 und 32 Bit pro Pixel unterstützt, wobei der RFB-Client die gewünschte Farbtiefe und Kodierung vom Server anfordert und der Server sich nach den Wünschen des Clients zu richten hat, sofern er die gewünschte Kodierung unterstützt.

Das Design von RFB ist darauf ausgerichtet, die Anforderungen an den Client einfach zu halten und so die Verwendung von Thin Clients zu unterstützen.

RFB-Verbindungen sind zustandslos, sodass Verbindungsunterbrechungen bzw. der Wechsel des RFB-Clients problemlos möglich sind, ohne dass die zugehörige Sitzung dabei verloren geht. Ziel von RFB und VNC ist letztendlich die Unterstützung des entfernten Arbeitens an Rechnern unter einer einheitlichen Arbeitsumgebung.

Port- und Desktopnummern[Bearbeiten]

In der Original-Unix-Version von VNC ist jeder VNC-Server ein eigener X-Server und stellt genau einen X-Desktop dar (Xvnc). Es wird dabei standardmäßig die erste freie X-Servernummer von VNC belegt. Falls bereits ein lokaler X-Server auf der Maschine läuft, der somit den X-Desktop :0 belegt, bekommt VNC den Desktop :1. Die von VNC belegte TCP-Portnummer ist 5900 + desktopnummer, unter Unix somit meist 5901. Einige VNC-Server stellen an Port 5800 bzw. 5800 + desktopnummer ein Java-Applet zur Verfügung mit dem der Desktop mit einem Webbrowser betrachtet und gesteuert werden kann.

Unter Windows und Mac OS X läuft in der Regel kein lokaler X-Server (kann aber etwa von der Mac OS X-Installations-DVD nachinstalliert werden), so dass VNC den Desktop :0 und somit die TCP-Portnummer 5900 belegt. Dieser Port wird ebenfalls benutzt vom Unix-Programm x11vnc, welches den lokalen X-Server :0 als VNC-Desktop anbietet.

Handshake & Authentifizierung[Bearbeiten]

Sobald die TCP-Verbindung aufgebaut ist, sendet der Server die von ihm unterstützte RFB-Versionsnummer zum Client, worauf dieser mit seiner Protokollversionsnummer antwortet. Die Protokollversion hat den Aufbau hauptversion.nebenversion. Es wird davon ausgegangen, dass die Protokollversionen mit gleicher Hauptversion untereinander kompatibel sind. Die größte von beiden Partnern unterstützte Versionsnummer gilt für die nachfolgende Verbindung als vereinbart. Es steht aber jedem Kommunikationspartner frei, nach dem Austausch der Protokollversionen die Verbindung zu beenden, wenn mit der ausgehandelten Protokollversion nicht kommuniziert werden kann oder soll.

Versionskennungen[Bearbeiten]

Die Versionskennung ist stets ein 12 Byte langer ASCII-String, welcher mit einem LineFeed-Zeichen abgeschlossen wird. Die gebräuchlichsten Versionen sind 3.3, 3.7 und 3.8:

Version Kennung Kennung (hex) Veröffentlicht
3.3 RFB 003.003\n 52 46 42 20 30 30 33 2E 30 30 33 0A Januar 1998 von Olivetti Research Laboratories (ORL)
3.7 RFB 003.007\n 52 46 42 20 30 30 33 2E 30 30 37 0A Juli 2003 von RealVNC Ltd.
3.8 RFB 003.008\n 52 46 42 20 30 30 33 2E 30 30 38 0A Juli 2005 von RealVNC Ltd.

Einige Clients melden fehlerhafterweise eine Protokollversion 3.5. Diese sollte serverseitig wie Version 3.3 behandelt werden.

Weblinks[Bearbeiten]