Cours simulation d’un réseau Ipv4/IPv6, tutoriel & guide de travaux pratiques réseau informatique en pdf.
Choix du language : Perl
La raison pour laquelle nous avons choisi Perl est simple : nous connaissions très peu ce langage et nous n’avions jamais programmé de gros projets en Perl. Notre connaissance dans ce langage se limitait à quelques scripts.
Après quelques recherches , nous avons trouvé comment marcher la couche objet de Perl : un objet est une simple table de hashage. Cette structure est très souple. De plus, le langage Perl hérite de beaucoup de fonctionnalités du langage C en y apportant une couche de souplesse et de renouveau.
Au vu de ces faits, ce langage nous est apparu être un langage adapté pour ce devoir.
Structures utilisées
Nous avons choisi de développer une simulation dynamique permettant à un ou plusieurs utilisateurs d’envoyer et recevoir des paquets sur le réseau. Pour cela, nous avons choisi de faire un système multiprocessus. C’est à dire que chaque machine du réseau est lancée séparement.
Thread
Afin de rester en mode dynamique, il fallait pouvoir avoir un prompt attendant la une chaîne de caractères rentrée par l’utilisateur et, en meme temps, pouvoir lire sur le réseau. Nous avons donc choisi de lancer ce prompt dans un thread. De cette manière, la machine lit le réseau en continu sans être bloquée par l’attente de l’interaction avec l’utilisateur.
Tube nommé
Comme nous étions en multiprocessus, il fallait trouver un moyen de communiquer entre les machines. Notre choix s’est tout d’abord tourné sur de simple de fichier, mais la tache était fastidieuse car il fallait gérer le vérouillage des fichiers pour l’écriture, plus le mode FIFO (l’application réseau doit lire le plus ancien paquet reçu).
C’est alors que nous nous sommes rappellés que l’architecture Unix/Linux proposé ce genre de service : les tubes nommés.
Les tubes nommés vont alors représenter les interfaces réseau (les points d’accroches au réseau).
Fonctionnement du simulateur
Fichiers de configuration machines
Afin de ne pas avoir une application figée dans la configuration de base proposée par le sujet, nous avons choisi de stocker les configurations des différentes machines dans des fichiers de configuration. Cela nous a permis de vérifier le bon fonctionnement des scénarios dans la configurations proposé, mais également de tester sur d’autres configurations avec plus ou moins de machines lancées.
Les lignes commençant par des # sont assimilées à des commentaires et ne sont pas interprétées.
Lorsqu’une ligne commence par HOST, le mot d’après représente le nom de machine.
Lorsqu’il s’agit du mot INTERFACE, on assimile le deuxième mot au domaine (réseau) dans laquelle cette interface se connecte. Ensuite, les mot suivants réprésentent les IPs avec leur version (v4=84.157.0.89 => IPv4 de valeur ….).
Le terme IPFORWARD déclenche le mode routeur, c’est à dire le lancement du serveur DNS, les distributions d’adresses DNS-ALG et le forward d’IPv6 a travers les interfaces.
Introduction
I. Configuration de la simulation
II. Choix du language : Perl
III. Structures utilisées
Thread
Tube nommé
IV. Fonctionnement du simulateur
Fichiers de configuration machines
Simulation du réseau
Connexion
Envoi d’un paquet
Réception d’un paquet
Construction du préfixe DNS-ALG
V. Objets utilisés dans le simulateur
Classe Argument
Classe Machine
Classe CommandeMachine
Classe Creseau
Classe Interface
Classe Prompt
Classes d’utilisation
Classe Ip
Application Reseau
Classe PingServer
Classe DnsServer
Classe Ping
Classe Resolv
Conclusion