VNC Server Protokoll verstehen: Unterschied zwischen den Versionen

Aus Hackerspace Ffm
Wechseln zu: Navigation, Suche
(Die Seite wurde neu angelegt: „== Hintergrund == Das VNC Protokoll eignet sich gut, um es auch bei Microcontrollern mit Netzwerkzugang wie z.B. den ESP32 / ESP8266 zu nutzen. Damit lassen si…“)
 
Zeile 4: Zeile 4:
 
== Protokoll ==
 
== Protokoll ==
 
Das Protokoll ist in der [https://datatracker.ietf.org/doc/html/rfc6143 RFC6143] beschrieben. Die Komplexität würde ich als mittelschwer beschreiben: Also nicht ganz so einfach wie ein HTTP-Request, aber auch super komplex. Ich habe erfolgreich einen VNC Server auf TCP-Basis programmiert, mit dem der Inhalt eines kleinen Displays übertragen und manipulitert werden kann.
 
Das Protokoll ist in der [https://datatracker.ietf.org/doc/html/rfc6143 RFC6143] beschrieben. Die Komplexität würde ich als mittelschwer beschreiben: Also nicht ganz so einfach wie ein HTTP-Request, aber auch super komplex. Ich habe erfolgreich einen VNC Server auf TCP-Basis programmiert, mit dem der Inhalt eines kleinen Displays übertragen und manipulitert werden kann.
 +
 +
Während in der RFC die Details des Protokolls gut beschrieben sind, gibt es einige Dinge, die noch etwas anders beschrieben werden können.
 +
 +
=== Zwei Haupzustände der VNC Verbindung ===
 +
Eine VNC Verbindung kann im wesentlichen in zwei Hauptzustände unterteilt werden:
 +
 +
# Verbindungsaufbau
 +
# Fernsteuerung
 +
 +
=== Verbindungsaufbau ===
 +
Während des Verbindungsaufbaus funktioniert das Prokoll im strengen Halbduplex (Handshake): Es folgt einer strikten Struktur und es gibt immer genau eine Anfrage und genau eine Antwort darauf. Die Nachrichten sind hier genau vorgegeben und haben daher typischerweise kein separates Header-Byte, was die Art der Nachricht vorgibt.
 +
 +
Für eine Verbindung ohne Passwort-Authentifikation sieht das wie folgt aus und kann recht simpel "hart" kodiert werden:
 +
 +
=== Fernsteuerung ===
 +
 +
Am Ende davon geht das Protokoll in den Fernsteuerungsmodus über - hier ist die Situation anders:

Version vom 19. November 2023, 19:15 Uhr

Hintergrund

Das VNC Protokoll eignet sich gut, um es auch bei Microcontrollern mit Netzwerkzugang wie z.B. den ESP32 / ESP8266 zu nutzen. Damit lassen sich Bildschirminhalte von Displays in Echtzeit übertragen, was bei der Entwicklung von Nutzen sein kann. Sogar "Headless" Anwendungen sind denkbar, also grafische Anwendungen auf dem ESP laufen lassen, der selbst kein Display hat, wo die Steuerung dann ausschließlich über VNC erfolgt.

Protokoll

Das Protokoll ist in der RFC6143 beschrieben. Die Komplexität würde ich als mittelschwer beschreiben: Also nicht ganz so einfach wie ein HTTP-Request, aber auch super komplex. Ich habe erfolgreich einen VNC Server auf TCP-Basis programmiert, mit dem der Inhalt eines kleinen Displays übertragen und manipulitert werden kann.

Während in der RFC die Details des Protokolls gut beschrieben sind, gibt es einige Dinge, die noch etwas anders beschrieben werden können.

Zwei Haupzustände der VNC Verbindung

Eine VNC Verbindung kann im wesentlichen in zwei Hauptzustände unterteilt werden:

  1. Verbindungsaufbau
  2. Fernsteuerung

Verbindungsaufbau

Während des Verbindungsaufbaus funktioniert das Prokoll im strengen Halbduplex (Handshake): Es folgt einer strikten Struktur und es gibt immer genau eine Anfrage und genau eine Antwort darauf. Die Nachrichten sind hier genau vorgegeben und haben daher typischerweise kein separates Header-Byte, was die Art der Nachricht vorgibt.

Für eine Verbindung ohne Passwort-Authentifikation sieht das wie folgt aus und kann recht simpel "hart" kodiert werden:

Fernsteuerung

Am Ende davon geht das Protokoll in den Fernsteuerungsmodus über - hier ist die Situation anders: