Virtual Network Computing ( VNC ) este un sistem de acces de la distanță la un desktop de computer folosind protocolul RFB ( Remote FrameBuffer ) . Controlul se realizează prin transmiterea tastelor de pe tastatură și mișcările mouse-ului de la un computer la altul și transmiterea conținutului ecranului printr-o rețea de calculatoare .
Sistemul VNC este independent de platformă: un client VNC numit VNC viewer care rulează pe un sistem de operare se poate conecta la un server VNC care rulează pe orice alt sistem de operare. Există implementări client și server pentru aproape toate sistemele de operare, inclusiv Java (inclusiv platforma mobilă J2ME ). Mai mulți clienți se pot conecta la un server VNC în același timp. Cele mai populare moduri de a utiliza VNC sunt suportul tehnic de la distanță și accesul la un computer de serviciu de acasă.
VNC a fost creat la Olivetti & Oracle Research Lab , care era deținut la acea vreme de Olivetti și Oracle Corporation . În 1999, laboratorul a fost achiziționat de AT&T , care și-a închis departamentul de cercetare și dezvoltare în 2002 . Codurile sursă originale sunt disponibile sub GPL , la fel ca multe variante VNC existente în prezent.
Numele provine de la rețeaua de computere pentru client subțire Videotile , care era un afișaj LCD cu intrare pe stilou și o conexiune rapidă la rețea ATM . În esență, VNC este o implementare software a „ATM Network Computer”.
Dezvoltatori care au lucrat la VNC la AT&T Research Lab:
VNC are două părți: un client și un server. Server - un program care oferă acces la ecranul computerului pe care rulează. Un client (sau vizualizator) este un program care primește o imagine de ecran de la un server și interacționează cu aceasta prin protocolul RFB.
RFB ( eng. remote framebuffer ) este un protocol de rețea client-server simplu la nivel de aplicație pentru acces de la distanță la desktop-ul grafic al computerului, utilizat în VNC. Deoarece funcționează la nivel de framebuffer , poate fi aplicat sistemelor de ferestre grafice, cum ar fi X Window System , Windows , Quartz Compositor .
La începutul dezvoltării sale, RFB era un protocol relativ simplu bazat pe primitive grafice: „ puneți un dreptunghi de date pixeli într-o poziție dată de coordonate ”. Serverul trimite dreptunghiuri mici către client. O astfel de schemă în forma sa primitivă consumă trafic semnificativ. Pentru a reduce sarcina pe canal, se folosesc diverse metode. Există diverse codificări - metode pentru a determina cel mai eficient mod de a transfera aceste dreptunghiuri. Protocolul RFB permite clientului și serverului să „negociere” ce codificare va fi folosită. Cea mai simplă metodă de codare, acceptată de toți clienții și serverele, este „codificarea brută” , în care pixelii sunt transmiși în ordine de la stânga la dreapta, de sus în jos, iar după transmiterea stării inițiale a ecranului, se transmit doar pixelii modificați. Această metodă funcționează foarte bine pentru modificări minore ale imaginii de pe ecran (deplasarea cursorului mouse-ului pe desktop, tastarea sub cursor), dar fluxul devine foarte mare atunci când se schimbă un număr mare de pixeli în același timp, de exemplu, când vizionați un videoclip în modul ecran complet. În timpul dezvoltării sale, protocolul a dobândit diverse caracteristici și opțiuni suplimentare, cum ar fi transferul de fișiere, compresia și securitatea.
În mod implicit, RFB utilizează intervalul de porturi TCP de la 5900 la 5906. Fiecare port reprezintă un ecran de server X corespunzător (porturile 5900 la 5906 sunt asociate cu ecranele :0 la :6). Clienții Java, disponibili în multe implementări care utilizează un server web încorporat în acest scop, precum RealVNC, se conectează la ecrane în același mod, dar pe un interval de porturi de la 5800 la 5806. Multe computere Windows pot folosi un singur port. lipsa caracteristicilor multi-utilizator inerente sistemelor UNIX . Pentru sistemele Windows, ecranul implicit este :0, care corespunde portului 5900.
Există și posibilitatea unei conexiuni inverse de la server la client. În acest caz, clientul este comutat în modul de ascultare și conexiunea este inițiată de server pe portul 5500 TCP al clientului .
Porturile pot fi schimbate.
Metode de codificare și extensie publicate din proiectul TigerVNC:
|
|
Inițial, VNC nu folosește criptarea traficului, însă, în procedura de autentificare , parola nu este transmisă în text clar, ci se folosește algoritmul de provocare-răspuns cu criptare DES (lungimea efectivă a cheii este de 56 de biți). În multe implementări, există o limită de 8 caractere pentru lungimea parolei, iar dacă lungimea acesteia depășește 8 caractere, atunci parola este trunchiată, iar caracterele suplimentare sunt ignorate.
Dacă aveți nevoie de criptare puternică a întregii sesiuni VNC, aceasta poate fi stabilită prin tunel SSL , SSH sau VPN , precum și prin IPsec . Tehnologia IPsec este susținută de marea majoritate a sistemelor de operare moderne și este utilizată atât la conectarea prin Internet , cât și în rețelele locale . Clienții SSH vă permit să creați tuneluri SSH pentru toate platformele majore ( Linux , BSD , Windows , Macintosh , etc.), precum și pentru cele mai puțin populare.
De asemenea, multe versiuni moderne de VNC acceptă extensii la protocolul standard care implementează criptarea și/sau compresia traficului VNC, diferențierea prin liste de acces ACL și diverse metode de autentificare.
EchoVNC folosește OpenSSL pentru a cripta conexiunile, iar sesiunea VNC este criptată, inclusiv autentificarea și transferul de date. De asemenea, acceptă transferul de fișiere și chat. Dacă clientul nu acceptă criptarea OpenSSL, atunci criptarea este dezactivată automat.
UltraVNC vă permite să utilizați un plugin special open source care criptează întreaga sesiune VNC folosind algoritmi AES sau RC4 , inclusiv autentificarea și transferul de date. Există, de asemenea, opțiuni de autentificare bazate pe NTLM și conturi de utilizator în Active Directory . UltraVNC vă permite să transferați fișiere între server și client în orice direcție.
RealVNC în versiunea comercială a produsului utilizează algoritmul AES pentru criptarea conexiunii și algoritmul RSA pentru autentificare.
Workspot a lansat un patch pentru VNC care implementează algoritmul de criptare AES.