Intro Editorial A Propos Sommaire Quizz Musiques Pub Archives
Obligement


Dossier : VNC par Nicolas Gressard



VNC

Qu'est-ce que VNC ?

VNC signifie "Virtual Network Computing". VNC est un protocole client-serveur libre de prise de contrôle d'une machine à distance multi plate-forme. La version originelle a été développée par Olivetti Research Laboratory. Début 1999, AT&T a racheté ORL et a poursuivi le développement de VNC. VNC est actuellement représenté officiellement par la société RealVNC.
Dans ce cas précis, "multi plate-forme" ne signifie pas uniquement qu'il est implémenté sur plusieurs plates-formes, mais également que l'on peut contrôler une machine qui appartient à une plate-forme à partir d'une machine appartenant à une autre plate-forme. En clair, le protocole est conservé d'une implémentation à l'autre. "Prise de contrôle à distance" signifie que le clavier et l'écran de la machine cliente deviennent le clavier et l'écran de la machine serveur. Ceci est très pratique lorsque l'on a à intervenir sur une machine distante par l'intermédiaire du net par exemple ou même pour éviter à avoir à se lever de sa chaise pour accéder à une machine du réseau local ou encore pour accéder à une machine sans écran/clavier. Pour les connaisseurs, VNC est au mode graphique ce que SSH ou Telnet est au mode texte. Les logiciels commerciaux les plus connus ayant les mêmes fonctionnalités sont PCAnyWhere de Symantec et MetaFrame de Citrix, tous deux sur PC uniquement.

Comment ça marche VNC ?

VNC Le principe de fonctionnement est que le "serveur" envoie, via TCP/IP,  des portions de l'écran au client, par paquets de rectangles (ou encore framebuffer updates). Ces mises à jour sont envoyées 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 de réseau). Parallèlement, le client envoie au serveur, toujours via TCP/IP,  toute action qui a été effectuée sur le clavier ou la souris afin que ce dernier les répercute sur la machine sur lequel il tourne.

Deux programmes sont donc nécessaires pour mettre en oeuvre VNC :

Le client VNC : c'est le programme à faire tourner sur la machine dont on va utiliser le clavier et l'écran pour accéder à la machine distante. Il faut bien sûr utiliser une version compilée pour la plate-forme que l'on va utiliser comme client.

Le serveur VNC : c'est le programme à faire tourner sur la machine dont on souhaite pouvoir prendre le contrôle. Il faut ici aussi bien entendu utiliser une version compilée pour la plate-forme que l'on va utiliser comme serveur.

De base, le protocole de VNC est assez (voire très)  lent et n'est réellement utilisable que sur des réseaux locaux. Au fil des implémentations, des modes de compression de données ont fait leur apparition de façon à permettre son utilisation de façon honorable via des lignes RTC ou ADSL.
La version de VNC la plus efficace dans ce domaine est certainement TightVNC pour Windows, Unix, Linux et Java.
Citons également une autre version de VNC extrêmement aboutie (avec transfert de fichier, tchat, barre d'icônes,...) : UltraVNC mais pour windows uniquement :(.
Lorsqu'un client et un serveur VNC communiquent, ils utilisent en priorité les protocoles de compression qui leur sont commun. Si aucun protocole de compression commun n'est  trouvé (ou si l'un ou l'autre des programmes n'en supporte pas), la liaison se fait dans le mode d'origine de VNC, c'est-à-dire sans compression. Le numéro de port TCP utilisé par défaut par VNC est le 5900. Il est souvent question de numéro d'écran (display number) dans les serveurs et clients VNC. Ceci est directement lié au numéro de port à utiliser. Le "display" 0 correspond donc au port 5900, le "display" 1 correspond au port 5901, etc.

Les implémentations de VNC sur Amiga

Puisqu'il s'agit de réseau, et comme d'habitude sur Amiga, il existe des choses dans le domaine de VNC.

1. Les serveurs :

Il existe (à ma connaissance) deux implémentations de serveur VNC 68K :

AmiVNC de Stéphane Guillard que l'on peut trouver sur le "matou femelle" ici : de.aminet.net/pub/aminet/comm/tcp/AmiVNC.lha. Sa page web se trouvant ici : s.guillard.free.fr/AmiVNC/AmiVNC.htm.

AmiVNC présente l'avantage de fonctionner avec les modes natifs de l'Amiga (OCS, ECS, AGA), mais aussi avec les environnements RTG Picasso96 et CyberGraphX.

AVNC de Denis Spach que l'on peut trouver ici : dspach.free.fr/amiga/avnc/.

AVNC ne fonctionne qu'avec les modes RTG Picasso96. Son efficacité est cependant accrue par le fait qu'il utilise un pilote (Monitor) P96 spécial lui permettant de rafraîchir uniquement les zones d'écran effectivement modifiées. Ne disposant pas de machine sous P96, je n'ai pas pu le l'essayer :(.

2. Les clients :

Il existe (toujours à ma connaissance ;) également deux clients VNC sur Amiga. L'un 68K et l'autre pour MorphOS.

VVA de Denis Spach que l'on peut trouver ici : dspach.free.fr/amiga/vva/index.html.

MorphVNC de Mark Olsen (alias BigFoot) que l'on peut trouver sur le "pote réseau" ici : de.aminet.net/pub/aminet/comm/tcp/MorphVNC.lha.
Comme son nom l'indique, ce client fonctionne sous MorphOS. Il présente l'avantage de supporter le protocole de compression ZLib.

Utiliser AmiVNC, VVA et MorphVNC sur Amiga

Mise en oeuvre du serveur AmiVNC :

AmiVNC est distribué en deux versions : "Planar" et "RTG & Planar". La version "Planar" supporte uniquement les modes natifs de l'Amiga, tandis que l'autre supporte en plus les modes RTG Picasso96 et CGX. Chacune de ces deux versions est distribuée compilée pour 68020 et 68060.

Avant toute chose, il faut créer le mot de passe qui sera demandé aux clients se connectant. Il faut considérer qu'il est obligatoire de créer un mot de passe sous peine de gros problèmes avec la majorité des clients/serveurs VNC existants. Pour créer le mot de passe avec AmiVNC, il suffit de lancer l'exécutable avec la ligne de commande suivante : "AmiVNC.0x0 -pmot_de_passe". Ceci a pour effet de créer un fichier dans "S:" contenant le mot de passe sans pour antant lancer le serveur VNC. Pour lancer enfin le serveur VNC (sans paramètres particuliers), il suffit d'exécuter "AmiVNC.0x0". Il est possible de spécifier le numéro de port sur lequel le serveur va "écouter" avec l'option "-s" sur la ligne de commande ou avec l'option "PORT=" dans les tooltypes de l'icône.

AmiVNC n'est pas particulièrement efficace puisqu'il se contente de renvoyer une image de l'écran au client à intervalles réguliers. Ceci a trois effets directs : sa lenteur, la consommation de CPU, et la consommation de bande passante. Il a cependant l'avantage de fonctionner quelque soit la configuration vidéo de la machine. Il fonctionne d'ailleurs également sur Pegasos sous MorphOS. Ce serveur VNC ne supporte que le protocole de base et n'intègre pas le support d'algorithmes de compression. Stéphane Guillard nous informe sur son site qu'une version PPC/WarpOS existe et fonctionne mais cette dernière ne semble pas distribuée :( : Stéphane, si tu nous r'gardes...

Petite ombre au tableau, je ne suis pas parvenu à déplacer de fenêtres depuis un client : il semble que le serveur ne "voit" pas lorsque le bouton de la souris reste enfoncé. Suis-je le seul ? (ceci que je fasse tourner AmiVNC sous OS3.9 ou MorphOS et quel que soit le client utilisé : Amiga, PC, etc.)

Mise en oeuvre du client VVA :

VVA est un client 68K parfaitement fonctionnel. Il ne supporte cependant pas non plus de protocole de compression. Il est par contre parfaitement utilisable sur un 68040 à travers un réseau local ce qui est très bluffant !
Il est possible de spécifier nombre de paramètres sur la ligne de commande : je vous renvoie à la documentation pour leur détail. Si vous lancez l'exécutable seul, ce dernier vous demandera d'abord le nom ou l'adresse IP de l'ordinateur "Serveur" puis le mot de passe. VVA affiche ensuite la liste des modes écran disponibles (l'idée étant de sélectionner le mode qui se rapproche le plus de la résolution utilisée sur l'ordinateur "serveur") avant de se connecter tout simplement.

Mise en oeuvre du client MorphVNC :

MorphVNC est un client natif MorphOS d'une efficacité redoutable. De plus, il supporte le protocole de compression basic ZLib.
Pour le lancer, il suffit d'exécuter la ligne de commande suivante : "MorphVNC ordinateur_serveur:numero_de_port". Si le numéro de port est inférieur à 100, MorphVNC considérera qu'il s'agit d'un numéro de "display" (port = 5900+display). Si le numéro de port n'est pas spécifié le port 5900 sera utilisé par défaut. Ensuite, MorphVNC demande le mot de passe et se connecte au serveur.

Liens

Site officiel de VNC : www.realvnc.com/.
AmiVNC sur Aminet : de.aminet.net/pub/aminet/comm/tcp/AmiVNC.lha.
Page web de AVNC et VVA : dspach.free.fr/.
MorphVNC sur Aminet : de.aminet.net/pub/aminet/comm/tcp/MorphVNC.lha.
Site de TightVNC : http://www.tightvnc.com/.
UltraVNC sur sourceforge : ultravnc.sourceforge.net/.

Conclusion

D'avis personnel, un serveur VNC PowerPC (AmiVNC ?) serait le bienvenu. Il faut admettre que si les deux clients VNC existant sont très utilisables, le serveur que j'ai pu tester en est (comme l'indique d'ailleurs son auteur) à un stade expérimental. Qui se propose pour porter TightVNC ou Ultr@VNC sur Amiga ? ;).