1 Rappels sur X11 et XDMCP
Avant de parler du TP proprement dit, mieux vaut commencer par un petit
résumé sur les serveurs X11 et sur le protocole XDMCP.
Vous savez qu'un serveur X11 est un
logiciel graphique. Un serveur X11 est capable de dessiner divers motifs
(carrés, cercles, images, etc.) sur un écran. Il existe désormais
des serveurs X11 utilisables pour la plupart des OS connus (Windows, MacOS,
Unix, etc.) et ce, avec la plupart des cartes graphiques existantes.
L'avantage majeur du système X11 est qu'il s'agit aussi d'un logiciel
réseau. En effet les ordres graphiques sont envoyés à un
serveur X11 via le réseau (l'interface de programmation utilisée
par X11 est l'interface «socket»). Ainsi une application graphique
écrite pour X11 peut aussi bien s'afficher sur l'écran de la machine
locale que sur l'écran d'une machine distante pour peu qu'elle dispose
d'un serveur X11. Il est même possible de lancer un serveur
X11 qui se comporte comme une fenêtre affichée via un autre serveur
X11. Vous aurez à utiliser cette possibilité (commande Xnest)
pour tester votre programme.
Un serveur X11 est une application comme les autres,
il n'y a aucun lien particulier entre un serveur X11
et un système d'exploitation Unix. Un administrateur qui souhaite
que ses utilisateurs ne travaillent que sous X11 doit remplacer l'habituel
gestionnaire de sessions en mode texte login par un gestionnaire
de sessions compatible avec X11 (e.g. xdm ou kdm). Le gestionnaire de
sessions peut administrer plusieurs serveurs X11. Son rôle consiste à envoyer sur
ces serveurs une application d'identification (il s'agit d'un simple client X11).
Quand un utilisateur s'identifie correctement, un script de connexion est exécuté.
Ce script met à jour quelques variables d'environnement, lance sur le serveur X11
quelques utilitaires (e.g. une barre de menus, des interpréteurs de commandes, etc.)
et surtout un gestionnaire de fenêtres (e.g enlightenment ou kde).
La plupart du temps c'est la sortie de ce gestionnaire de fenêtres qui met fin à
la session.
Dans le cas d'une machine autonome, le gestionnaire de sessions
prend directement contrôle du serveur X11 local. En fait c'est même ce
gestionnaire qui lance le serveur X11 local. Dans le cas de machines minimales
(e.g. terminaux X) ou de configurations plus complexes, un dialogue s'établit
entre le serveur X11 et un gestionnaire de sessions. Ce dialogue est conforme
au protocole XDMCP (X Display Manager Control Protocol), il est initié
par le serveur X11 ou une application satellite du serveur X11. Plusieurs
scénarios sont possibles :
-
query : Le serveur X11 est décidé à se faire gérer par
un gestionnaire bien précis : il le contacte, ils s'échangent quelques
informations et le gestionnaire s'installe sur le serveur X11.
- broadcast : Le serveur X11 est indécis, il diffuse une demande
de prise en charge, certains gestionnaires de sessions répondent positivement.
Le serveur X11 choisit un gestionnaire (en fait c'est l'utilisateur qui fait
le choix). Tout se passe alors comme pour le scénario query.
- indirect : Non seulement le serveur est indécis mais en plus
il n'a pas les moyens de faire façe à son indécision (i.e. pas
d'application locale permettant à l'utilisateur de choisir un gestionnaire
de sessions parmi les volontaires). Dans ce cas un gestionnaire de sessions
spécial est contacté. C'est ce gestionnaire qui dresse une liste d'autres
gestionnaires volontaires et qui affiche sur le serveur X11 une application
de choix. Enfin, le gestionnaire entremetteur précise au gestionnaire choisi
qu'il doit gérer le serveur X11.