🔎 Voir les exercices similaires ↓
Métropole – Bac NSI 2026 – Jour 2 Énoncé de l'exercice 1
Cet exercice porte sur les réseaux et la programmation orientée objet.
Une entreprise dispose d’une infrastructure réseau répartie sur plusieurs sites interconnectés à l’aide de routeurs. La figure ci-dessous représente le schéma de ce réseau, où les routeurs sont notés de R1 à R5.

Afin d’assurer la communication entre les différents postes et sous-réseaux, des protocoles de routage tels que RIP ou OSPF sont utilisés.
Le protocole RIP minimise le nombre de sauts entre deux routeurs ; un « saut » correspond au transfert des données d’un routeur à un autre.
Le protocole OSPF (Open Shortest Path First) minimise la somme des coûts des liaisons entre les routeurs empruntées par le paquet ; le coût entre deux routeurs voisins dépend du débit de la liaison entre ces routeurs selon la formule coût = 108 / débit, où le débit est exprimé en bit/s et le coût est sans unité.
Le bon fonctionnement de ce réseau repose sur une configuration correcte des adresses IP, des masques de sous-réseau, des routes, ainsi qu’une gestion rigoureuse des ressources (comme la mémoire et les tables de routage).
Le réseau utilise des adresses IPv4, c’est-à-dire des adresses de la forme IP/S où :
IP est une suite de 4 entiers entre 0 et 255 séparés par un point ;
S est un entier entre 1 et 32.
L’adresse IP est codée en machine sur 4 octets, soit 32 bits. L’entier S indique que les S premiers bits de IP correspondent à la partie fixe de l’adresse et les suivants à la partie propre à la machine.
Deux adresses IP sont réservées :
l’adresse du réseau local qui est constituée de la partie fixe de l’adresse complétée par des bits égaux à 0 ;
l’adresse de diffusion (broadcast) qui est constituée de la partie fixe de l’adresse complétée par des bits égaux à 1.
On considère le poste PC C01 du site C ayant pour adresse IPv4 : 172.16.2.1/16.
Déterminer l’adresse IP du réseau local dédié au site C.
Déterminer l’adresse IP de diffusion du réseau local dédié au site C.
Donner le nombre maximal de machines que l’on peut connecter sur le réseau local dédié au site C, y compris les machines déjà présentes.
Recopier et compléter la table de routage du routeur R1 obtenue avec le protocole RIP.
| Table de routage de R1 | ||
| Destination | Passe par | Nombre de sauts |
| R2 | ||
| R3 | ||
| R4 | ||
| R5 | ||
Déterminer le chemin que suit un paquet envoyé depuis PC A01 (site A, relié à R1) vers PC B01 (site B, relié à R2) en supposant qu’on utilise le protocole RIP.
Déterminer la nouvelle route qu’un paquet peut suivre de R1 à R2 si le routeur R3 tombe en panne, toujours en supposant qu’on utilise le protocole RIP.
Recopier et compléter le tableau suivant donnant le coût pour le protocole OSPF des liaisons réseau selon leur type de connexion.
| Type de connexion | Débit (bit/s) | Coût |
| Ethernet | 107 | |
| Fast Ethernet | 108 | |
| Fibre | 109 |
Le tableau ci-dessous indique le type de connexion pour chaque liaison du réseau.
| Liaison | Type de connexion |
| R1-R3 | Fibre |
| R1-R4 | Ethernet |
| R2-R3 | Ethernet |
| R5-R4 | Fast Ethernet |
| R3-R4 | Fast Ethernet |
| R5-R2 | Fast Ethernet |
Déterminer, en justifiant, le chemin choisi par le protocole OSPF entre R1 et R4.
On décide pour la suite de représenter en Python chaque routeur par une chaîne de caractères, par exemple 'R1', et de représenter les routes par des listes de routeurs, par exemple ['R1', 'R3', 'R2'].
Un code Python permettant de définir une liste de routes (chaque route étant une liste de routeurs) a été créé. Ce code est composé :
d’une liste vide appelée liste_routes qui permettra de contenir les routes ;
d’une constante MAX_ROUTES indiquant le nombre maximum de routes que peut contenir la liste liste_routes ;
d’une fonction ajouter_route qui ajoute la route donnée en paramètre à la liste liste_routes.
1 liste_routes = []
2 MAX_ROUTES = 5
3
4 def ajouter_route(route):
5 liste_routes.append(route)
Justifier que le code proposé ci-dessus ne permet pas de s’assurer que la contrainte d’un nombre maximal de routes contenues dans la liste est respectée.
On souhaite créer une classe Routage qui contient :
le constructeur __init__ qui permet d’initialiser un objet avec une capacité maximale donnée ;
une méthode ajouter qui ajoute une route uniquement si la capacité maximale n’est pas atteinte ; sinon, elle affiche un message d’erreur.
Un objet de type Routage doit contenir les attributs :
capacite : un nombre entier initialisé à 5 par défaut ;
routes : une liste pour stocker les routes.
1 class Routage:
2 def __init__(self, capacite = 5):
3 self.capacite = ...
4 self.routes = []
5
6 def ajouter(self, route):
7 if ...
8 ...
9 else:
10 ...
Recopier et compléter les lignes 3, 7, 8 et 10 du code ci-dessus pour respecter les contraintes de la classe.
Écrire une méthode afficher de la classe Routage qui affiche toutes les routes présentes dans la liste routes. Par exemple, si l’attribut routes de l’objet contient les routes ['R1', 'R3', 'R2'] et ['R1', 'R4', 'R5', 'R2'], l’affichage sera :
R1
R3
R2
---
R1
R4
R5
R2
---
Métropole – Bac NSI 2026 – Jour 2 Correction de l'exercice 1
Partie A – Adressage et routage
1. Adresse du réseau du site C
Le suffixe /16 conserve les 16 premiers bits, c’est-à-dire les deux premiers octets : l’adresse du réseau est 172.16.0.0.
2. Adresse de diffusion
On met à 1 les 16 bits de la partie machine : 172.16.255.255.
3. Nombre maximal de machines
16 bits pour les machines : 2¹⁶ = 65 536 adresses, moins les 2 adresses réservées : 65 534 machines.
4. Table de routage de R1 (RIP)
| Destination | Passe par | Nombre de sauts |
|---|---|---|
| R2 | R3 | 2 |
| R3 | R3 | 1 |
| R4 | R4 | 1 |
| R5 | R4 | 2 |
5. Chemin de PC A01 à PC B01 (RIP)
PC A01 → switch A → R1 → R3 → R2 → switch B → PC B01.
6. Panne de R3
R1 ne peut plus passer par R3 : la route devient R1 → R4 → R5 → R2 (3 sauts).
7. Coût OSPF des liaisons
| Type de connexion | Débit (bit/s) | Coût |
|---|---|---|
| Ethernet | 10⁷ | 10 |
| Fast Ethernet | 10⁸ | 1 |
| Fibre | 10⁹ | 0,1 |
8. Chemin OSPF de R1 à R4
Liaison directe R1 – R4 (Ethernet) : coût 10. Par R3 : R1 – R3 (fibre, 0,1) puis R3 – R4 (Fast Ethernet, 1) : coût 1,1.
OSPF choisit le chemin de coût minimal : R1 → R3 → R4.
Partie B – Programmation
9. La contrainte n’est pas vérifiée
ajouter_route ajoute la route sans jamais comparer la longueur de liste_routes à MAX_ROUTES : on peut appeler la fonction autant de fois qu’on veut, la liste dépassera 5 routes. MAX_ROUTES n’est utilisée nulle part.
10. Classe Routage (lignes 3, 7, 8 et 10)
class Routage:
def __init__(self, capacite = 5):
self.capacite = capacite # ligne 3
self.routes = []
def ajouter(self, route):
if len(self.routes) < self.capacite: # ligne 7
self.routes.append(route) # ligne 8
else:
print('Erreur : capacité maximale atteinte') # ligne 10
11. Méthode afficher
def afficher(self):
for route in self.routes:
for routeur in route:
print(routeur)
print('---')
Une erreur, un oubli ? Écrivez-moi : frederic.peuriere@lfcl.pt
🔎 Exercices sur des thèmes similaires
-
Amérique du Nord 2024 – jour 2 – exercice 3
POO, structures de données, réseaux, architecture matérielle — Difficulté : 🔥🔥🔥🔥🔥 -
Nouvelle Calédonie 2025 – jour 1 – exercice 1
graphes, réseaux, POO — Difficulté : 🔥🔥🔥🔥🔥 -
Polynésie 2025 – jour 1 – exercice 1
réseaux, algorithmique, POO — Difficulté : 🔥🔥🔥🔥🔥 -
Sujet Zéro 2023 – jour 2 – exercice 3
arbres binaires de recherche, POO — Difficulté : 🔥🔥🔥🔥🔥 -
Centres étrangers 2023 – jour 1 – exercice 2
réseaux, protocoles de routages — Difficulté : 🔥🔥🔥🔥🔥 -
Métropole 2023 – jour 1 – exercice 2
réseaux — Difficulté : 🔥🔥🔥🔥🔥