Examen de TP de Réseaux 2014-2015 - L3 Informatique

Durée 3h. Les documents de cours et codes sources des TP sont autorisés.

Les réponses sont rendues sous formes de fichiers sur le moodle du cours : http://moodle.univ-tln.fr/course/view.php?id=394

Vous devez commencer par mettre en place vos machines virtuelles. Attention, il y une nouvelle machine appelée client2.

  bruno@licinfo1:/usr/local/vbox/vdi$ ./managevirtualmachines.sh clonemaster client2
  bruno@licinfo1:/usr/local/vbox/vdi$ ./managevirtualmachines.sh create client2

mettez all à la place de client2 si vous refaites toutes les machines.

En cas de problème :
  • faire tout d’abord un remove all
bruno@maitinfo3:/usr/local/vbox/vdi$ ./managevirtualmachines.sh remove all
  • vérifier qu’il ne reste pas de .vdi à votre nom dans /usr/local/vbox/travail/ et éventuellement les supprimer
bruno@maitinfo3:/usr/local/vbox/vdi$ rm /usr/local/vbox/travail/VOTRELOGIN*.vdi
  • Si vraiment cela ne marche pas supprimer les dossiers de configuration de virtualbox :
rm -r ~/.VirtualBox
rm -r ~/VirtualBox\ VMs/
Il est possible que certaines adresses IP ne soient pas attribuées automatiquement, si c’est le cas, lancez la commande dhclient eth0 ou dchlient eth1

Vous donnerez les réponses au trois questions dans le fichier exo1.txt

  1. Depuis votre machine hôte, donnez les commandes pour vous connectez en ssh sur la machine client2 et pouvoir lancer directement wireshark.
  2. Etudier la machine client2, donner toutes les caractéristiques réseaux que vous pouvez trouver en indiquant dans quels fichiers ou avec quelles commandes vous avez obtenu ces informations. Vous indiquerez au minimum ses adresses MAC et IP, comment elle les a obtenues et comme elle résout les noms, quelles sont les routes auxquelles elle a accès et sa ou ses passerelles ?
  3. Que voit-on lors d’une écoute sur client2 si j’exécute la commande ping -s 3200 -c 1 server sur la machine client.

Créer les fichiers suivants testPush.txt à la racine de votre compte sur la machine hôte, et testPull.txt dans le répertoire ICI à la racine de votre compte sur la machine hôte. Créer un répertoire LABAS à la racine du compte user de la machine client et une répertoire ENCORE dans le répertoire /tmp de la machine client.

Vous donnerez la liste des commandes les plus concises possibles qui répondent aux questions suivantes dans le fichier exo2.txt.

  1. A partir de la racine de votre compte sur la machine hôte :
    1. déposer le fichier testPush.txt dans le répertoire LABAS
    2. déposer le fichier testPush.txt dans le répertoire ENCORE
  2. A partir du compte user sur la machine server, récupérer le fichier testPull.txt dans le répertoire ICI.
  3. Mettez en place la connexion avec des clés RSA pour que l’utilisateur user de la machine client2 puisse se connecter en tant que root sur la machine client.
  4. Sans ouvrir des shell de commande mais avec la commande ssh, depuis le compte user sur la machine client2, exécuter la commande ls en tant que root sur la machine client.

Vous mettrez vos réponses dans le fichier exo3.txt.

  1. Dans le répertoire home du compte root de la machine client2, vous trouverez un exécutable appelé mystere. Ce programme effectue une ou plusieurs actions sur le réseau, à l’aide de wireshark, expliquez lesquelles.
  2. Expliquer comment vous faites avec wireshark pour voir la différence au niveau du réseau entre les commandes suivantes exécutées depuis la machine client2 (vous donnerez la différence) ;
    1. ping client
    2. ping server
  3. Quand toutes les machines sont exécutées, expliquer ce qui se passe, en écoutant sur server, les différence entre les commandes exécutées sur client :

Ecrire un client (exo4client.py) et un serveur (exo4serveur.py) python en suivant le protocole :

  • Le serveur attend des entiers, maintient la somme des entiers qu’il a reçu (initialement à 0) et retourne le total au client.
  • Le client permet de saisir un entier au clavier, l’envoi au serveur, attend la réponse et l’affiche.

Les échanges d’entiers doivent se faire directement sous forme binaire et pas via des chaînes de caractères.

Ecrire une serveur qui fonctionne comme une calculette à pile commandée avec un protocole texte au dessus de TCP : - si il reçoit un nombre, il l’empile - si il reçoit un code opération binaire : ADD, SUB, MUL, DIV il remplace les deux nombres en sommet de pile par le résultat. ATTENTION, il doit avoir au moins deux nombres sur la pile. - si il reçoit une opération unaire : NEG il remplace le nombre en sommet de pile par le résultat ATTENTION, il doit avoir au moins un nombre sur la pile. - si il reçoit RESET la pile est vidée - si il reçoit PEEK le dernier est renvoyé sans être dépilé - si il reçoit POP le dernier nombre est dépilé et envoyé

Par exemple, l’échange suivant (le texte après est un commentaire et ne fait pas partie de l’échange) : >3 le client envoie 3, le serveur empile 3 [3]

>4  //le serveur empile 4 [4,3]
>2  //le serveur empile 2 [2,4,3]
>ADD // [6,3]
>MUL // [18]
>PEEK 
18 // [18]
>POP 
18 // []

Un simple telnet pourra être utilisé comme client.

Ajouter des réponses du serveur en cas d’erreur. Par exemple,

>ADD
Pas assez de nombres.
>3 // [3] 
>NEG //[-3]
>ADD 
Pas assez de nombres.

Ecrire le version multiclients du serveur de l’EXO4 (exo4serveurMULTI.py) qui accepte plusieurs clients en parallèle chacun ayant sa propre somme. Vous êtes libre de l’approche.