Sujets TP Module : Réseaux et système d exploitation partie Réseaux Objectifs : - Développer vos connaissances en réseaux ; - Manipuler du matériel ; - Découvrir de nouvelles notions ; - Appliquer vos connaissances. Modalités : - Vous devez répondre aux questions, et envoyer vos réponses sous format word ou pdf à l adresse bisgambiglia@univ-corse.fr - Le sujet ou l objet du mail doit être explicite : TDi_reseaux_L3_Noms - Le fichier doit être nommé TDi_reseaux_L3_Noms.doc o i est le numéro du TD = {1, 2, 3} o Noms sont vos noms de famille - Tout autre format ne sera pas noté TP 1 : Routeur Note : les mot de passes sont les suivants : - En telnet : julia11 - En mode enable : iufmcorte 1. Décrivez la procédure vous permettant de prendre la main sur le routeur sans connaître de mot de passe. 2. Utilisez la commande d aide dans le mode utilisateur afin d avoir un listing des commandes disponibles dans ce mode. Indiquez les commandes qui vous paraissent les plus couramment utilisées, ainsi que leur description. 3. Passez dans le mode privilégié. Il est évidemment possible d y entrer en utilisant la commande enable, mais est-t-il possible d y accéder en ne tapant que : 1. e? Pourquoi? 1
2. en? Pourquoi? 4. Affichez différentes informations concernant la version de la plate-forme logicielle Cisco IOS, ainsi que les quantités mémoires. 1. Quelle commande utilisez-vous pour cela? 2. Quelle est la version d IOS exécutée actuellement en RAM? 3. Quel est le nom du fichier d image système IOS? 4. Quelle est la taille de la mémoire RAM? 5. De combien d interfaces Ethernet et série dispose le routeur? 6. De combien de NVRAM dispose le routeur? 7. De combien de mémoire flash dispose le routeur? 8. Quelle est la valeur du registre de configuration? 5. Recherchez les informations ci-après à l aide de la commande show flash. 1. Quantités d espace libre et utilisé? 2. Quel est le fichier stocké? 3. Quelle est la taille de la mémoire flash? 6. Fichiers de configuration. Avec quelle commande peut-on afficher : 1. les informations relatives à la configuration actuelle tournant en mémoire RAM? 2. le contenu du ficher de configuration de sauvegarde? 7. Recherchez les informations sur une interface 1. Quelle commande pouvez-vous utiliser? 2. Que signifie Serial0 is up, line protocol is up? 3. Configurez l adresse IP et le masque de sous-réseau de l interface de votre choix? 8. Recueillez des informations sur les interfaces configurées sur le routeur actuel. 1. Quel est le nom du routeur? 2. Adresse IP et masque de sous-réseau des interfaces : Interface Adresse IP Masque de sous-réseau 2
Etat fonctionnel de chaque interface : Interface Interface activée ou désactivée? (signal de détection de porteuse) Protocole de ligne en fonction/hors fonction? (réception de messages de test d activité) 9. Configuration du nom d hôte du routeur. 1. Dans quel mode le routeur doit-il être pour que l on puisse configurer le nom d hôte? 2. Quelle est la commande qui permet de configurer ce nom d hôte? 3. Entrez votre filière comme nouveau nom d hôte. 4. Quant la modification prend-elle effet? 5. A quoi le voit-on (deux possibilités)? 10. Descriptions des interfaces. 1. A quoi peut servir de configurer des descriptions pour les interfaces du routeur? 2. Existe-t-il un descriptif pour l interface Ethernet 0? Comment le voit-on? 3. Dans quel mode doit-on être pour configurer une description? 4. Y a-t-il une limitation quelconque pour les descriptions? Comment l avez-vous vu? 5. Configurez une description pour chaque interface du routeur. 11. Mots de passe. On se place dans le mode de configuration globale. Complétez le tableau suivant avec la commande permettant de passer dans le mode adéquat ainsi que celle pour configurer le mot de passe en lui-même : Configurer le mot de passe pour La console Commande pour passer dans le mode adéquat Commande pour configurer le mot de passe 3
Toutes les sessions telnet La ligne dédiée par modem Le mode privilégié (non-crypté) Le mode privilégié (crypté) 1. Est-il possible d indiquer deux mots de passe différents pour le mode privilégié en crypté et en non-crypté? 2. Dans un tel cas, lequel faudrait-il entrer lorsque l on veut passer dans le mode privilégié? 3. Si on est connecté au routeur via le mode console, quel serait le mot de passe? 4. On décide le poser une ligne dédiée entre le routeur et notre ordinateur via une liaison par modem. Sur quel port nous branchons-nous? 5. Est-il possible de protéger cet accès par un mot de passe spécifique? Si oui, énumérez les étapes ainsi que les commandes utilisées? 6. Les mots de passe sont affichés en clair lorsque l on affiche les fichiers de configuration. Comment peut-on protéger cet affichage? 12. Affichez les informations sur la mémoire flash. 1. Quelle commande permet d obtenir toutes les informations à propos de la mémoire flash? 2. Quelle est la quantité de mémoire flash totale? 3. Quelle est la quantité de mémoire disponible? 4. Quel est le nom du fichier stocké en mémoire flash? 5. A quoi correspond-il? 13. Généralités sur le routage. 1. Dans quel mode doit être le routeur pour réaliser la configuration du routage statique? 2. Quelle commande permet d entrer une route statique dans la table de routage? 3. Quelle commande permet d entrer une route par défaut? 4
4. Pourquoi définit-on une passerelle par défaut? 14. Routage dynamique à l aide du protocole RIP. 1. Quelle est la commande permettant d afficher la table de routage d un routeur? 2. Quelles sont les entrées déjà existantes? 3. Configurez le routage RIP sur les sous-réseaux nécessaires. 4. Quelle commande nous permet de visualiser les informations liées aux protocoles de routage? Quand va avoir lieu la prochaine mise à jour? 5. Quelles sont les principales différences entre un routage rip et un routage bgp? 6. Affichez la table de routage. Y a-t-il de nouvelles entrées? 15. A vous de jouer. 1. Vous devez configurer le routeur et créer un réseau interconnectant plusieurs de vos portables afin qu il puisse communiquer entre eux à l aide de la commande net send. 2. Vous devez rédiger un document qui présente toutes les étapes de cette configuration. 5
TP 2 : Sockets Introduction aux sockets La notion de sockets a été introduite dans les distributions de Berkeley (un fameux système de type UNIX, dont beaucoup de distributions actuelles utilisent des morceaux de code), c'est la raison pour laquelle on parle parfois de sockets BSD (Berkeley Software Distribution). Il s'agit d'un modèle permettant la communication inter processus (IPC - Inter Process Communication) afin de permettre à divers processus de communiquer aussi bien sur une même machine qu'à travers un réseau TCP/IP. La communication par socket est souvent comparée aux communications humaines. On distingue ainsi deux modes de communication : Le mode connecté (comparable à une communication téléphonique), utilisant le protocole TCP. Dans ce mode de communication, une connexion durable est établie entre les deux processus, de telle façon que l'adresse de destination n'est pas nécessaire à chaque envoi de données. Le mode non connecté (analogue à une communication par courrier), utilisant le protocole UDP. Ce mode nécessite l'adresse de destination à chaque envoi, et aucun accusé de réception n'est donné. Les sockets sont généralement implémentés en langage C, et utilisent des fonctions et des structures disponibles dans la librairie <sys/socket.h>. Déroulement d'une communication avec les sockets Comme dans le cas de l'ouverture d'un fichier, la communication par socket utilise un descripteur pour désigner la connexion sur laquelle on envoie ou reçoit les données. Ainsi la première opération à effectuer consiste à appeler une fonction créant un socket et retournant un descripteur (un entier) identifiant de manière unique la connexion. Ainsi ce descripteur est passé en paramètres des fonctions permettant d'envoyer ou recevoir des informations à travers le socket. L'ouverture d'un socket se fait en deux étapes : 6
La création d'un socket et de son descripteur par la fonction socket() La fonction bind() permet de spécifier le type de communication associé au socket (protocole TCP ou UDP) Un serveur doit être à l'écoute de messages éventuels. Toutefois, l'écoute se fait différemment selon que le socket est en mode connecté (TCP) ou non (UDP). En mode connecté, le message est reçu d'un seul bloc. Ainsi en mode connecté, la fonction listen() permet de placer le socket en mode passif (à l'écoute des messages). En cas de message entrant, la connexion peut être acceptée grâce à la fonction accept(). Lorsque la connexion a été acceptée, le serveur reçoit les données grâce à la fonction recv(). En mode non connecté, comme dans le cas du courrier, le destinataire reçoit le message petit à petit (la taille du message est indéterminée) et de façon désordonnée. Le serveur reçoit les données grâce à la fonction recvfrom(). La fin de la connexion se fait grâce à la fonction close(). Voici le schéma d'une communication en mode connecté: 7
Les sockets en C http://www.commentcamarche.net/contents/sockets/sockfonc.php3 Exemple de code en C http://www.supinfo-projects.com/fr/2004/tut_prog_reseau/ Les sockets en C# http://morpheus.developpez.com/reseaucsharp/ Exemple de code en C# http://www.codeproject.com/kb/ip/tcpclientserver.aspx Exemple de code en Python : Client : #!/usr/bin/python # -*- coding: latin-1 -*- import socket Discuter = socket.socket(socket.af_inet,socket.sock_stream) Hote = '127.0.0.1' Port = 80 Port_de_reponse = 234 Discuter.connect((Hote,Port)) # Se connecte au programme ecoute.py Reponse = socket.socket(socket.af_inet,socket.sock_stream) Reponse.bind((Hote,Port_de_reponse)) Reponse.listen(1) client, adresse = Reponse.accept() # Creation du connecteur pour la reponse de ecoute.py print "L'adresse",adresse," vous a entendu et attend votre message." # Rajoutez des parentheses pour Python 3! while 1: msg = raw_input('>> ') # votre message? Python 3 : msg = bytes(input('>> '), 'mac_roman') Discuter.send(msg) # envoi. print "Attente de la reponse..." # Rajoutez des parentheses pour Python 3! reponseaumessage = client.recv(255) # reception de la reponse, 255 caracteres max ; Python 3 : reponseaumessage = str(client.recv(255),'mac_roman') if not reponseaumessage: break print "\n",adresse,":",reponseaumessage,"\a\n" # affiche la reponse # Rajoutez des parentheses pour Python 3! client.close() # ferme la connexion lorsque le client quitte. 8
Serveur : #!/usr/bin/python # -*- coding: latin-1 -*- import socket # importe un ensemble d'instructions pour connecter les programmes. # Cet ensemble est disponible a l'installation de Python, dans la bibliotheque de base. # Creation du connecteur d'ecoute par l'instruction 'socket' # de la bibliotheque socket precedemment importee. Connecteur = socket.socket(socket.af_inet,socket.sock_stream) Hote = '127.0.0.1' # Adresse locale de l'ordinateur. Port = 80 # Choix d'un port d'ecoute. Connecteur.bind((Hote,Port)) # instruction 'bind' de la bibliotheque du connecteur print "Le programme est a l'ecoute d'une eventuelle discussion, vous en serez averti." # Rajoutez des parentheses pour Python 3! Connecteur.listen(1) # ecoute... client, adresse = Connecteur.accept() # accepte... print "L'ordinateur",adresse," veut discuter! J'attends son message." # Rajoutez des parentheses pour Python 3! # Creation du connecteur de reponse Reponse = socket.socket(socket.af_inet,socket.sock_stream) Portreponse = 234 Reponse.connect((Hote,Portreponse )) print "Note : je me suis connecte a",adresse," pour lui repondre" # Rajoutez des parentheses pour Python 3! while 1: Message = client.recv(255) # reception de la reponse, 255 caracteres max ; Python 3 : Message = str(client.recv(255),'mac_roman') if not Message: break print "\nmessage : ",Message,"\a" + "\n\nvotre reponse :" # Rajoutez des parentheses pour Python 3! 9
msgr = raw_input('>> ') # votre message? Python 3 : msgr = bytes(input('>> '), 'mac_roman') Reponse.send(msgR) # envoi. client.close() # ferme la connexion lorsque le client est parti : [ctrl+c] pour abandonner l'execution du programme. Instructions : Par groupe de deux (un client et un serveur) vous aller mettre vos ordinateurs en réseau (Wifi ou câble), puis coder en C# ou en Python le client et le serveur. Le but est d arriver à faire fonctionner le code. Vous devez rédiger un document qui détaille les différentes étapes suivies. 10
TP 3 : HTTP Trame http Ligne de commande (Commande, URL, Version de protocole) - En-tête de requête - [Ligne vide] - Corps de requête Méthodes : GET / POST Une URL est une chaîne de caractères utilisée pour adresser les ressources dans le Web Exemple : http://www.example.com/chemin/page.html?q=req - http : protocole - www.example.com : hôte - /chemin/ : chemin absolu sur le service 11
- page.html : nom de la page Web - q=req : chaine de requête, transmise à la page Vous allez devoir écrire du code PHP client serveur. Le PHP est un langage web dynamique, qui s exécute sur un serveur. Pour simuler un serveur sur votre ordinateur, vous devez télécharger un de ces deux logiciels : - Wamp serveur http://www.wampserver.com/download.php - EasyPHP http://www.easyphp.org/download.php Une fois installé et lancé, vous avez accès à un serveur apache en local. Le répertoire du serveur est nommé www (C:\wamp\www) L adresse du serveur est http://127.0.0.1/ ou http://localhost/ Afin d échanger des informations entre le client et le serveur, nous pouvons utiliser deux méthodes GET et POST. 1. Rechercher la différence entre ces deux méthodes. Essayer le code suivant Page index2.php <html > <head> <title>titre de la page</title> </head> <body> <center> <?php echo 'Coucou en PHP';?> 12
<h2>bonjour,</h2> </center> <p><strong>entrez votre nom</strong> : </p> <form name="form1" method="post" action="index3.php"> <input type="text" name="textfield"> <input type="submit" name="submit" value="envoyer"> <input type="reset" name="reset" value="retablir"> </form> </body> </html> Page index3.php <html > <head> <title>titre de la page</title> </head> <body> <center> <?php echo "<h2> Bonjour </h2>"; $nom = $_POST['textfield']; if(!empty($nom)) { echo "<strong>"; echo $nom; echo "<p>merci de votre connexion</strong></p>"; } 13
else { echo "Vous n avez pas de nom!!!"; }?> </center> </body> </html> 2. Que fait ce code? 3. Faire la même chose avec la méthode GET 4. En vous aidant d Internet, pour la syntaxe du PHP, essayez de programmer un des jeux vu en langage C. Note : la fonction qui génère des nombres aléatoire est la fonction rand(). 14