x11vnc - x11vnc

x11vnc
Auteur(s) original(aux) Karl Runge
Développeur(s) équipe libvnc
Première version 2001
Version stable
0.9.16 / 5 janvier 2019 ; il y a 2 ans ( 2019-01-05 )
Dépôt github .com / LibVNC / x11vnc
Plate-forme Unix, Linux
Disponible en Anglais
Taper Administration à distance
Licence GPL-2.0 ou version ultérieure
Site Internet libvncserver .sourceforge .net Modifiez ceci sur Wikidata

x11vnc est un programme serveur Virtual Network Computing (VNC). Il permet l'accès à distance d'un client distant à un ordinateur hébergeant une session X Window et le logiciel x11vnc, en interrogeant en permanence le tampon de trame du serveur X pour les modifications. Cela permet à l'utilisateur de contrôler son bureau X11 ( KDE , GNOME , Xfce , etc.) à partir d'un ordinateur distant soit sur son propre réseau, soit à partir d'Internet comme si l'utilisateur était assis devant lui. x11vnc peut également interroger les périphériques de tampon de trame non X11, tels que les webcams ou les cartes tuner TV , iPAQ , Neuros OSD , la console Linux et l' écran graphique Mac OS X. x11vnc fait partie du projet LibVNCServer et est un logiciel libre disponible sous la licence publique générale GNU . x11vnc a été écrit par Karl Runge.

x11vnc ne crée pas d'affichage supplémentaire (ou de bureau X) pour le contrôle à distance. Au lieu de cela, il utilise l' affichage X11 existant affiché sur le moniteur d'un ordinateur de type Unix en temps réel, contrairement à d'autres alternatives Linux telles que TightVNC Server. Cependant, il est possible d'utiliser Xvnc ou Xvfb pour créer un affichage supplémentaire « virtuel » et d'y connecter x11vnc, permettant ainsi l'accès X-11 aux serveurs sans tête .

x11vnc possède des fonctions de sécurité qui permettent à l'utilisateur de définir un mot de passe d'accès ou d'utiliser des noms d'utilisateur et des mots de passe Unix . Il dispose également d'options de connexion via un lien SSL sécurisé . Une applet de visualisation SSL Java VNC est fournie qui permet des connexions sécurisées à partir d'un navigateur Web . Le type de sécurité VeNCrypt SSL/TLS VNC est également pris en charge.

De nombreuses extensions UltraVNC vers VNC sont prises en charge par x11vnc, y compris le transfert de fichiers.

Algorithme d'interrogation

x11vnc conserve une copie du frame buffer du serveur X dans la RAM . L' interface de programmation X11 XShmGetImage est utilisée pour récupérer les données de pixels du tampon de trame . x11vnc compare le framebuffer du serveur X contre sa copie pour voir quels pixels régions ont changé (et doivent donc être envoyés aux téléspectateurs VNC.) La lecture des données de pixels du physique tampon d'image peut être beaucoup plus lent que d' écrire à (parce que les dispositifs graphiques ne sont pas optimisés pour la lecture) et donc une vérification séquentielle pixel par pixel serait souvent trop lente.

Pour améliorer la situation, x11vnc lit en rangées complètes de pixels séparés par 32 pixels verticalement. Une fois qu'il atteint le bas de l'écran, il recommence près du haut avec un décalage légèrement différent. Après 32 passes comme celle-ci, il a couvert tout l'écran. Cette méthode permet à x11vnc de détecter les changements à l'écran environ 32 fois plus rapidement qu'une vérification séquentielle (sauf si les changements sont très petits, disons seulement 1 pixel de haut.) Si l' extension X11 DAMAGE est présente, x11vnc l'utilise pour fournir des conseils où concentrer son interrogation, trouvant ainsi les changements encore plus rapidement et réduisant également la charge du système.

Injection d'entrée

Lorsque x11vnc reçoit des événements d'entrée utilisateur (touches, mouvements du pointeur et clics sur le bouton du pointeur) d'un visualiseur VNC, il doit les injecter de manière synthétique dans le serveur X. Les interfaces de programmation X11 XTestFakeKeyEvent , XTestFakeMotionEvent et XTestFakeButtonEvent de l'extension XTEST sont utilisées pour y parvenir.

Pour les périphériques gérés non X11 (tels que l' écran graphique Mac OS X ), différentes interfaces de programmation doivent être utilisées. x11vnc fournit également une interface où l'utilisateur peut fournir son propre programme d'injection d'entrée.

Utilisations intéressantes

Souvent, des systèmes à usage spécial sont construits à l'aide du système X Window pour gérer l'affichage graphique. x11vnc peut être utilisé pour exporter l'affichage du système pour un accès VNC à distance. Cela permet la surveillance, le contrôle et le dépannage à distance du système à usage spécial. Parfois, cela évite d'envoyer un technicien sur un site distant ou permet aux utilisateurs de contrôler l'équipement depuis leur poste de travail ou leur ordinateur portable. x11vnc est connu pour avoir été exécuté sur les types de systèmes suivants : microscope électronique , système d'analyse d'images IRM et radiologie , consoles de gestion de centrales électriques et de plates-formes pétrolières , contrôle de la distribution des matériaux, test de système d'autodéfense de navire, systèmes RMN , microscope d'analyse de plaquettes de silicium , et Contrôle d'éclairage de théâtre et de concert. x11vnc est utilisé pour exporter les écrans X11 dans les systèmes embarqués tels que les PDA Linux et les PC de cinéma maison .

Si x11vnc ne peut pas être exécuté sur le système spécialisé, il peut parfois être exécuté sur un ordinateur à proximité et interroger le tampon de trame du serveur X sur le réseau. C'est ainsi que les terminaux X propriétaires sont accessibles via x11vnc.

émulation Xvnc

Bien que l'utilisation principale de x11vnc soit pour les serveurs X associés à du matériel graphique physique, il peut également s'attacher à des serveurs X virtuels (dont les tampons de trame n'existent que dans la RAM) tels que Xvfb ou une session Sun Ray . x11vnc a des options ( -create et -svc ) pour démarrer Xvfb automatiquement, éventuellement en tant qu'utilisateur Unix qui s'est connecté. La réponse interactive de x11vnc et Xvfb peut ne pas être aussi rapide que Xvnc , cependant ce mode active des fonctionnalités que Xvnc n'a pas, tels que le cryptage SSL et les noms d'utilisateur et mots de passe Unix.

Mise en cache côté client

Le protocole RFB (VNC) est étrange par rapport à d'autres protocoles graphiques de réseau, tels que X11 et RDP , en ce sens qu'il n'est pas prévu de mise en cache des données de pixels côté spectateur. Bien que cela facilite la mise en œuvre du client, il y a un prix à payer en termes de réponse interactive. Par exemple, chaque réexposition d'une fenêtre ou d'une région d'arrière-plan doit avoir ses données de pixels (compressées) renvoyées sur le réseau. Cet effet est particulièrement visible pour les fenêtres avec des régions complexes ou photo (telles qu'une fenêtre de navigateur Web) qui sont souvent iconifiées et désiconifiées ou réexposées.

x11vnc a une implémentation expérimentale et quelque peu brutale de la mise en cache côté client. Il est activé via l' option -ncache . Lors de la création du tampon de trame RFB dans ce mode, x11vnc alloue une très grande région de scratch sous la partie supérieure utilisée pour les données de pixels réelles (à l'écran). x11vnc peut ensuite utiliser la commande RFB CopyRect pour demander à la visionneuse de déplacer des rectangles de données de pixels dans et hors de la zone de travail. Ces déplacements sont effectués localement du côté du spectateur. De cette façon, x11vnc peut gérer la zone de travail pour stocker et récupérer les données de pixels sans avoir à les renvoyer sur le réseau.

Le mode de mise en cache côté client de x11vnc peut apporter des améliorations notables des réponses interactives pour de nombreuses activités.

SSVNC 1.0.29 connecté à une Xsession Linux Debian 7 distante

Comme il utilise la commande RFB CopyRect existante, le schéma fonctionnera avec n'importe quel visualiseur VNC (c'est-à-dire non modifié). Il y a cependant quelques inconvénients. Le premier est qu'il consomme une grande quantité de mémoire. Pour de bonnes performances, une zone de rayure 10 à 20 fois plus grande que l'écran réel doit être utilisée. Donc, au lieu d'utiliser 5 Mo pour un tampon de trame 1280x1024 en couleurs vraies, plus de 100 Mo seront utilisés (à la fois du côté client et du côté serveur de VNC.) Ce n'est pas vraiment un problème sur les ordinateurs modernes, mais ce ne serait pas possible sur un faible périphérique de mémoire. Deuxièmement, le visualiseur VNC peut traiter la zone de scratch d'une manière qui confond l'utilisateur, par exemple en l'affichant à l'utilisateur ou en effectuant automatiquement un panoramique vers le bas si la souris atteint le bas de l'écran réel. La visionneuse Unix VNC dans SSVNC masque automatiquement la zone de travail. Enfin, les heuristiques de x11vnc pour la mise en cache et la réutilisation des données de pixels de fenêtre ne sont pas parfaites et peuvent entraîner un clignotement inattendu du contenu d'une fenêtre et d'autres effets indésirables.

Voir également

Les références

Liens externes