Si nous parlons uniquement de Partage d'écran (SS) (en oubliant ARD), cela fonctionne comme suit :
Tout d'abord, il y a un fichier de configuration du démon (/System/Library/LaunchDaemons/com.apple.screensharing.plist). Il contient un enregistrement qui indique à launchd de démarrer le serveur de SS (et ensuite l'agent de SS) chaque fois que quelqu'un se connecte au port 5900. Le serveur est situé à /System/Library/CoreServices/RemoteManagement/screensharingd.bundle, l'agent est à /System/Library/CoreServices/RemoteManagement/ScreensharingAgent.bundle.
Le Serveur de SS est la partie principale du Service de SS. Il effectue des interactions réseau, met en œuvre les protocoles utilisés, effectue le codage d'images, l'authentification, etc. À son tour, l'Agent de SS imite l'utilisateur actuel et gère des choses comme fournir l'image de l'écran de l'utilisateur, "appuyer" sur les touches, "déplacer" la souris.
(Si mes souvenirs sont bons, cette séparation a commencé avec Mac OS X 10.7. Auparavant, le service était monolithique, s'appelait AppleVNCServer et a toujours été en cours d'exécution lorsque l'interrupteur "Partage d'écran" dans les Préférences Système était activé).
Le Service de SS peut également démarrer les assistants suivants au besoin :
- SSPasteboardHelper (situé dans le bundle de l'Agent de SS) - colle les données du presse-papiers dans le presse-papiers système telles qu'elles arrivent du client,
- SSAssistanceCursor - apparu récemment, je me demande à quoi il sert,
- SSFileCopyReceiver / SSFileCopySender (dans le bundle du Serveur de SS) - est utilisé pour la transmission/réception de fichiers.
En ce qui concerne les protocoles, le Service de SS utilise le même protocole RFB que tous les clients VNC, mais avec quelques extensions spécifiques. Le serveur indique qu'il prend en charge la version du protocole 3.889 (la plupart des autres serveurs indiquent les versions 3.3 à 3.8). Il prend également en charge les codecs les plus courants - brut, ZLib, ZRLE - ainsi que ceux personnalisés d'Apple (ZLib en noir et blanc et en niveaux de gris, et un codec "adaptatif" qui utilise un algorithme de compression similaire à JPEG). Il existe également de nombreuses extensions de protocole spécifiques à Apple, implémentant le glisser-déposer, la transmission de fichiers, la synchronisation automatique du presse-papiers, la transmission d'événements de gestes, etc.
Ceci est une explication très générale, mais si vous avez une question plus spécifique, je serai ravi d'aider.