Virtual Network Computer
VNC (pour Virtual Network Computing) est un logiciel libre dont le but est de fournir un accès distant à l'écran et aux périphériques d'entrée utilisateur (clavier, souris) d'une machine, à partir d'un poste client. Ceci indépendamment de l'architecture : il est possible de manipuler à distance un poste sous MS-Windows à partir d'une station UNIX ou Macintosh. VNC est un logiciel libre développé par l'Olivetti Research Laboratory (plus récemment par AT&T) et supporté par la communauté du logiciel libre.
Présentation de VNC
VNC permet réellement de prendre le contrôle d'une machine à distance, c'est à dire que le client affiche le contenu de l'écran de la machine manipulée en temps réel, et que toute manipulation sur le client à des conséquences réelles sur le serveur. Par exemple, le curseur de la souris se déplacera réellement sur le poste serveur lorsque l'utilisateur déplace le curseur sur le client, et les touches du clavier enfoncées sur le poste client auront le même effet sur le poste serveur (uniquement dans le cas d'un serveur Macintosh ou MS-Windows).
Le client ainsi que le serveur existent sous plusieurs plates-formes Unix, sous MS-Windows, sous Macintosh. Mais une version Java du client a été développée, ce qui étend encore les plates-formes possibles côté client.
Avantages
L'intérêt de VNC est multiple :
- il permet d'administrer à distance une machine, simplifiant l'administration de réseaux
- il permet d'effectuer l'équivalent d'un telnet (connexion à distance) sur une machine dont le système d'exploitation ne le permet pas (par exemple Windows NT ou Macintosh)
- il permet de manipuler à distance l'interface graphique d'une station UNIX à partir d'une machine ne disposant pas de serveur X : sous MS-Windows, sous Macintosh, ou même sous GNU/Linux en utilisant la svgalib (il existe même une version de GNU/Linux tenant sur une seule disquette, avec la version svgalib du client VNC, sur laquelle il suffit de booter).
Modèle client/serveur
VNC est composé d'un serveur et d'un client :
- le serveur est responsable de la génération d'un display (une sorte d'écran virtuel qui peut être accédé à distance). Le résultat est indépendant de la plate-forme (c'est à dire que le client peut accéder au serveur de la même manière que ce soit sur une station UNIX, ou sur un PC sous MS-Windows).
- le client est quand à lui responsable de la connexion avec le serveur, et affiche le résultat de ses requêtes sur l'écran de l'application. Aucune information n'est stockée dans le client, qui se contente de faire suivre les événements qu'il reçoit de l'utilisateur (clics de la souris, ou utilisation du clavier) vers le serveur, ou de faire suivre les résultats fournis par le serveur vers l'utilisateur.
Il est précisé dans la conception de VNC que le client doit être le plus simple possible (thin-client), ce qui rend l'écriture de clients très simple, tout comme le portage sur des systèmes variés est facilité. Le système requis pour faire fonctionner l'application est de plus ainsi diminué.
Le principe est que le serveur envoie des portions de l'écran au client, par paquets de rectangles (ou encore framebuffer updates). Ces mises à jour sont envoyées au client par le serveur uniquement sur demande du client. Ceci permet au client d'effectuer un contrôle plus subtil selon plusieurs paramètres (par exemple la vitesse de transmission, qui lui permet d'estimer le meilleur taux de rafraîchissement selon l'encombrement du réseau).
Ce mécanisme permet de rendre utilisable la manipulation d'une machine à travers un réseau très lent (j'ai personnellement fait des tests de manipulation d'une machine sous Windows NT située physiquement à Paris à partir d'un poste client situé physiquement en Irlande du Nord).
Comparaisons
Au moins deux logiciels plus ou moins similaires existent :
- MetaFrame, de l'éditeur américain Citrix. Ce logiciel est propriétaire, et je n'ai pas eu l'occasion de le tester. Contrairement à VNC, il semble beaucoup plus dépendant de la plate-forme (Windows NT)
- PC Anywhere. Je n'ai que très peu d'informations sur ce logiciel, apparemment propriétaire lui aussi.
Système requis
- côté serveur :
- un système parmi : UNIX, MS-Windows, MacOS pour PPC
- un peu de bande passante, ainsi que quelques mégas de mémoire vive
- côté client :
- un système parmi ceux cités sur le site web des développeurs de VNC
- dépendemment de l'architecture, suffisament de ressources pour exécuter une application graphique de petite taille (à peu près 150K dans le cas du client MS-Windows)
Licence
La licence de VNC est la GPL, dont une traduction française est disponible sur le site web d'APRIL. Les développeurs de VNC expliquent leur choix sur leur site web.
Bien sûr, certains systèmes d'exploitation cités dans cet article ne sont pas libres. En conséquence, VNC est donc plus souvent livré sous forme binaire dans ce cas là.
Distribution
- VNC est téléchargeable directement à partir de la page web de l'équipe de développement.
- mais un site FTP français hébergé par le laboratoire de physique statistique de l'ENS effectue un miroir des sources