VNC se décompose en deux parties, le client et le serveur. Le serveur est le programme esclave sur la machine qui partage son écran, et le client (appelé aussi le "viewer") est le programme maître qui regarde et interagit éventuellement avec le serveur.
VNC se base sur le protocole Remote Frame Buffer (RFB) qui est très simple, avec des fonctions du type "Insérer un rectangle de pixel à la position x,y donnée". Cela étant, le serveur envoie des petits rectangles venant du framebuffer au client. Cette méthode, dans sa forme la plus simple, utilisant beaucoup de bande passante, il existe plusieurs méthodes pour réduire cette utilisation. Par exemple, il y a plusieurs formes d'encodage, des méthodes pour déterminer quel moyen est le plus efficace pour réduire cela. Le protocole Remote Frame Buffer 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 le raw encoding où les pixels sont transmis de gauche à droite par ligne, et après le premier écran transféré, seulement les rectangles qui changent sont envoyés. A cause de cela, cette méthode fonctionne très bien si seulement une petite quantité de l'écran change d'une image à l'autre (comme un pointeur de souris qui se déplace sur le bureau, ou du texte tapé), mais l'utilisation de bande passante augmente fortement si beaucoup de pixels changent et donc doivent être transmis (une vidéo en plein écran est le meilleur exemple).
Par défaut, VNC utilise les ports de 5900 à 5906, chacun représentant l'écran 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èmes Unix ou Linux l'affichage graphique se fait par un protocole et un serveur X11 qui permet l'affichage (donc l'exécution) distant d'applications graphiques, de sorte que VNC y est moins utile (mais existe aussi). Le serveur X11 a été porté sous d'autres systèmes d'exploitation, dont Windows et MacOS.