
VNC (Virtual Network Computing, littéralement « informatique virtuelle en réseau ») est un système de visualisation et de contrôle de l'environnement de bureau d'unordinateur distant. Il permet au logiciel client VNC de transmettre les informations de saisie duclavier et de lasouris à l'ordinateur distant, possédant un logiciel serveur VNC à travers unréseau informatique. Il utilise leprotocoleRFB pour les communications.
VNC est indépendant dusystème d'exploitation : un client VNC installé sur n'importe quelsystème d'exploitation peut se connecter à un serveur VNC installé sur un système d'exploitation différent ou identique. Il existe des clients et des serveurs VNC pour la plupart des systèmes d'exploitation. Plusieurs clients peuvent se connecter en même temps à un unique serveur VNC.
Parmi les utilisations de ce protocole, on peut citer lesupport technique à distance, l'administration et la maintenance de systèmes ou logiciels ne permettant que des contrôles graphiques et demandant l'utilisation de la souris ou bien encore la visualisation distante d'applications diverses et variées, dans un but éducatif par exemple.
VNC a été créé au laboratoireOlivetti & Oracle Research Lab, qui était alors la propriété deOlivetti etOracle Corporation. En 1999, AT&T acheta le laboratoire, et en 2002 ferma la partie « recherche » de celui-ci[1].
VNC a été initialement développé dans les laboratoiresAT&T deCambridge. Lecode source du programme VNC original estopen source sousGPL, comme la plupart des variantes de VNC disponibles en 2010[réf. nécessaire].
Le nom provient de l'ATM Network Computer appelé Videotile, qui était un écranLCD avec un stylet tactile et une connexion ATM rapide sur un réseau. VNC est une version logicielle de cetATM Network Computer.
VNC se compose de deux parties, le client et le serveur.
VNC se fonde sur le protocoleRemote Frame Buffer (RFB), avec des fonctions du type « Insérer un rectangle depixel à la position x,y donnée », la surface du bureau étant découpée en petites sections. Cette méthode, dans sa forme la plus simple, utilisant beaucoup debande passante, plusieurs méthodes ont été ajoutées pour réduire cette utilisation. Il y a par exemple plusieurs formes d'encodage, et des méthodes pour déterminer quelle méthode est la plus efficace pour le réduire. Le RFB permet au client et au serveur de s'accorder sur la méthode d'encodage utilisée.
L'encodage le plus simple, qui est supporté par tous les clients et serveurs, est leraw encoding où les pixels sont transmis en brut, de gauche à droite puis par ligne de haut en bas. Lors de la connexion, l'écran est entièrement transféré, puis seules les zones de changement sont envoyées sous forme de rectangle. Ce type de méthode fonctionne assez bien lorsque seule une petite partie de l'écran change d'une image à l'autre (déplacement du pointeur ou texte tapé), mais la demande enbande passante augmente avec la taille de la surface modifiée, pouvant ainsi rapidement saturer le réseau. Le pire exemple est sans doute l'affichage d'une vidéo où la majorité de l'écran change en permanence.
Par défaut, VNC utilise lesportsTCP prédéfinis par défaut de 5900 à 5906, chacun représentant l'écran virtuel X11 correspondant (ports de 6000 à 6006, pour les écrans de :0 à :6).
Un client Java est disponible dans de nombreuses implémentations, comme RealVNC par exemple qui utilise les ports allant de 5800 à 5806 (ces ports pouvant être changés).
Sur les systèmesUnix, commeLinux, l'affichage graphique se fait via le protocoleX11. Les applications sont affichées par un serveur graphique X11. Celui-ci peut être distant au travers du protocoleXDMCP. Dans ce cas, ce sont les applications qui sont considérées comme clients, cela peut prêter à confusion. XDMCP a l'avantage de transférer les fonctions plutôt que les images générées, sauf dans le cas d'images prédéfinies). Le protocoleOpenGL y est supporté, allégeant également le besoin de transfert de lourdes images.
VNC y est donc moins utile, mais des clients comme des serveurs y existent cependant.
Le serveur X11 a également été porté sur d'autres systèmes d'exploitation, dontWindows,macOS etAndroid.
Par défaut, le système VNC n'est pas sécurisé, les données transitent en clair et la connexion ne requiert pas d'identifiant.
Il est cependant possible avec certains logiciels compatibles VNC dechiffrer latransmission de données enSSL, et d'imposer la saisie d'identifiant etmot de passe.
VNC peut également être utilisé à travers untunnelchiffré afin d'augmenter la sécurité, par exemple, via une connexionSSH ouVPN.
En un problème de sécurité (vulnérabilité) a été identifié sur la version 4.1.1 deRealVNC Free edition qui permet à un pirate de prendre en main un PC sans connaître le mot de passe avec unVNC Viewer modifié. Cette faille de sécurité a été corrigée dans les versions ultérieures.
| Général | |
|---|---|
| Implémentations |
|
| Implémentations controversées | |