Simulateur Ip. Chapitre 3. 3.2 Construction des topologies



Documents pareils
Instructions relatives à l installation et à la suppression des pilotes d imprimante PostScript et PCL sous Windows, version 8

Pour plus de détails concernant le protocole TCP conférez vous à la présentation des protocoles Internet enseignée pendant.

Les possibilités de paramétrage réseau des logiciels de virtualisation sont les suivantes quant à la connexion réseau :

Sélection du contrôleur

Programmation Par Objets

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Configurer le Serveur avec une adresse IP Statique (INTERFACE :FastEthernet) : et un masque

Projet de programmation (IK3) : TP n 1 Correction

Package Java.util Classe générique

Programmer en JAVA. par Tama

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Connexion à distance. Pour configurer les automates Beckhoff via un PC de programmation VERSION : 1.0 / PH

Corrigé des exercices sur les références

PARAGON Disk Wiper. Guide de l utilisateur. Paragon Technology GmbH, System Programmierung. Copyright Paragon Technology GmbH

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

Remote Method Invocation Les classes implémentant Serializable

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

UFR de Mathématiques et Informatique Année 2009/2010. Réseaux Locaux TP 04 : ICMP, ARP, IP

TP Composants Java ME - Java EE. Le serveur GereCompteBancaireServlet

Pour les caméras IP de modèles : QSTC201 QSTC211. Surveillance à distance via Internet Guide de démarrage

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Applet pour visualiser les variables «automate» notifiées

4. Groupement d objets

Un ordonnanceur stupide

COMMENT AUTORISER LES PARTAGES RESEAUX ET IMPRIMANTE SOUS L ANTIVIRUS FIREWALL V3

Notice d Utilisation du logiciel Finite Element Method Magnetics version 3.4 auteur: David Meeker

Notice de fonctionnement DVR H Méthode de Visionnage ESEENET

Thomson ST 2030 guide de configuration et d utilisation

Déclaration des postes SIP 67xxi

ADO.NET. Ado.net propose deux modes d'accès, le mode connecté et le mode déconnecté.

Développement d un logiciel de messagerie instantanée avec Dotnet (version simplifiée)

JADE : Java Agent DEvelopment framework. Laboratoire IBISC & Départ. GEII Université & IUT d Evry nadia.abchiche@ibisc.univ-evry.

Chapitre 10. Les interfaces Comparable et Comparator 1

Les clés d un réseau privé virtuel (VPN) fonctionnel

TD Objets distribués n 3 : Windows XP et Visual Studio.NET. Introduction à.net Remoting

TER Réseau : Routeur Linux 2 Responsable : Anthony Busson

Calcul Parallèle. Cours 5 - JAVA RMI

STS SE. FreeRTOS. Programmation réseau WIFI. Programmation réseau. Socket Tcp. FlyPort smart Wi-Fi module

RMI le langage Java XII-1 JMF

Synchro et Threads Java TM

26 Centre de Sécurité et de

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.

Threads. Threads. USTL routier 1

TCP/IP, NAT/PAT et Firewall

Les cahiers pratiques de Anonymat.org. SocksCap32. Edition du 20 Octobre 2000

Réseaux Locaux. Objectif du module. Plan du Cours #3. Réseaux Informatiques. Acquérir un... Réseaux Informatiques. Savoir.

TUTORIEL INSTALLATION D UNE WENBOX ETHERNET DE WENGO SUR UN MODEM ROUTEUR DG834 G DE NETGEAR

Création d un service web avec NetBeans 5.5 et SJAS 9

La qualité de service (QoS)

Tutorial Terminal Server sous

PAGE 1. L écran du logiciel d Open Office Draw. Barre de menu: Les commandes du logiciel

DHCP. Dynamic Host Configuration Protocol

RACCOURCIS CLAVIERS. DEFINITION : Une «combinaison de touches» est un appui simultané sur plusieurs touches.

Programmation Réseau. Sécurité Java. UFR Informatique jeudi 4 avril 13

Desktop Intégration. Rémi Forax

CONFIGURATION DE BASE. 6, Rue de l'industrie BP130 SOULTZ GUEBWILLER Cedex. Fax.: Tel.:

GUIDE D UTILISATION ADSL ASSISTANCE

Introduction. Adresses

Belgacom Forum TM 3000 Manuel d utilisation

SYSTEME DE GESTION DES ENERGIES EWTS EMBEDDED WIRELESS TELEMETRY SYSTEM

MANUEL D INSTALLATION

Développement mobile MIDP 2.0 Mobile 3D Graphics API (M3G) JSR 184. Frédéric BERTIN

A DESTINATION DES SERVICES TIERS. Editeurs d applications et ressources pédagogiques connectées à l ENT

Installation et paramétrage de Fedora dans VirtualBox.

Dis papa, c est quoi un bus logiciel réparti?

Windows Internet Name Service (WINS)

Lambda! Rémi Forax Univ Paris-Est Marne-la-Vallée

Premiers Pas en Programmation Objet : les Classes et les Objets

Arborescence et création de dossiers

GNS 3 Travaux pratiques

Télécommunications. IPv4. IPv4 classes. IPv4 réseau locaux. IV - IPv4&6, ARP, DHCP, DNS

SOMMAIRE. Présentation assistée sur ordinateur. Collège F.Rabelais 1/10

Installation et configuration du serveur syslog sur Synology DSM 4.0

MODE D EMPLOI OUTLOOK ADD-IN POUR SELECTLINE

as Architecture des Systèmes d Information

Architecture Orientée Service, JSON et API REST

Allocation de l adressage IP à l aide du protocole DHCP.doc

Cahier des Charges du Projet Domotique. Choquet Mathieu Masson Jérôme Groupe 6. Domotique. p.1

RX3041. Guide d'installation rapide

Rappel: Le routage dans Internet. Contraintes. Environnement et contraintes. La décision dans IP du routage: - Table de routage:

Securexam Consignes pour l EFU Les 2, 3 et 4 juin 2015

Java Licence Professionnelle Cours 7 : Classes et méthodes abstraites

Pour configurer le Hitachi Tecom AH4021 afin d'ouvrir les ports pour "chatserv.exe", vous devez suivre la proc

Création du projet : 1 sur 13

Procédure pas à pas de découverte de l offre. Service Cloud Cloudwatt

Internet - Outils. Nicolas Delestre. À partir des cours Outils réseaux de Paul Tavernier et Nicolas Prunier

Systèmes et Réseaux (ASR 2) - Notes de cours Cours 14

COMMANDES RÉSEAUX TCP/IP WINDOWS.

ESPACE COLLABORATIF SHAREPOINT

Internet Protocol. «La couche IP du réseau Internet»

Routage Statique. Protocoles de Routage et Concepts. Version Cisco Systems, Inc. All rights reserved. Cisco Public 1

Exercice : configuration de base de DHCP et NAT

FORMATION PcVue. Mise en œuvre de WEBVUE. Journées de formation au logiciel de supervision PcVue 8.1. Lieu : Lycée Pablo Neruda Saint Martin d hères

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

L3 informatique Réseaux : Configuration d une interface réseau

Dossier de réalisation d'un serveur DHCP et d'un Agent-Relais SOMMAIRE. I. Principe de fonctionnement du DHCP et d'un Agent-Relais

Patton M-ATA-1/E - guide d installation et de configuration

Computer Networking: A Top Down Approach Featuring the Internet, 2 nd edition. Jim Kurose, Keith Ross Addison-Wesley, July ENPC.

Plan du Travail. 2014/2015 Cours TIC - 1ère année MI 30

TD/TP PAC - Programmation n 3

Transcription:

Chapitre 3 Simulateur Ip 3.1 Présentation générale Le simulateur IP permet de : construire une topologie de réseau composée de routeurs et de machines reliés deux à deux par des liaisons ; donner des adresses IP aux interfaces réseaux ; définir les tables de routage des machines et des routeurs ; programmer des applications quasi-similaires à de vraies applications réseaux qui s exécutent sur le simulateur ; de sauvegarder les topologies et les applications et de les recharger dans le simulateur. Le simulateur est programmé en java et peut être lancé avec le fichier simulip.jar. Il est nécessaire que la variable d environnement CLASSPATH désigne l emplacement de ce fichier (plus les répertoires nécessaires à l exécution de programmes en java). 3.2 Construction des topologies La figure 3.1 montre l interface de démarrage du simulateur. Sur la partie supérieure gauche de la fenêtre (Component), on peut voir trois types de composant. Du haut vers le bas, il y a un router, un PC et une liaison ; ces trois composants permettent de construire des topologies de réseaux. Une topologie de réseau est généralement constituée de plusieurs routeurs reliés entre eux par des liaisons. Les routeurs peuvent avoir plusieurs liaisons avec plusieurs routeurs ou PC. En revanche, on ne reliera un PC qu avec un seul router. Les manipulations pour construire les topologies sont assez intuitives : Sélection d un composant de type router ou PC : un click sur l image dans la partie Component pour sélectionner, un deuxième click pour le positionnement dans la fenêtre. Liaison entre deux composants de la fenêtre : un click sur le trait oblique dans la partie Component, un premier click sur le premier composant à relier, puis un second click sur le deuxième. 10

3.2. Construction des topologies 11 Fig. 3.1 Interface du simulateur Suppression d un composant : un click sur le composant le sélectionne (un routeur ou un PC sera encadré, une liaison aura ses deux extrémités délimitées) puis sur le clavier la touche back space ou Suppr efface le composant. La suppression d un composant de type routeur ou PC entraîne la suppression de toutes les liaisons qui le concernait. Déplacement d un composant : click sur le composant routeur ou PC et déplacement en conservant le bouton de la souris appuyé. 3.2.1 Paramètres internes Les paramètres internes sont contenus dans les composants, ils sont de différentes natures et sont accessibles depuis un menu contextuel (bouton droit de la souris, figure 3.2) sur le composant. Paramètre des routeur et des PC Le menu contient trois parties : Name : pour changer le nom du composant (de préférence unique dans la topologie).

12 Chapitre 3. Simulateur Ip Fig. 3.2 Menu d un noeud de réseau Routing table : pour créer ou modifier la table de routage du composant. Il faut utiliser les boutons New et Remove pour créer et supprimer des lignes. Les lignes existantes peuvent être modifiées.

3.2. Construction des topologies 13 Application : pour ajouter des applications au composant. Attention le nom d une application doit être le nom de la classe java de l application (par exemple : simulip.examples.udpechosend).

14 Chapitre 3. Simulateur Ip Paramètre sur les liaisons Le menu contient une seule partie permettant de mettre à jour les paramètres réseaux de la liaison, c est à dire les adresses réseaux des deux extrémités et le masque de sous réseau associé. 3.2.2 Gestion des simulations La barre de menu du simulateur permet les manipulations habituelles sur les fichiers (ouverture, sauvegarde, renommage) dans le menu File. Le format des fichiers de sauvegarde est du texte (formaté en XML), il est déconseillé de faire des modifications directement sur ces fichiers. Le lancement d une

3.2. Construction des topologies 15 Fig. 3.3 Fenêtre de simulation simulation se fait par le menu Simulation. Une fenêtre apparaît (figure 3.3) qui reprend la topologie contruite. Plusieurs simulations de la même topologies peuvent être lancées (avec des routages différents par exemple). Dans la fenêtre de simulation, les menus contextuels sur les noeuds sont différents ; les noms des noeuds ne sont plus modifiables ; les tables de routages sont en consultation ; les applications sont en consultation et leur sélection entraîne leur exécution. La séléction d une application en fait disparaître la liste (la figure ci-dessous n est donc pas un reflet exact de la réalité).

16 Chapitre 3. Simulateur Ip 3.2.3 Construction des applications Pour être exécutable dans le simulateur, une application doit respecter certaines règles : importer les packages java.net.* (dans le cas d un serveur) et simulip.net.* la classe principale doit étendre la classe Application le point de départ de l application se fait par la méthode run() les entrées/sorties (clavier / écran) de l application doivent se faire par les méthodes : system.in.read() qui retourne une String java. Cette instruction entraîne l apparition d une fenêtre de saisie qui disparaît une fois la touche Entrée tapée.

3.2. Construction des topologies 17 system.out.println(string) qui entraîne l apparition d une fenêtre de sortie. Attention il s agit bien de system et non de System Les émissions / réception de données par le réseau utilisent le protocole UDP, les classes simulip.- net.datagramsocket et simulip.net.datagrampacket reprennent les fonctionnalités équivalentes à celles du package java.net. La documentation de ces classes est au format javadoc (répertoire

18 Chapitre 3. Simulateur Ip javadocsimulip). Il est assez facile de transformer les programmes pour le simulateur en vrai programmes réseau par substitution de : import simulip.net.* ; par import java.net.* ;, plus les adaptations nécessaires liées à l utilisation de la classe Application qui elle est propre au simulateur et n est pas utilisable en dehors de celui-ci. 3.3 Excercices de routage Réaliser les topologies suivantes en respectant les consignes d adressage. Pour tester les configurations, il faut utiliser un des couples d applications suivants (déjà programmées, voir le code en annexe) : Client / serveur où le client envoie des paquets de manière continue et où le serveur retourne les paquets au client, avec les classes : simulip.examples.udpexampleclient simulip.examples.udpexampleserver Echo Send / reply où le Send envoie un paquet et attend que le Reply lui ait retourné avant de recommencer, avec les classes : simulip.examples.udpechosend simulip.examples.udpechoreply 1. Le réseau reliant A et R1 a l adresse 1.1.1/24, A à le numéro 1 et R1 le 254. Pour le réseau entre B et R4, prendre 1.1.2/24 ; B a le numéro 1 et R4 le numéro 254. Les réseaux entre les routeurs sont à définir. Faire en sorte que le routage passe par R2 dans le sens A vers B et passe par R3 dans le sens B vers A. 2. Suivre les indications suivantes :

3.4. Exercice de programmation : un chat P2P 19 réseau adresse A et R1 1.1.1/24 B et R2 1.1.2/24 C et R3 1.1.3/24 D et R4 1.1.4/24 Les réseaux entre les routeurs sont à définir ; faire en sorte que le routage soit le plus direct possible. 3.4 Exercice de programmation : un chat P2P 3.4.1 Description générale L application de chat demandée doit permettre à deux ou plusieurs utilisateurs, sur différents PC, de s échanger des messages saisis au clavier et affichés dans leur écran. Les utilisateurs n ont pas à connaître les adresses IP ni, pour une partie d entre eux, les numéro de port utilisés pour communiquer. Ces informations sont disponibles auprès d un programme serveur dont l adresse, en revanche, doit être connue de tous les utilisateurs. Il existe deux types d utilisateurs : les utilisateurs qui s enregistrent au serveur en donnant un nom d utilisateur (choisi par celui-ci) et un numéro de port, les utilisateurs, enregistrés ou non dans le serveur, qui désirent entrer en communication avec un autre utilisateur enregistré dans le serveur. Le fonctionnement de l application est le suivant : 1. Le programme serveur est lancé sur un PC.

20 Chapitre 3. Simulateur Ip 2. Un programme d utilisateur s enregistre en donnant son nom et le numéro de port pour la communication. Lorsque son inscription est confirmée par le serveur, le programme se met en attente de communication sur le port donné au serveur. 3. Un second programme (d utilisateur non obligatoirement enregistré) demande au serveur les informations concernant un utilisateur en lui donnant le nom de l utilisateur avec lequel la communication doit être établie. La réponse fournie par le serveur doit permettre d envoyer des données vers l utilisateur enregistré qui est sensé attendre (cf le point précédent). 4. Les deux utilisateurs peuvent alors s échanger alternativement des messages saisis au clavier. 3.4.2 Travail demandé Il faut programmer les deux programmes d utilisateurs, le programme du serveur étant déjà fait (P2PServer en Annexes). La nature des données échangées entre le serveur et les deux types de clients sont spécifiée ci-dessous : Le serveur est en attente sur le port 530, il utilise le protocole UDP. L enregistrement d un utilisateur doit contenir (dans l ordre) : 1. le caractère r (comme recording) sur un octet, 2. le numéro de port utilisé pour communiquer, sur deux octets, l octet de poids fort en premier, 3. la taille du nom de l utilisateur sur un octet, 4. le nom de l utilisateur (un octet par lettre). Le serveur répond alors par un octet contenant le caractère y. Le nom de l utlisateur ne doit pas dépasser 25 caractères, c est aux programmes des utilisateurs de veiller à ce que cette limite ne soit pas dépasée. Le numéro de port doit être compris entre 0 et 65535 et c est également au programme de l utilisateur s enregistrant de veiller à ce que ces marges soient respectées. Dans le cas où le premier caractère n est pas compris par le serveur, il retourne un octet contenant le caractère n. A la réception d une réponse positive du serveur, le programme de l utilisateur doit se mettre en attente sur le numéro de port donné, en UDP. La demande d informations sur un utilisateur doit contenir (dans l ordre) : 1. un octet contenant le caractère c, 2. un octet contenant la taille du nom de l utilisateur demandé, 3. le nom de l utilisateur Le serveur répond alors avec les données suivantes : 1. un octet contenant le caractère y, 2. l adresse IP de l utilisateur demandé, sur 4 octets en commençant par l octet de poids fort, 3. le numéro de port de l utilisateur, sur deux octets en commençant par l octet de poids fort. Si le premier caractère envoyé n est pas compris, ou si l utilisateur demandé n est pas enregistré, le serveur répond avec un octet contenant le caractère n.

3.4. Exercice de programmation : un chat P2P 21 3.4.3 Evolutions de l application 1. Modifier le serveur et les clients pour que seuls des utilisateurs enregistrés puissent communiquer. 2. Faire en sorte que le dialogue puisse être à plus de deux utilisateurs.

22 Chapitre 3. Simulateur Ip 3.5 Annexes 3.5.1 simulip.examples.udpexampleclient package simulip.examples; import simulip.net.*; public class UdpExampleClient extends Application { public UdpExampleClient(){; public void run(){ try{ int count = 0; byte[] data = String.valueOf(count).getBytes(); String ip = system.in.read(); simulip.net.datagramsocket d = new simulip.net.datagramsocket(this); simulip.net.datagrampacket p = new simulip.net.datagrampacket(data,data.length,ip,53); while(true){ try{ Thread.sleep(400); catch(exception e){ d.send(p); count++; byte[] nd = String.valueOf(count).getBytes(); p.setdata(nd); catch(exception e){ system.out.println(e.getmessage());

3.5. Annexes 23 3.5.2 simulip.examples.udpexample.server package simulip.examples; import java.net.*; import simulip.net.*; public class UdpExampleServer extends Application{ private byte[] data = new byte[5]; public void run(){ try{ simulip.net.datagramsocket d = new simulip.net.datagramsocket(this,53); simulip.net.datagrampacket p = new simulip.net.datagrampacket(data,5); while(true){ d.receive(p); p.setaddress(p.getaddress()); p.setport(p.getport()); system.out.println("recu " + new String(p.getData())); d.send(p); catch(bindexception b){ system.out.println(b.getmessage());

24 Chapitre 3. Simulateur Ip 3.5.3 simulip.examples.udpechosend package simulip.examples; import simulip.net.*; public class UdpEchoSend extends Application{ public void run(){ try{ String ipdest; ipdest = system.in.read(); int count = 0; byte[] data = String.valueOf(count).getBytes(); simulip.net.datagramsocket d = new simulip.net.datagramsocket(this); simulip.net.datagrampacket p = new simulip.net.datagrampacket(data,5,ipdest,54); while(true){ d.send(p); d.receive(p); system.out.println("ack de : " + new String(p.getData())); p.setaddress(p.getaddress()); p.setport(p.getport()); count++; data = String.valueOf(count).getBytes(); p.setdata(data); catch(exception e){ system.out.println(e.getmessage());

3.5. Annexes 25 3.5.4 simulip.examples.udpechoreply package simulip.examples; import simulip.net.*; import java.net.*; public class UdpEchoReply extends Application{ private byte[] data = new byte[5]; public void run(){ try{ simulip.net.datagramsocket d = new simulip.net.datagramsocket(this,54); simulip.net.datagrampacket p = new simulip.net.datagrampacket(data,5); while(true){ d.receive(p); p.setaddress(p.getaddress()); p.setport(p.getport()); system.out.println(new String(p.getData())); d.send(p); catch (BindException b){ system.out.println(b.getmessage());

26 Chapitre 3. Simulateur Ip 3.5.5 P2Pserver import simulip.net.*; import java.net.bindexception;import java.util.*; import java.math.*; public class P2Pserver extends Application { private Vector<Record> records = new Vector<Record>(); private byte[] data = new byte[29]; public void run(){ try{ simulip.net.datagramsocket d = new simulip.net.datagramsocket(this,530); simulip.net.datagrampacket p = new simulip.net.datagrampacket(data,13); while(true){ d.receive(p); data = p.getdata(); if(data[0] == r ){ system.out.println("recording request"); NetworkAddress add = p.getaddress(); system.out.println("from " + add.getstraddress()); byte[] pnum = new byte[3]; pnum[0] = 0; pnum[1] = data[1]; pnum[2] = data[2]; BigInteger pbi = new BigInteger(pnum); system.out.println("chat at port " + pbi.tostring()); byte[] blname = new byte[1]; blname[0] = data[3]; BigInteger it = new BigInteger(blname); byte[] bname = new byte[it.intvalue()]; for(int i = 0; i < bname.length; i++) bname[i] = data[i + 4]; String name = new String(bname); system.out.println("name : " + name); byte[] twobyteport = new byte[2]; twobyteport[0] = pnum[1]; twobyteport[1] = pnum[2]; Record rec = new Record(add.getStrAddress(), twobyteport,name); records.add(rec); byte[] ack = new byte[1]; ack[0] = y ;

3.5. Annexes 27 p.setdata(ack); else if (data[0] == c ){ system.out.println("contacting request"); byte[] blname = new byte[1]; blname[0] = data[1]; BigInteger it = new BigInteger(blname); byte[] bname = new byte[it.intvalue()]; for(int i = 0; i < bname.length; i++) bname[i] = data[i + 2]; String name = new String(bname); system.out.println("ask for : " + name); Enumeration<Record> er = records.elements(); Record rec = null; boolean found = false; while(!found && er.hasmoreelements()){ rec = er.nextelement(); found = rec.name.equals(name); if(!found){ byte[] nack = new byte[1]; nack[0] = n ; p.setdata(nack); else{ byte[] resp = new byte[7]; try{ resp[0] = y ; byte[] add = NetworkAddress.toBytes((new NetworkAddress(rec.address)).getBits()); resp[1] = add[0]; resp[2] = add[1]; resp[3] = add[2]; resp[4] = add[3]; resp[5] = rec.port[0]; resp[6] = rec.port[1]; p.setdata(resp); catch(networkaddressformatexception nafe){ else { byte[] nack = new byte[1];

28 Chapitre 3. Simulateur Ip nack[0] = n ; p.setdata(nack); system.out.println("unknow request "); p.setaddress(p.getaddress()); p.setport(p.getport()); d.send(p); catch(bindexception b){ system.out.println(b.getmessage()); private class Record { public String address; public byte[] port = new byte[2]; public String name; public Record(String a, byte[] p, String n){ address = new String(a); port = p; name = new String(n);