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.
Mise en place des machines virtuelles
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.
- 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/
dhclient eth0
ou dchlient eth1
EXO1 - Etude de la machine client2
Vous donnerez les réponses au trois questions dans le fichier exo1.txt
- Depuis votre machine hôte, donnez les commandes pour vous connectez en ssh sur la machine client2 et pouvoir lancer directement wireshark.
- 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 ?
- Que voit-on lors d’une écoute sur client2 si j’exécute la commande
ping -s 3200 -c 1 server
sur la machineclient
.
EXO2 - SSH
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
.
- A partir de la racine de votre compte sur la machine hôte :
- déposer le fichier
testPush.txt
dans le répertoire LABAS - déposer le fichier
testPush.txt
dans le répertoire ENCORE
- A partir du compte user sur la machine server, récupérer le fichier
testPull.txt
dans le répertoire ICI. - 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 machineclient
. - 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 machineclient
.
EXO3 - Ecoute
Vous mettrez vos réponses dans le fichier exo3.txt
.
- 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.
- 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) ;
- ping client
- ping server
- 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 :
- wget http://www.lip6.fr
EXO4 - Socket 1
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.
EXO5 - Socket 2
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.
EXO6 - Socket 3
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.