Exercice 3 - Réseaux : adressage IP et sous-résea… · Bac Numérique et Sciences Informatiques Amérique du Nord 2024 (jour 2)

Thème : Réseaux : adressage IP et sous-réseaux · Tiré du sujet Jour 2 (2024)

Énoncé

Cet exercice porte sur la programmation objet, les structures de données, les réseaux et l'architecture matérielle.

On considère un réseau local constitué des trois machines de Alice, Bob et Charlie dont les adresses IP sont les suivantes:

la machine d'Alice a pour adresse 192.168.1.1;

la machine de Bob a pour adresse 192.168.1.2.

On rappelle que l'adresse 192.168.1.255 est l'adresse de diffusion qui sert à communiquer avec toutes les machines du réseau local et le masque de ce réseau local est 255.255.255.0. Cette adresse de diffusion est réservée et ne peut être attribuée à une machine.

Partie A

Ce réseau est utilisé pour effectuer des transactions financières en monnaie numérique nsicoin entre les trois utilisateurs. Pour cela, on crée la classe Transaction ci-dessous:

class Transaction:

def __init__(self, expediteur, destinataire, montant):

self.expediteur = expediteur

self.destinataire = destinataire

self.montant = montant Pour garder une trace de toutes les transactions effectuées, on utilise une liste chaînée de blocs (ou blockchain) dont le code Python est fourni ci-dessous. Toutes les dix minutes un nouveau bloc contenant les nouvelles transactions est créé et ajouté à la blockchain.

class Bloc:

def __init__(self, liste_transactions, bloc_precedent):

self.liste_transactions = liste_transactions

self.bloc_precedent = bloc_precedent # de type Bloc

class Blockchain:

def __init__(self):

self.tete = self.creer_bloc_0()

def creer_bloc_0(self):

"""

Crée le premier bloc qui distribue 100 nsicoin à tous les utilisateurs

(un pseudo-utilisateur Genesis est utilisé comme expéditeur)

"""

liste_transactions = [

Transaction("Genesis", "Alice", 100),

Transaction("Genesis", "Bob", 100),

Transaction("Genesis", "Charlie", 100)

]

return Bloc(liste_transactions, None)

Partie B

Dans cette partie, on va améliorer la sécurité de la blockchain. Pour cela on enrichit la classe Bloc comme indiqué ci-dessous:

class Bloc:

def __init__(self, liste_transactions, bloc_precedent):

self.liste_transactions = liste_transactions

self.bloc_precedent = bloc_precedent

# Définition de trois nouveaux attributs

self.hash_bloc_precedent = self.donner_hash_precedent()

self.nonce = 0 # Fixé arbitrairement et temporairement à 0 avant le minage du bloc

self.hash = self.calculer_hash()

# Définition de trois nouvelles méthodes

def donner_hash_precedent(self):

if self.bloc_precedent is not None:

return self.bloc_precedent.hash

else:

return "0"

def calculer_hash(self):

"""calcule et renvoie le hash du bloc courant"""

# Le code python n'est pas étudié dans cet exercice

def minage_bloc(self):

"""modifie le nonce d'un bloc pour que son hash commence par '00'"""

# A compléter La fonction calculer_hash produit une chaîne de caractères appelée hash qui possède les propriétés suivantes:

Le hash d'un bloc dépend de toutes les données contenues dans le bloc et uniquement de ces données;

Le calcul du hash d'un bloc est rapide et facile à calculer par une machine;

La moindre modification dans le bloc produit un hash complètement différent;

Il est impossible de déduire le bloc à partir de son hash.

Si deux blocs ont le même hash, c'est qu'ils sont parfaitement identiques.

1.

Donner une adresse IP possible pour la machine de Charlie afin qu'elle puisse communiquer avec celles d'Alice et Bob dans le réseau local. Justifier votre réponse en donnant toutes les conditions à respecter dans le choix de cette adresse IP.

8.

Lorsqu'un utilisateur ajoute un nouveau bloc à la Blockchain, il l'envoie aux autres membres. Ainsi chaque utilisateur dispose sur sa propre machine d'une copie identique de la Blockchain. Donner le nom et la valeur de l'adresse IP à utiliser pour effectuer cet envoi.

Énoncé: Exercice 3 - Réseaux : adressage IP et sous-résea… · Bac Numérique et Sciences Informatiques Amérique du Nord 2024 (jour 2)

Corrigé

Corrigé proposé par AprenAI (non officiel)

1. Donner une adresse IP possible pour la machine de Charlie

Réponse : 192.168.1.3

1. Justifier votre réponse en donnant toutes les conditions à respecter dans le choix de cette adresse IP

Réponse : L'adresse doit appartenir au même sous-réseau que celui d'Alice et Bob (adresse réseau 192.168.1.0/24 avec le masque 255.255.255.0), donc commencer par 192.168.1. Le dernier octet doit être compris entre 1 et 254, mais sans être 192.168.1.1 (déjà attribuée à Alice), ni 192.168.1.2 (déjà attribuée à Bob). Enfin, l'adresse réseau (192.168.1.0) et l'adresse de diffusion (192.168.1.255) sont réservées et ne peuvent pas être attribuées à une machine.

Les réponses des 2 questions restantes et l’explication pas à pas sont réservées aux membres Premium. Premium

Résous-le ici : correction automatique, indices et corrigé détaillé.

‹ Exercice 2 - Question 7 · Amérique du Nord 2026 (jour 1)

Plus d’exercices de Réseaux : adressage IP et sous-réseaux