Virtual Network Computing

Virtual Network Computing (VNC) je grafický program, který umožňuje vzdálené připojení ke grafickému uživatelskému rozhraní pomocí počítačové sítě. VNC pracuje jako klient–server, kde server vytváří grafickou plochu v operační paměti počítače a komunikuje přes síť s klientem, který plochu zobrazuje uživateli (většinou na jiném počítači). Pro komunikaci se používá protokol RFB (anglicky remote framebuffer), jehož cílem je minimalizovat objem přenášených dat mezi klientem a serverem a umožnit tak komunikaci i přes pomalejší datové linky (např. přes Internet). Podporované platformy operačních systémů v roce 2023 jsou operační systémy Microsoft Windows, MacOS, Linux, Raspberry Pi, Android a iOS.[1]

Historie

VNC byl původně vyvinut v Olivetti Research Laboratory (ORL) v Cambridge v Anglii. Původní zdrojový kód VNC a mnoho moderních odnoží je publikováno jako open source pod licencí GPL. V roce 1999 byla firma ORL koupena společností AT&T a v roce 2002 byl ukončen výzkum.

Na VNC pracovali vývojáři: Tristan Richardson, Andy Harter, Quentin Stafford-Fraser, James Weatherall, Ken Wood, Andy Hopper, Charles McLachlan, Paul Webster a další.

Po uzavření ORL byl v roce 2002 zformován několika členy vývojového týmu projekt RealVNC, jehož cílem bylo pokračovat ve vývoji VNC nejen jako open source, ale též komerčního software.

Systém VNC

Kompletní VNC systém se skládá z klienta, serveru a komunikačního protokolu. VNC server je program, který sdílí svoji obrazovku. VNC klient (viewer) je program, který zobrazuje sdílenou plochu a ovládá server. VNC protokol (RFB) používá bitmapové řešení, kde každý pixel má své souřadnice, kde plocha se bere jako jeden obrázek, na který se malují objekty a jako celek se to pošle klientovi. Přenášejí se pouze změny (například pohyb myši, psaní textu, zobrazování videa). V praxi pohneme kurzorem, server si přebere souřadnice, a na hostitelském počítači se provede pohyb kurzoru, který se pak zpětně promítne do klienta.

Připojení VNC

VNC standardně používá TCP porty 5900 až 5906. Každý port koresponduje s jednotlivými obrazovkami (:0 až :06). V mnoha implementacích (např. RealVNC) je dostupný Java prohlížeč na portech 5800 až 5806, umožňující klientům ovládání mimo jiné i přes webový prohlížeč, podporující Javu. Ostatní porty mohou být použity, pokud jsou klient i server patřičně zkonfigurovány. Použití VNC přes internet funguje dobře, pokud je na obou koncích širokopásmové připojení. Nicméně někdy je třeba pokročilá konfigurace NAT, firewalu a routeru, aby spojení bezproblémově prošlo skrz. Je možné použít VPN nebo Remobo aplikace pro usnadnění použití přes internet.

Xvnc

Xvnc je Unixovský VNC server, který je založen na standardním X serveru. Ve skutečnosti jsou to dva servery v jednom. Vůči aplikacím je to X server a vůči vzdálenému VNC uživateli je to VNC server. Jelikož číslo pracovní plochy VNC serveru a X serveru je to samé, můžeme na ni v obou případech odkazovat. Obvykle má pracovní plocha v X systému číslo 0. VNC server si vybere první volnou plochu a při spuštění její číslo oznámí.

Použití VNC

VNC podporuje vícenásobné připojení k jedné ploše. Ovšem pokud jsou jednotliví klienti v režimu "view only". Je možné nastavit chování jako třeba u IM programů, záleží na požadavcích uživatele. VNC se většinou používá jako multiplatformní systém vzdálené plochy. Například Apple Remote desktop pro Mac OS X (a novější Back to My Mac ve verzi Leopard – Mac OS X 10.5) spolupracuje s VNC a připojí se k ploše linuxového uživatele přes Xvnc, nebo přes TightVNC. Z Linuxu se TightVNC viewer připojí k OS X pomocí nabízeném Apple Remote Desktopem, pokud je aktivována volba VNC, nebo na VNC server běžící na Microsoft Windows. Aqua COnnect Terminal Server používá VNC pro dosažení multiplatformního spojení přinášející vzdálenou plochu MacOS na PC, Mac, smartphony a iPhone.

Bezpečnost

Komunikace mezi klientem a serverem standardně zabezpečena není. Samotná autentizace je poměrně bezpečná, protože se pro ověření hesla používá systém challenge-response (náhodná výzva a kontrolovaná odpověď), takže heslo neputuje po síti v nezašifrované podobě (je omezen útok Replay attack). Po autentizaci už však síťový provoz mezi klientem a serverem zašifrován není, a tak může být veškerá komunikace odposlouchávána (a rekonstruován nejen obsah obrazovky, ale zachyceny i všechny pohyby myši a stisky kláves, tj. útok Man in the middle). Proto se doporučuje VNC relaci navázat skrz zabezpečený tunel (SSH, VPN) nebo použít doplňující moduly, které umožňují automaticky veškerou komunikaci zašifrovat.

Reference

V tomto článku byl použit překlad textu z článku VNC na anglické Wikipedii.

  1. Device access | VNC® Connect. RealVNC® [online]. [cit. 2023-06-05]. Dostupné online. (anglicky) 

Související články

Externí odkazy