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).
Charakteristika
Protokol RFB přenáší pohyb myši a stisknuté klávesy na klávesnici z počítače, na kterém běží klient, na počítač, na kterém běží serverová část VNC a zároveň přenáší ke klientovi změny, ke kterým na serveru došlo.
VNC je platformně nezávislý, protože používá framebuffer. Klient (anglicky VNC viewer) může být spuštěn na odlišném operačním systému, než je spuštěn VNC server. Serverová část ke své činnosti nepotřebuje grafickou kartu ani běžící grafické prostředí, protože vytváří obraz pracovní plochy v operační paměti počítače. VNC server může klientovi zasílat také obraz aktivního grafického uživatelského rozhraní (a umožnit tak spolupráci dvou či více osob na jedné ploše).
Klientská i serverová část VNC je k dispozici pro různé operační systémy, které používají grafické uživatelské rozhraní. Na jeden server může být připojeno najednou více klientů. VNC je velmi oblíbený nástroj pro vzdálenou technickou podporu nebo přístup na pracovní počítač z domova a podobně.
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ží jsou publikovány jako open source pod GNU General Public Licence. V roce 1999 AT&T získaly ORL a v roce 2002 ukončily výzkum.
Vývojáři, kteří pracovali na VNC:
- Tristan Richardson
- Andy Harter
- Quentin Stafford-Fraser
- James Weatherall
- Ken Wood
- Andy Hopper
- Charles McLachlan
- Paul Webster
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 jako open source i komerčního software pod novým jménem.
Popis funkce
VNC systém se skládá z klienta, serveru a komunikačního protokolu.
- VNC server je program, který sdílí obrazovku počítače, na kterém je nainstalován.
- VNC klient je program, který komunikuje se serverem a ve kterém vzdáleně ovládáte sdílenou obrazovku.
- VNC protokol (RFB) je velmi jednoduchý. Je založen na jednom grafickém obrazci poslaném ze serveru ke klientovi ("vloží obdélník pixelů dat na specifické souřadnice X,Y") a zároveň přenáší na server změny, ke kterým na klientovi došlo.
Server pošle malé obdélníky framebufferu ke klientovi. Ve své nejjednodušší formě může VNC protokol vytížit celou šířku pásma. Proto byly navrženy další metody k redukci komunikačního přetížení. Například, jsou zde rozdílná kódování (metody určující nejefektivnější přenos obdélníků). Proto VNC protokol umožňuje klientovi a serveru se předem dohodnout, které kódováni použijí. Nejjednodušší metoda kódování, která je podporována všemi klienty a servery je „raw kódování“, kde jsou pixely dat posílány po řádcích zleva do prava a potom, co se přenese originální obraz, se přenášejí pouze obdélníky, které se změnily. Toto kódování pracuje velmi dobře, jestliže se mění jen malá část obrazovky, (jako pohybování myší přes pracovní plochu nebo psaní textu), ale požadavky na šířku pásma se zvyšují, jestliže se mění větší počet pixelů v jednom okamžiku, podobně jako když rolujeme obrazovku nebo sledujeme video.
VNC standardně používá TCP porty 5900 až 5906, každý port odpovídá oddělené obrazovce.V mnoha implementacích jako RealVNC je na portech 5800 do 5806 dostupný java viewer, který umožňuje klientovi komunikovat například přes webový prohlížeč s podporou java. Ostatní porty mohou být použity v případě, že server a klient jsou příslušně nakonfigurovány. Používání VNC přes internet pracuje dobře, jestliže uživatel má broadband připojení na obou koncích. Nicméně může vyžadovat pokročilou NAT, firewall a router konfiguraci (port forwarding) k úspěšnemu propojení. Někteří uživatelé mohou zvolit privátní síťové aplikace, třeba jako Remobo nebo VPN aplikace jako Hamachi.
Na některých přístrojích nemusí mít server nutně fyzický displej. Xvnc může být považován za dva servery v jednom, pro aplikace to je X server, a pro VNC klienty, to je VNC server. Aplikace použivají Xvnc, jako normální X displej, a objevují se na připojených VNC klientech, nikoli na na fyzické obrazovce. Navíc displej, který sloužil VNC, není nutně stejný displej, který vidí uživatel na serveru. Na počítačích se systémy Unix/Linux, které podporují několik současných sekcí X11, VNC může sloužit již existující X11 sekcí nebo jeho vlastní sekci. Je také možné spustit několik VNC sekcí na stejném počítači. V Microsoft Windows VNC sekce je sekce aktualniho uživatele. VNC je často používán jako multiplatformní systém vzdáleného sdílení plochy.
Bezpečnost
Autentizace je u protokolu VNC celkem bezpečná, protože se pro ověření znalosti hesla používá systém náhodného požadavku a odpovědi, takže heslo nikdy neputuje po síti v nezašifrované podobě. Jestliže se však jednou připojíme, tak síťový provoz mezi klientem a serverem pracuje v nezašifrované podobě a může tak být po cestě odposloucháván. Pokud je pro nás bezpečnost velmi důležitá, doporučuje se protokol VNC „tunelovat“ přes bezpečnější protokol, kterým je třeba Secure Shell (SSH). SSH umožňuje pracovat se vzdáleným počítačem pomocí textového okna, kde se zobrazuje veškerá činnost prováděná na vzdáleném počítači. Veškerý provoz mezi takto připojenými počítači je šifrován pomocí techniky veřejného klíče, takže jen těžko může někdo tuto komunikaci zachytit a dekódovat. SSH tunel může být vytvořen Unix klientem, Microsoft Windows klientem, Macintosh klientem a mnoho jiných.
Zdroje
V tomto článku byl použit překlad textu z článku VNC na anglické Wikipedii.