Université de Bretagne Occidentale UFR Sciences Département d Informatique Licence STS, 2005-2006 L1, S1, Parcours A-IMP Introduction à l informatique TD/TP11 - Réseaux (corrigé) 1 Travaux Dirigés Exercice 1 Des protocoles de communication (TCP/IP, FTP, etc.) ont été mentionnés en cours. Ces protocoles permettent les échanges d informations sur les réseaux. Nous ne présentons pas les détails de fonctionnement de ces protocoles car cela nécessite des connaissances techniques trop spécifiques. Il existe cependant dans la vie courante des protocoles de communication ayant le même type de fonctionnement. Dans cet exercice, il s agit de caractériser le protocole téléphonique à travers son protocole d appel, son protocole de réception d appel et la manière dont ils interagissent. Question : Représenter le protocole téléphonique sous la forme d un diagramme temporel. Solution : Cf. figure 1. On peut aussi parler du protocole social (bonjour je suis untel... au-revoir). On pourra se baser sur cet exemple pour faire quelques parallèles avec le fonctionnement des protocoles des réseaux informatiques. Par exemple, pour instaurer une communication entre deux machines A et B : émission d un message de synchronisation de A vers B, A se met en attente d un accusé de réception de B, B reçoit le message de synchronisation de A et émet un accusé de réception vers A (pour refuser ou accepter la communication), A reçoit l accusé de réception de B, si ok : le canal de communication est alors utilisable par A et B pour échanger des informations, etc. sinon, fin de la (tentative) de communication. Exercice 2 : cryptographie par substitution simple Dans cet exercice et les deux suivants, nous illustrons les méthodes historiques de cryptographie. Ces méthodes ne sont plus utilisées car elles n ont plus aucun secret pour personne aujourd hui. Cependant, les techniques actuelles sont souvent basées sur les mêmes principes que ces premiers algorithmes, et leur nouvelle complexité provient en général de la combinaison de plusieurs de ces principes et du recours à des clés (au sens général) de plus grande taille. Pour chaque méthode, on considère des messages clairs et chiffrés représentés avec les 26 lettres de l alphabet et l espace. 1
2.1. Substitution simple ou monoalphabétique Dans ce système, la clé est une permutation de l alphabet, et chaque lettre du clair est remplacée par son image par la permutation. Le déchiffrement se fait en utilisant la permutation inverse. En pratique, la clé peut être représentée par une séquence de 26 lettres UXEB... (A U, B X, C E, D B, etc.), et les espaces sont souvent supprimés lors du chiffrement. Cette méthode est très facilement décryptable par analyse de fréquence (par exemple, on sait qu en général la lettre la plus fréquente est un E, et ainsi de suite...). Question : Chiffrer le message MON MESSAGE EN CLAIR avec la clé LEPANIER- DECRABESPUISTOUTLEWAGONZOOKYQUEVAHJXFM. message chiffré = TWOTNYYLRNNOPULCK 2.2. Substitution de multigramme A lieu de substituer une lettre, on substitue une séquence de lettres (digramme, trigramme, multigramme). Une substitution de digrammes peut se faire à la main (grâce à une clé sous forme de tableau 26*26 ayant en abscisse la première lettre, en ordonnée la seconde, et le chiffré dans la case correspondante). Au-delà, la clé devient vite difficle à représenter car sa taille croît très rapidement. Cette méthode est encore décryptable par analyse de fréquence de multigrammes. Question : Soit la substitution de digramme selon la clé qui chiffre un digramme par : la lettre suivant la première lettre du digramme suivie de la lettre précédent la seconde lettre du digramme (par exemple, TU UT ). Chiffrer le message UN MULTIGRAMME. message chiffré = VMNTMSJHSZNLF Exercice 3 : cryptographie par transposition Etant donné un entier d, une transposition de longueur d consiste à diviser le clair en blocs de longueur d, puis à permuter les lettres à l intérieur de chaque bloc à l aide d une permutation fixée. Par exemple, avec d=4 et la permutation (4,2,1,3), le message ABCDEFGHIJKL devient DBACHFEGLJIK. L avantage de la transposition par rapport à la substitution est qu elle ne conserve que la fréquence des lettres, et pas celle des multigrammes. Question : Soit d=6 et la permutation (6,5,4,3,2,1). Chiffrer le message CRYPTOGRA- PHIE PAR TRANSPOSITION. message chiffré = OTPYRCIHPARGRTRAPESOPSNANOITI Exercice 4 : les chiffres de Vigenère et de César 4.1. Chiffre de Vigenère La clé du chiffre de Vigenère est une séquence finie de d lettres. Le chiffrement de la première lettre du clair se fait en ajoutant modulo 26 la première lettre du clair et la première lettre de la clé (A=0,..., Z=25). La deuxième lettre du chiffré s obtient en ajoutant les deuxièmes lettres du clair et de la clé. Lorsque la clé est épuisée, on la reprend au début. Par exemple, si l on chiffre CRYPTOGRAPHIE avec BATO, on obtient DRR- DUOZFBPAWF. 2
On appelle chiffre de César le cas particulier du chiffre de Vigenère avec une clé de taille 1. Le chiffre de César est très facile à décrypter par analyse de fréquence (une fois repérée la lettre E, le décalage est connu). Question 1 : En utilisant le chiffre de César avec la clé = D, chiffrer le message C EST TROP FACILE. message chiffré = FHVWWURSIDFLOH Question 2 : En utilisant le chiffre de Vigenère avec la clé = VIGENERE, chiffrer le message VRAIMENT ETONNANT CECI. message chiffré = QZGMZIEXZBURAEEXXMIM 4.2. Chiffre de Vigenère en auto-clé C est le même principe que le chiffre de Vigenère sauf que lorsque la clé est épuisée, on utilise le clair lui-même comme clé (au lieu de reprendre la clé à son début). Par exemple, si l on chiffre CRYPTOGRAPHIE avec BATO, on obtient DRRDV- FEGTDNZE (la clé complète étant BATOCRYPTOGRA au lieu de BATOBATOBA- TOB ). Question : Avec la clé = SECRET, chiffrer le message ENCORE PLUS ETONNANT CELA. message chiffré = WREFVXTYWGVXDYHSRMQRYA avec la clé totale SECRE- TENCOREPLUSETONNA. Exercice 5 : Html et Javascript Le langage Html permet de créer des pages web statiques. Pour écrire des pages dynamiques, il est nécessaire d utiliser un langage de script, en plus, à l intérieur de la page html. Dans cet exercice, nous donnons quelques rudiments du langage de script Javascript et les appliquons sur des exemples simples de type formulaire. Structure d une page web dynamique : <HTML> <HEAD> <TITLE> Le titre de ma page </TITLE> <Script language=javascript> morceau de code Javascript -> permet la définition de données, structures de données et algorithmes (fonctions, procédures) utilisables dans la page web (zone Body). </Script> </HEAD> <BODY> 3
</BODY> </HTML> Le corps de mon document... <Form> -> Balise pour créer des zones dynamiques (type formulaire). -> Les définitions de la zone Script sont utilisables ici. </Form> Quelques balises utiles dans les formulaires : <form name= formulaire >...</form> : une zone de formulaire est toujours matérialisée par cette balise ; <input type= text name= nom size= 25 > pour créer une zone linéaire de texte (de taille 25 caractères ici), le champ name est utile pour accéder plus tard à l objet texte et à ses caractéristiques (par exemple sa valeur) ; <textarea name= comments rows=4 cols=30>...</textarea> pour créer une zone de texte plus importante (ici, 4 lignes et 30 colonnes, avec un ascenseur sur la droite si le nombre de lignes dépasse 4) ; <input type= checkbox name= caseacocher > pour créer un bouton de type case à cocher ; <input type= radio name= c1 onclick= q1=0 > pour créer un bouton rond radio (ici, l action d affectation de 0 à la variable q1 est effectuée si on clique sur le bouton) ; <input type= radio name= c2 onclick= q1=1 checked> idem ci-dessus avec présélection du bouton (attribut checked ) ; <input type= button name= boutonresultat value= Voir le résultat! onclick= calculer() > pour créer un bouton rectangulaire, dans lequel s affiche sa valeur (ici, Voir le résultat! ), et qui déclenche la fonction calculer() lors de l évenement clic (la fonction calculer() doit être définie dans la partie Script) ; <input type= reset value= Effacer les données > pour créer un bouton avec l affichage Effacer les données, qui lors de l évenement clic, effacera le contenu de toutes les zones de saisie du formulaire ; liste déroulante (ici, avec codage sur 1 caractère et 6 possibilités de choix) : <select name= pays size=1 lenght=6> <option>suisse <option>allemagne <option>france <option>etats-unis <option>italie <option>autres </select> Pour accéder à la valeur d un bouton quelconque ou d une zone de texte de nom toto, dans un formulaire de nom form1, on écrit : document.form1.toto.value (accès à l attribut value). Pour accéder à la valeur choisie dans une liste déroulante de nom liste, dans un formulaire de nom form1, on écrit : document.form1.liste.selectedindex. Question 1 : Ecrire le code Html/Javascript correspondant à la page de la figure 2. 4
Question 2 : Ecrire le code Html/Javascript correspondant au quizz de la figure 3. Question 3 : Ecrire le code Html/Javascript permettant d afficher une page web calculatrice très simple (on ne fera qu une seule opération à la fois). Solution : On ne fait pas un cours Javascript, mais faire remarquer que Javascript ressemble beaucoup à VB. On retrouve l aspect impératif au niveau algorithmique (variables, affectations, conditionnelles, boucles...), les pseudo-notions d objets, librairies d objets graphiques avec méthodes et attributs pour récupérer des caractéristiques des objets (value, name, type...) et associer des actions à des évenements (onclick, onchange...). Ils doivent réussir à faire la partie html, avec les balises spécifiques au formulaire. Par contre, il vaut mieux leur demander d écrire la partie script en langage de description, et leur donner la version Javascript en correction (comme ça ils ne seront pas bloqués, et je pense que leur connaissance du VB les aidera à comprendre sans problème la correction javascript). On profitera de la question 2 pour tester leurs connaissances réseaux (plus que basiques) avec le quizz. --------------------------> Question 1 : <HTML> <HEAD> <TITLE> Votre avis nous intéresse!</title> </HEAD> <BODY> <h1>enqu^ete de satisfaction</h1> Veuillez indiquer vos noms et prénoms, puis nous donner vos commentaires. <BR> <form> Votre Nom <input type="text" name="nom" size=15> <p> Votre Prénom <input type="text" name="prenom" size=15> <p> Vos commentaires <textarea name="comment" rows=5 cols=30></textarea> <p> <input type="reset" value="effacer"> </form> </BODY> </HTML> --------------------------> Question 2 : <HTML> <HEAD> <TITLE>Quizz général sur les réseaux</title> <script language=javascript> var q1,q2,q3,q4,q5; 5
function calculer () { score = q1+q2+q3+q4+q5; alert("votre score : " + score + "/5.") } </script> </HEAD> <BODY> <H1>Quizz général sur les réseaux </H1> Répondez aux questions suivantes afin d évaluer votre connaissance du cours : <P> <hr> <form> Dans le protocole IPv4, l adresse IP 120.34.56.317 existe-elle? <input type="radio" name="c1" onclick="q1=0">oui <input type="radio" name="c1" onclick="q1=1">non L adresse IP 120.54.21.2 est-elle sur le m^eme sous-réseau que l adresse IP : <input type="radio" name="c2" onclick="q2=1"> 120.55.37.1 <input type="radio" name="c2" onclick="q2=0"> 67.3.21.2 Quelle est la différence entre Internet et le Web? <input type="radio" name="c3" onclick="q3=0"> aucune <input type="radio" name="c3" onclick="q3=1"> internet est un support physique et le web un support logique (d informations) <input type="radio" name="c3" onclick="q3=0"> le web est un support physique et internet un support logique (d informations) Lequel de ces services permet d exécuter un programme à distance sur une machine cible : <input type="radio" name="c4" onclick="q4=0"> FTP <input type="radio" name="c4" onclick="q4=1"> SSH <input type="radio" name="c4" onclick="q4=0"> IRC Laquelle de ces topologies réseau n existe pas? <input type="radio" name="c5" onclick="q5=0"> en bus <input type="radio" name="c5" onclick="q5=0"> en étoile <input type="radio" name="c5" onclick="q5=1"> en guirlande <input type="radio" name="c5" onclick="q5=0"> en maillage <P> <input type="button" name="bouton_resultat" value="voir le résultat!" onclick="calculer()"> </form> </BODY> </HTML> 6
--------------------------> Question 3 : <HTML> <HEAD> <TITLE>Calculatrice web</title> <script language=javascript> var op1,op2,op,r; function appliquer (op,op1,op2) { if (op==0) {r = op1 + op2;} else if (op==1) {r = op1 - op2;} else if (op==2) {r = op1 * op2;} else {r = op1 / op2;}; alert("résultat = " + r) } </script> </HEAD> <BODY> <H1>Une calculatrice (très) simple</h1> <hr> <form name="calc"> <strong>première opérande : </strong> <input type="text" name="op1" size="5"><p> <strong>deuxième opérande : </strong> <input type="text" name="op2" size="5"><p> <strong>opération : </strong> <select name="select_op" size=1 lenght=4> <option>addition <option>soustraction <option>multiplication <option>division </select><p> <input type="button" name="bouton_calcul" value="voir le résultat!" onclick="appliquer(document.calc.select_op.selectedindex,eval(document.calc.op1.value), eval(document.calc.op2.value))"> </form> </BODY> </HTML> 7
Protocole d appel Protocole de réception A B décrocher téléphone sonnerie téléphone sonnerie attendre tonalité libre décrocher composer numéro arret sonnerie parler! (protocole social) (écoute signal d écho) interruption signal d écho tonalité de fin de communication parler! (protocole social) tonalité de fin de communication Fig. 1 Le protocole téléphonique 2 Travaux Pratiques Exercice 1 : manipulations réseaux sous Linux Cet exercice a pour but de manipuler quelques commandes systèmes et réseaux en Linux. Pour cela, se connecter sous Linux, ouvrir une fenêtre terminal (console), taper les commandes suivantes et noter à chaque fois les résultats obtenus : 1. hostname (ou hostname -f) : nom de la machine long 2. hostname -i : adresse IP de la machine 3. hostname -s : adresse courte 4. hostname -d : domaine 5. finger votrenomutilisateur : quelques caractéristiques de l utilisateur 6. ping nommachinevoisine : test de connection avec la machine voisine 7. traceroute www.free.fr : donne le routage pour accéder à www.free.fr 8. ssh nommachinevoisine : accès distant à la machine voisine 9. talk nomvoisin@nommachinevoisine (arrêt du processus avec contrôle+c) 10. ll 8
Outre le listing des fichiers, cette commande affiche les droits d accès sur les fichiers. Ainsi, on voit les droits d accès en lecture, écriture et exécution des groupes tout le monde, groupe et utilisateur sous la forme rwxrwxrwx pour chaque fichier ou répertoire. La commande chmod [ugoa][+-][rwx] nomfichier permet de changer les droits d accès d un groupe d utilisateurs à un fichier. 11. Appliquer chmod sur au moins un exemple. Exercice 2 : manipulations réseaux sous Windows Cet exercice a pour but de manipuler quelques commandes systèmes et réseaux en Windows. Pour cela, se connecter sous Windows, ouvrir une fenêtre invite de commandes (Démarrer Programmes Accessoires invite), taper les commandes suivantes et noter à chaque fois les résultats obtenus : 1. hostname : nom de la machine 2. finger votrenomutilisateur : quelques caractéristiques de l utilisateur 3. ping nommachinevoisine : test de connection avec la machine voisine 4. netstat : donne l état des connections actives 5. telnet nommachinevoisine (sortie avec quit ) : accès distant à la machine voisine 6. dans un navigateur, entrer l adresse ftp : ftp ://ftp.inria.fr aller dans le répertoire pub/ puis TeX/ puis GUTenberg/ par exemple Vous êtes prêts à télécharger une version du célèbre traitement de texte Latex! Exercice 3 : cryptographie Les sites http ://www.bibmath.net/crypto/ et http ://lwh.free.fr/pages/algo/crypto/cryptologie.htm proposent des applets implantant de nombreux algorithmes de cryptographie (dont ceux vus en TD). Question : Tester quelques-uns de ces algorithmes sur différents exemples pour bien en comprendre le fonctionnement. Exercice 4 : création de pages web Question 1 : Ecrire une page Html sur le sujet de votre choix avec au moins une image, un lien vers un site web, des listes ou tableaux, et quelques traitements sur l affichage (couleurs, différentes tailles de texte, gras, italique, etc.). Question 2 : Ecrire une page Html/Javascript réalisant un questionnaire sur le sujet de votre choix. Question 3 : Créer un site web en liant entre elles les deux pages précédentes, et en y ajoutant de nouvelles pages s il reste du temps. Références Pour le langage Html : http ://www.w3.org (site du World Wide Web Consortium, avec des tutoriels etc.) Pour le langage Javascript : http ://www.javascriptkit.com/javatutors/index.shtml (tutoriels...) 9