Vzdálený protokol Framebuffer

RFB (Remote Framebuffer Protocol)
Rodina: Rodina internetového protokolu
Provozní oblast: Přenos dat,
obsah obrazovky, vstup uživatele
Přístav: 5900 / TCP (viz text )
RFB v zásobníku protokolu TCP / IP :
aplikace RFB
doprava TCP
Internet IP ( IPv4 , IPv6 )
Přístup k síti Ethernet Tokenový
autobus
Tokenový
prsten
FDDI ...

Remote Framebuffer Protocol ( RFB ) je síťový protokol pro přístup k grafické uživatelské rozhraní (GUI) z jiných počítačů . Používá jej VNC k přenosu obsahu obrazovky a vstupu uživatele .

Základní princip

Server RFB nabízí takzvanou „obrazovku“. Obvykle se na něm zobrazuje „ desktop “ nebo jeden program grafického pracovního prostředí, který běží na vzdáleném počítači nebo v přidružených aplikacích. RFB klient obvykle zobrazuje tuto plochu na počítači pracovní stanice uživatele, přijímá vstup uživatele ( klávesové vstupy , pohyby myši a kliknutí , atd) a předává je na RFB server, který řídí pracovní prostředí tam.

Jelikož funguje na úrovni bitmapově orientované grafické paměti ( anglicky framebuffer ), lze jej použít v jakémkoli okenním systému, jako je Windows , Mac OS nebo X11 . Obsah obrazovky se přenáší jako bitmapy, přičemž klientovi se obvykle přenášejí pouze příslušné změny - ve vhodném kódování, viz níže. K dispozici jsou barevné hloubky 8, 16 a 32 bitů na pixel, které RFB klient požaduje požadovanou barevnou hloubku a kódování ze serveru a server musí být veden podle přání klienta, pokud podporuje požadované kódování. Tento design umožňuje udržovat jednoduché požadavky na klienta a tím podporovat používání tenkých klientů .

RFB připojení jsou bezstavová , takže je možné bez problémů přerušit připojení nebo změnit RFB klienta bez ztráty související relace. Konečným cílem RFB a VNC je podpora vzdálené práce na počítačích v jednotném pracovním prostředí.

Čísla portů a počítačů

V původní unixové verzi VNC je každý server VNC vlastním X serverem a představuje přesně jeden X desktop ( Xvnc ). Ve výchozím nastavení používá VNC první bezplatné číslo serveru X. Pokud na počítači již běží místní server X, který tak :0zabírá plochu X , získá plochu VNC :1. TCP port číslo obsazené VNC je obvykle 5901 pod Unixem. Některé VNC servery poskytují portu 5800 nebo Java applet , s níž desktop lze prohlížet a řízeny s webovém prohlížeči . 5900 + desktopnummer5800 + desktopnummer

Ve Windows a Mac OS X obvykle není spuštěn žádný lokální X server, takže VNC :0zabírá plochu a tedy TCP port číslo 5900. Tento port používá také unixový program x11vnc , který :0nabízí existující místní X server jako plochu VNC.

Podrobnosti protokolu

ID handshake a verze

Jakmile je navázáno připojení TCP, server odešle klientovi podporované číslo verze RFB, na které klient odpoví svým číslem verze protokolu. Verze protokolu má strukturu hlavní .verze vedlejší verze . Předpokládá se, že verze protokolu se stejnou hlavní verzí jsou navzájem kompatibilní. Největší číslo verze podporované oběma partnery se považuje za dohodnuté pro následné připojení. Každý komunikační partner však může po výměně verze protokolu ukončit připojení, pokud vyjednanou verzi protokolu nelze nebo neměli použít pro komunikaci.

Identifikátor verze je vždy 12 bajtový řetězec ASCII , který je ukončen znakem LineFeed . Nejběžnější verze jsou 3.3, 3.7 a 3.8:

ID verzí RFB
verze Identifikátor Identifikátor (hex) Uvolněno
3.3 RFB 003.003\n 52 46 42 20 30 30 33 2E 30 30 33 0A Leden 1998 Olivetti Research Laboratories (ORL)
3.7 RFB 003.007\n 52 46 42 20 30 30 33 2E 30 30 37 0A Červenec 2003 RealVNC Ltd.
3.8 RFB 003.008\n 52 46 42 20 30 30 33 2E 30 30 38 0A Červenec 2005 RealVNC Ltd.

Někteří klienti nesprávně hlásí protokol verze 3.5. To by mělo být považováno za verzi 3.3 na straně serveru.

Ověření klienta

Pokud klient a server vyjednali kompatibilní verzi RFB, server odešle typ ověření, který od klienta vyžaduje. V původní specifikaci RFB jsou definovány dva typy: „VNC autentizace“ nebo „bez autentizace“. Jiné typy ověřování však byly definovány výrobci třetích stran. Klient rozhodne, který z typů ověřování nabízených serverem se chce na serveru ověřit.

inicializace

Po úspěšném ověření klient odešle 1bajtovou zprávu „ClientInit“. Toto obsahuje pouze příznak označující, zda klient přijímá "sdílené" připojení, tj. To znamená, že možná připojení ze serveru k dalším klientům jsou povolena nebo (pokud je nastaven příznak na 0) by měla být ukončena.

Server poté odešle zprávu „ServerInit“. Obsahuje název plochy (který je často odvozen od názvu počítače serveru), velikost plochy (v pixelech) a nativní barevnou hloubku a uspořádání pixelů na straně serveru. Obrazová data jsou ve výchozím nastavení přenášena na klienta v tomto formátu, pokud klient nepožádá o data v jiném formátu, který je pro klienta snazší zpracovat prostřednictvím zprávy „SetPixelFormat“.

Přenos dat

Klient určuje, zda a kdy mají být data přenesena. Odesílá na server vstup z místní klávesnice a myši. Kromě toho pravidelně zasílá zprávy „FramebufferUpdateRequest“ na server, který poté zasílá změny obsahu obrazovky (od posledního FramebufferUpdateRequest) klientovi.

V původní verzi RFB byly pohyby ukazatele myši také odeslány klientovi prostřednictvím běžných aktualizací vyrovnávací paměti rámců. Množství přenášených dat je poměrně vysoké a především související latence ztěžují provoz. U RFB verze 3.8 bylo zavedeno rozšíření, které umožňuje, aby byl ukazatel myši nakreslen lokálně klientem, a pouze vzhled šipky myši a její změny (např. Když se šipka myši pohybuje nad vstupním polem a poté do I Kurzor bude přenesen do klienta.

Od verze 3.8. změna velikosti plochy bude přenesena do klienta. V dřívějších verzích musel server ukončit připojení ke klientovi, protože velikost plochy bylo možné přenést na klienta pouze ve fázi inicializace připojení.

webové odkazy

  • RFC 6143 - Vzdálený protokol Framebuffer