15 DS tutorat réseau du 16 janvier 2004 (sujet de secours)
15.1 Dernière minute
Pour des raisons disons "techniques", le sujet initialement prévu ne peut
être donné. Le sujet que vous découvrez ici est un sujet de secours et
donc d'une difficulté un peu moins calibrée. Il en sera tenu compte dans
la correction.
15.2 Détails pratiques
La durée de ce contrôle sur machine est de deux heures, les communications
avec des personnes autres que les surveillants sont interdites.
Le barême probable est de 6 points pour le premier exercice et de
14 points pour le second.
Vos résultats (les programmes C) doivent être envoyés par messagerie à
Xavier.Redon@polytech-lille.fr. Il est conseillé d'envoyer une copie
de ce message sur votre compte de messagerie. Utilisez des fichiers au
format ASCII si vous souhaitez attacher des documents à votre
"copie électronique".
15.3 Exercice relatif au tutorat
Transformez votre programme écrit en tutorat pour qu'il permette
désormais de résoudre un nom de machine en son adresse IPv6 (si elle
existe). Le programme doit prendre en paramètre le nom de machine
(à la place de l'adresse IPv6) et doit afficher l'adresse IPv6
correspondante (à la place du nom de machine).
15.4 Exercice de programmation UDP
Le démon rwhod, installé sur quelques machines du réseau enseignement
de Polytech'Lille, génère périodiquement des paquets UDP en diffusion sur
le port 513. Ces paquets contiennent des informations sur le système
d'exploitation comme la charge du processeur, la durée de vie depuis le
dernier démarrage, etc. Ils contiennent aussi des informations sur les
utilisateurs connectés. Le format de ces paquets est décrit dans la
page de manuel de rwhod présente par exemple sur weppes.
Il vous est demandé de réaliser un client UDP pour analyser ces paquets,
ce client doit respecter le cahier des charges suivant :
Les démons rwhod ont été modifiés pour utiliser le port UDP 5130
(et non pas 513 car vous n'auriez pas la permission d'écouter sur ce port en
tant qu'utilisateur de base).
Pour recevoir des paquets UDP en diffusion il faut vous faut positionner
une option sur votre socket par le code suivant :
{
int on=1;
if(setsockopt(s,SOL_SOCKET,SO_BROADCAST,&on,sizeof(on))<0){
perror("setsockopt");
exit(1);
}
}
Il vous faut aussi écouter spécifiquement sur le port UDP 5130 en
utilisant la primitive bind.
Votre programme doit afficher le nom de la machine émettrice du paquet,
sa charge moyenne et la durée de vie de son système d'exploitation.
Votre programme doit afficher, pour chaque utilisateur, son nom, le
temps depuis lequel il est connecté à la machine et enfin le temps depuis
lequel il est inactif.
Vous devez vérifier la cohérence entre le nom des machines donné
dans les paquets rwho et l'adresse IP de provenance de ces paquets.