Adresses IP – Bac théorique – Section informatique – 2013

Bac Info 31-12-25
154 0

Sujet (Algo et programmation - Bac 2013)

Etant donné un fichier texte nommé "F_IPV4.txt" contenant dans chaque ligne une adresse IPV4.

On se propose de vérifier la validité des adresses IPV4 stockées dans ce fichier, de déterminer la classe à laquelle appartient chacune des adresses valides, de les faire migrer vers le système IPV6 et de stocker dans un fichier d'enregistrements nommé "F JPV6.dat" chaque adresse IPV4 valide ainsi que la classe à laquelle elle appartient et son équivalent en IPV6.

Pour ce faire, on dispose des informations suivantes :

1- Une adresse IPV4 valide est codée sur quatre octets (32 bits) et représentée sous la forme W.X.Y.Z avec W, X, Y et Z sont quatre entiers naturels appartenant chacun à l'intervalle [0, 255] et séparés par le caractère "."

2- Pour vérifier la validité d'une adresse IPV4, le candidat est appelé uniquement à vérifier si W, X, Y et Z sont dans l'intervalle [0, 255].

3- Chaque adresse IPV4 valide appartient à une classe :

- Classe A, si la valeur du premier bit à gauche de la représentation en binaire de W est

- Classe B, si la valeur des deux premiers bits à gauche de la représentation en binaire de W est 10.

- Classe C, si la valeur des trois premiers bits à gauche de la représentation en binaire de W est 110.

- Classe D, si la valeur des quatre premiers bits à gauche de la représentation en binaire de W est 1110.

- Classe E, si la valeur des quatre premiers bits à gauche de la représentation en binaire de W est 1111.

4- Une adresse IPV6 est codée sur 16 octets (128 bits). Pour faire migrer une adresse IPV4 valide vers le système IPV6, on va s'intéresser uniquement au bloc de 32 bits dans l'adresse IPV6 qui représente la conversion en hexadécimal de l'adresse IPV4.

Pour ce faire, on convertit chacun des nombres W, X, Y et Z en hexadécimal, puis, les concaténer en insérant le caractère ":" au milieu du résultat obtenu.

Exemple

L'adresse 155.105.50.68 est valide et elle appartient à la classe B car la valeur des deux premiers bits à gauche de la représentation en binaire de 155 qui est 10011011 est 10.

L'équivalent du nombre décimal 155 en hexadécimal est 9B

L'équivalent du nombre décimal 105 en hexadécimal est 69

L'équivalent du nombre décimal 50 en hexadécimal est 32

L'équivalent du nombre décimal 69 en hexadécimal est 45

Donc, le bloc de 32 bits dans l'adresse IPV6 qui représente la conversion en hexadécimal de l'adresse IPV4 est 9B69:3245

Travail demandé

1. Analyser le problème en le décomposant en modules.

2. Analyser chacun des modules envisagés.

 

Solution Algorithmique

Dans cet algorithme, On va utiliser six fonctions et quatre procédures:

- la fonction saisie_nbr_adresses()

- la fonction verif_nombre()

- la procédure verif_adresse()

- la procédure saisie_adresse()

- la procédure remplir_fichier_ipv4()

- la fonction conversion_binaire()

- la fonction classe_ip()

- la fonction conversion_hexadecimal()

- la fonction conversion_ipv6()

- la procédure remplir_fichier_ipv6

 

Algorithme du programme Principal

Déclaration des objets

Objet Type / Nature
n entier

 

La fonction saisie_nbr_adresses

La fonction saisie_nbr_adresses() permet à l’utilisateur de saisir un entier strictement positif, tout en vérifiant la validité de la saisie.

Le programme demande à l’utilisateur d’entrer un nombre entier n.

Si n est inférieur ou égal à 0, la saisie est refusée.

Le programme redemande la saisie autant de fois que nécessaire jusqu’à ce que l’utilisateur fournisse un entier strictement positif.

Une fois la valeur correcte saisie, elle est retournée par la fonction.

Déclaration des objets

Objet Type / Nature
n entier

 

La fonction verif_nombre

Ce programme définit une fonction verif_nombre(ch) qui vérifie si une chaîne de caractères ch représente un nombre entier valide compris entre 0 et 255.

Plus précisément, la fonction :

Vérifie la longueur de la chaîne
→ Elle doit contenir entre 1 et 3 caractères, ce qui correspond aux nombres de 0 à 255.

Vérifie que tous les caractères sont des chiffres ('0' à '9')
→ La boucle while parcourt la chaîne caractère par caractère pour s’assurer qu’il n’y a que des chiffres.

Convertit la chaîne en entier
→ Si tous les caractères sont numériques, la chaîne est transformée en entier avec int(ch).

Teste l’intervalle de validité
→ Le nombre doit être compris entre 0 et 255 inclus.

Valeur retournée :

Vrai → si ch est une chaîne numérique représentant un entier entre 0 et 255

Faux → dans tous les autres cas (lettres, symbole, nombre trop grand, chaîne vide, etc.)

Déclaration des objets

Objet Type / Nature
i entier

 

La fonction verif_adresse

Ce programme commence la définition d’une fonction qui a pour objectif de vérifier la validité d’une adresse IPv4, c’est-à-dire une adresse du type : a.b.c.d où a, b, c et d sont des nombres compris entre 0 et 255.

Ce que fait précisément cette fonction :

1- vérifie que l’adresse contient 3 points

2- extrait les 4 octets

3- vérifie que chaque partie est un nombre entre 0 et 255, à l’aide d’une fonction comme verif_nombre

Déclaration des objets

Objet Type / Nature
w chaîne
x chaîne
y chaîne
z chaîne

 

La fonction saisie_adresse

Ce programme définit la fonction saisie_adresse() qui permet à l’utilisateur de saisir une adresse IPv4 valide, en contrôlant la saisie jusqu’à ce qu’elle soit correcte.

Cette fonction :

- demande une première saisie

- vérifie la validité de l’adresse

- redemande la saisie tant que l’adresse est invalide

- retourne l’adresse valide

Déclaration des objets

Objet Type / Nature
ip chaîne

La procédure remplir_fichier_ipv4

Ce programme définit la procédure remplir_fichier_ipv4(n) dont le rôle est de créer (ou écraser) le fichier texte F_IP4.txt et d’y enregistrer n adresses IPv4 valides, saisies par l’utilisateur.

Cette procédure ouvre le fichier en mode écriture, saisit et écrit n adresses IPv4 valides.

Pour chaque itération :

1- l’utilisateur saisit une adresse IPv4

2- la fonction saisie_adresse() garantit qu’elle est valide

3- l’adresse est écrite dans le fichier, une par ligne

Enfin elle ferme le fichier

Déclaration des objets

Objet Type / Nature
f fichier
i entier
ip chaîne

 

La fonction conversion_binaire

Cette fonction a pour rôle de transformer un nombre entier décimal en sa représentation binaire sur 8 bits (un octet).

Elle prend en entrée un nombre entier décimal.

Elle calcule sa forme binaire en effectuant des divisions successives par 2.

Elle ajoute des zéros à gauche si nécessaire afin d’obtenir exactement 8 bits.

Elle retourne le résultat sous forme de chaîne de caractères binaire.

Déclaration des objets

Objet Type / Nature
binaire chaîne

 

La fonction classe_ip

Cette fonction classe_ip(ip) a pour rôle de déterminer la classe d’une adresse IPv4 (A, B, C, D ou E) à partir de son premier octet.

Elle extrait le premier nombre de l’adresse IPv4.

Elle convertit ce nombre en binaire sur 8 bits.

Elle analyse les bits de poids fort (les premiers bits à gauche).

Selon le motif binaire obtenu, elle identifie la classe de l’adresse IPv4.

Déclaration des objets

Objet Type / Nature
w chaîne
binaire chaîne

 

La fonction onversion_hexadecimal

Cette fonction a pour rôle de convertir un nombre entier décimal en sa représentation hexadécimale.

Elle reçoit en entrée un nombre entier en base 10.

Elle effectue des divisions successives par 16.

À chaque étape, elle récupère le reste et l’associe au chiffre hexadécimal correspondant (de 0 à 9 puis de A à F).

Elle construit progressivement le nombre en base 16.

Elle retourne le résultat sous forme de chaîne de caractères hexadécimale.

Déclaration des objets

Objet Type / Nature
hexa chaîne
reste chaîne
chiffres chaîne

 

La fonction conversion_ipv6

Cette fonction a pour rôle de convertir une adresse IPv4 en une forme IPv6 simplifiée, en utilisant une représentation hexadécimale des octets.

Elle prend en entrée une adresse IPv4 sous la forme a.b.c.d.

Elle sépare l’adresse en quatre octets décimaux.

Chaque octet est converti en hexadécimal.

Les octets sont regroupés deux par deux pour former deux blocs hexadécimaux.

Les deux blocs sont séparés par le caractère :.

Déclaration des objets

Objet Type / Nature
w chaîne
x chaîne
y chaîne
z chaîne

 

La procédure remplir_fichier_ipv6

Ce programme définit la procédure remplir_fichier_ipv4(n) dont le rôle est de créer (ou écraser) le fichier texte F_IP4.txt et d’y enregistrer n adresses IPv4 valides, saisies par l’utilisateur.

Cette procédure ouvre le fichier en mode écriture, saisit et écrit n adresses IPv4 valides.

Pour chaque itération :

1- l’utilisateur saisit une adresse IPv4

2- la fonction saisie_adresse() garantit qu’elle est valide

3- l’adresse est écrite dans le fichier, une par ligne

Enfin elle ferme le fichier

Déclaration des objets

Objet Type / Nature
enregistrement Enregistrement
f_ipv4 fichier
f_ipv6 fichier
liste_ipv4 entier
ipv4 entier

 

Solution en Python

Exécution du programme

0 commentaire

laisser un commentaire

Veuillez noter s'il vous plaît*

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Passion de robotique

Atelier robotique

Construction des robots

Bras robotique

Maison intelligente

But de ce site web

La robotique éducative joue un rôle important dans l'éducation des enfants et des jeunes en les aidant à acquérir des compétences en science et technologie.
Dans ce cadre notre site web représente une excellente ressource pour les parents, les enseignants et les enfants qui souhaitent découvrir la robotique.

Coordonnées

Zaouiet Kontech-Jemmel-Monastir-Tunisie

+216 92 886 231

medaliprof@gmail.com

Photos des articles

Site robotique réalisé par Mohamed Ali Haj Salah - Prof Info