Virtual Network Computing ( VNC ) är ett system för fjärråtkomst till en dators skrivbord med hjälp av RFB - protokollet ( Remote FrameBuffer ) . Styrningen utförs genom att sända tangenttryckningar på tangentbordet och musrörelserna från en dator till en annan och vidarebefordra innehållet på skärmen via ett datornätverk .
VNC-systemet är plattformsoberoende: en VNC-klient som kallas VNC viewer som körs på ett operativsystem kan ansluta till en VNC-server som körs på vilket annat operativsystem som helst. Det finns klient- och serverimplementationer för nästan alla operativsystem, inklusive Java (inklusive den mobila J2ME -plattformen ). Flera klienter kan ansluta till en VNC-server samtidigt. De mest populära sätten att använda VNC är teknisk fjärrsupport och tillgång till en arbetsdator hemifrån.
VNC skapades på Olivetti & Oracle Research Lab , som vid den tiden ägdes av Olivetti och Oracle Corporation . 1999 förvärvades labbet av AT&T , som stängde sin FoU-avdelning 2002 . De ursprungliga källkoderna är tillgängliga under GPL , liksom många VNC-varianter som för närvarande finns.
Namnet kom från Videotiles tunna klientdatornätverk , som var en LCD-skärm med penninmatning och en snabb ATM- nätverksanslutning. VNC är i huvudsak en mjukvaruimplementering av "ATM Network Computer".
Utvecklare som arbetade med VNC på AT&T Research Lab:
VNC har två delar: en klient och en server. Server - ett program som ger åtkomst till skärmen på datorn som den körs på. En klient (eller tittare) är ett program som tar emot en skärmbild från en server och interagerar med den via RFB-protokollet.
RFB ( eng. remote framebuffer ) är ett enkelt klient-server-nätverksprotokoll på applikationsnivå för fjärråtkomst till datorns grafiska skrivbord, som används i VNC. Eftersom det fungerar på rambuffertnivå kan det appliceras på grafiska fönstersystem, som X Window System , Windows , Quartz Compositor .
I början av sin utveckling var RFB ett relativt enkelt protokoll baserat på grafiska primitiver: " sätta en rektangel av pixeldata i en position som ges av koordinater ". Servern skickar små rektanglar till klienten. Ett sådant system i sin primitiva form förbrukar betydande trafik. För att minska belastningen på kanalen används olika metoder. Det finns olika kodningar - metoder för att bestämma det mest effektiva sättet att överföra dessa rektanglar. RFB-protokollet tillåter klienten och servern att "förhandla" vilken kodning som ska användas. Den enklaste kodningsmetoden, som stöds av alla klienter och servrar, är "råkodning" , där pixlar sänds i ordning från vänster till höger, uppifrån och ned, och efter överföring av det ursprungliga skärmtillståndet överförs endast ändrade pixlar. Denna metod fungerar mycket bra för mindre ändringar av skärmbilden (flytta muspekaren på skrivbordet, skriva under markören), men flödet blir mycket högt när man ändrar ett stort antal pixlar samtidigt, till exempel när man tittar på en video i helskärmsläge. Under utvecklingen har protokollet fått olika ytterligare funktioner och alternativ, såsom filöverföring, komprimering och säkerhet.
Som standard använder RFB TCP -portintervallet 5900 till 5906. Varje port representerar en motsvarande X- serverskärm (portarna 5900 till 5906 är associerade med skärmarna :0 till :6). Java-klienter, tillgängliga i många implementeringar som använder en inbäddad webbserver för detta ändamål, såsom RealVNC, ansluter till skärmar på samma sätt, men på ett portintervall från 5800 till 5806. Många Windows-datorer kan endast använda en port. p.g.a. bristen på fleranvändarfunktioner som är inneboende i UNIX - system. För Windows-system är standardskärmen :0, vilket motsvarar port 5900.
Det finns också möjlighet till en omvänd anslutning från servern till klienten. I det här fallet växlas klienten till lyssningsläge och anslutningen initieras av servern på klientens 5500 TCP-port .
Portar kan ändras.
Kodning och förlängningsmetoder publicerade från TigerVNC-projektet:
|
|
Till en början använder VNC inte trafikkryptering, men i autentiseringsproceduren sänds inte lösenordet i klartext, utan utmaningssvarsalgoritmen med DES-kryptering används (den effektiva nyckellängden är 56 bitar). I många implementeringar finns det en gräns på 8 tecken för längden på lösenordet, och om dess längd överstiger 8 tecken, trunkeras lösenordet och extra tecken ignoreras.
Om du behöver stark kryptering av hela VNC-sessionen kan den upprättas över SSL , SSH eller VPN- tunnel, såväl som över IPsec . IPsec-tekniken stöds av de allra flesta moderna operativsystem och används både vid anslutning via Internet och i lokala nätverk . SSH-klienter låter dig skapa SSH-tunnlar för alla större plattformar ( Linux , BSD , Windows , Macintosh , etc.) såväl som för mindre populära.
Dessutom stöder många moderna versioner av VNC tillägg till standardprotokollet som implementerar kryptering och/eller komprimering av VNC-trafik, differentiering genom ACL- åtkomstlistor och olika autentiseringsmetoder.
EchoVNC använder OpenSSL för att kryptera anslutningar, och VNC-sessionen är krypterad, inklusive autentisering och dataöverföring. Stöder även filöverföring och chatt. Om klienten inte stöder OpenSSL-kryptering avaktiveras kryptering automatiskt.
UltraVNC låter dig använda en speciell open source -plugin som krypterar hela VNC-sessionen med AES- eller RC4-algoritmer , inklusive autentisering och dataöverföring. Det finns också alternativ för autentisering baserad på NTLM och användarkonton i Active Directory . UltraVNC låter dig överföra filer mellan server och klient i vilken riktning som helst.
RealVNC i den kommersiella versionen av produkten använder AES-algoritmen för anslutningskryptering och RSA-algoritmen för autentisering.
Workspot har släppt en patch för VNC som implementerar AES-krypteringsalgoritmen.