Exercice 2 Amérique du Nord – Bac NSI 2026 – Jour 1
mots clés: architecture matérielle (réseau), structures de données, POO
🔎 Voir les exercices similaires ↓
Amérique du Nord – Bac NSI 2026 – Jour 1 Énoncé de l'exercice 2
Cet exercice porte sur l’architecture matérielle (réseau), les structures de données et la programmation orientée objet.
Voici un schéma du réseau de l’entreprise Gamerzz, qui propose à ses clients :
une salle pour jouer à des jeux vidéos en ligne (Salle Gaming Online) ;
une autre pour jouer en réalité virtuelle (Salle Gaming VR) ;
un site pour réserver, organiser des évènements et gérer les classements des joueurs en réalité virtuelle.

On y a fait figurer les différents sous-réseaux qui la composent en donnant leur notation CIDR.
La notation a.b.c.d/n, appelée notation CIDR (Classless Inter Domain Routing), signifie que les n premiers bits à gauche de l’adresse IP représentent la partie « réseau », les bits à droite qui suivent représentent la partie « machine ». L’adresse IPv4 dont tous les bits de la partie « machine » sont à 0 est appelée « adresse du réseau ». L’adresse IPv4 dont tous les bits de la partie « machine » sont à 1 est appelée « adresse de diffusion », les autres adresses peuvent être attribuées à des machines telles que des routeurs, des serveurs ou des ordinateurs.
Donner le nombre d’adresses IP qui peuvent être attribuées à des machines dans le réseau « Administration », ainsi qu’une adresse possible pour le routeur E.
Des tentatives de téléchargements non autorisés sont détectées depuis l’IP 10.42.0.70.
Indiquer dans quel réseau se situe la machine correspondante.
Les réseaux qui interconnectent les routeurs sont en /30 ce qui permet d’attribuer une adresse à exactement deux machines, les deux autres adresses étant l’adresse de réseau et l’adresse de diffusion. On choisit, sur un tel réseau, d’attribuer les adresses IP des routeurs dans le même ordre que celui des lettres qui les désignent sur la figure 1.
Donner les adresses IP attribuées, selon ce principe, aux routeurs C et F dans le réseau 10.42.0.16/30, ainsi que les adresses IP attribuées aux routeurs C et D dans le réseau 10.42.0.12/30.
On choisit de configurer les routeurs suivant le protocole RIP. Le protocole RIP permet de minimiser le nombre de routeurs traversés par les paquets. Voici alors la table de routage du routeur B :
|
||
|---|---|---|
| Réseau | Passerelle | Nombre de sauts |
| DMZ | connecté | 0 |
| Gaming Online | 10.42.0.2 | 1 |
| Internet | 10.42.0.33 | 1 |
| Gaming VR | 10.42.0.2 | 2 |
| Administration | 10.42.0.10 | 1 |
| Application | 10.42.0.6 | 1 |
| SGBD | 10.42.0.6 | 2 |
Donner une table possible pour le routeur C, en suivant le protocole RIP.
On indique en figure 2 les débits des liaisons entre routeurs.

On précise que :
• le coût d’une liaison est donné par où 𝑑 est le débit de la liaison en bits par seconde;
• le protocole OSPF fait transiter les informations de routeur en routeur en minimisant le coût total de leur acheminement.
Donner, pour chaque débit présent en figure 2, le coût de la liaison.
Une information venue d’un client extérieur, par exemple depuis Internet, est acheminée vers le réseau « Application » pour être traitée. Donner un des ordres possibles des routeurs par lesquels cette information transite à partir du routeur A en suivant le protocole OSPF.
On s’intéresse désormais à la gestion des paquets TCP par un routeur.
Rappeler si les données d’un segment TCP sont contenues dans un paquet IP, ou bien si les données d’un paquet IP sont contenues dans un segment TCP.
Lorsqu’un routeur reçoit un paquet TCP, il le place dans une file d’attente avant de pouvoir le transmettre.
Expliquer pourquoi il est plus intéressant dans ce cas précis d’utiliser une file plutôt qu’une pile.
On modélise les files en Python à l’aide des fonctions suivantes :
cree_file : renvoie une file vide ;
est_vide : renvoie le booléen indiquant si la file f passée en paramètre est vide ;
enfile : prend en paramètres une file f et un élément x et ajoute x dans f ;
defile : prend en paramètre une file f non vide et supprime l’élément de f le plus anciennement ajouté et renvoie sa valeur.
On a par exemple :
>>> f = cree_file()
>>> est_vide(f)
True
>>> enfile(f, 0)
>>> enfile(f, 1)
>>> f
| 1 | 0 <- tête
>>> defile(f)
0
>>> f
| 1 <- tête
Il arrive qu’un routeur ne puisse pas transmettre l’ensemble des paquets qu’il reçoit, par exemple, si les émetteurs sont très actifs. Dans ce cas, le routeur va ignorer certains paquets.
L’une des démarches utilisées consiste à limiter la taille de la file. Si la file n’a pas atteint sa taille maximale, les paquets reçus sont enfilés. Par contre, si la taille maximale est atteinte, tous les nouveaux paquets reçus sont ignorés. Lorsqu’un paquet est transmis par le routeur, il est défilé.
Cette méthode est appelée drop tail en anglais. Un routeur suivant cet algorithme est donc paramétré avec une taille maximale de file t_max et il doit garder trace, à chaque instant, de la file f contenant les paquets à transmettre et de la taille t de celle-ci.
On considère la classe Routeur_DROP_TAIL dont on fournit ci-dessous une partie du code.
class Routeur_DROP_TAIL:
def __init__(..., ...):
self.f = ...
self.t_max = ...
self.t = ...
Recopier et compléter la méthode __init__.
La méthode recoit de la classe Routeur_DROP_TAIL prend en paramètre un paquet p. Cette méthode renvoie True si le paquet est accepté, False dans le cas contraire. On rappelle qu’un paquet est accepté si la taille de la file au moment de sa réception est strictement inférieure à la taille maximale. Dans ce cas le paquet est enfilé.
Recopier et compléter la méthode recoit proposée ci-dessous :

La démarche décrite ci-dessus a pour désavantage d’ignorer indifféremment tous les paquets lorsque la taille maximale de la file est atteinte. Elle peut entraîner un ralentissement général des transmissions car tous les émetteurs vont ralentir leur rythme d’envoi de paquets en même temps.
Pour palier ce problème, on se propose d’adopter la démarche suivante lors de la réception d’un paquet :
si la taille actuelle de la file est strictement inférieure à une taille minimale t_min, le paquet est accepté ;
si elle est supérieure ou égale à t_min mais strictement inférieure à une taille maximale t_max, le paquet est rejeté aléatoirement ;
si elle est supérieure ou égale à t_max, le paquet est rejeté.

On modélise cette démarche par un objet de la classe Routeur_ALEA possédant quatre attributs :
la file d’attente f manipulable par les fonctions décrites plus haut. Cette file est vide initialement ;
la taille minimale t_min (nombre entier positif) ;
la taille maximale t_max (nombre entier positif) ;
la taille actuelle de la file t (nombre entier positif, initialement nul).
La classe Routeur_ALEA possède aussi une méthode tirage_au_sort qui renvoie un booléen au hasard. Ainsi, l’expression self.tirage_au_sort() renverra aléatoirement True ou False.
La méthode recoit de la classe Routeur_ALEA prend en paramètre un paquet p. Cette méthode met en œuvre la démarche décrite ci-dessus et renvoie True si le paquet est accepté, False dans le cas contraire.
Recopier et compléter la méthode recoit proposée ci-dessous :

Amérique du Nord – Bac NSI 2026 – Jour 1 Correction de l'exercice 2
Question 1
Le réseau « Administration » est en /29 (10.42.0.80/29 sur le schéma).
Il reste donc : 32−29 = 3 bits pour les machines. Le nombre total d’adresses vaut : = 8
Parmi elles :
1 adresse réseau ;
1 adresse de diffusion.
Il reste donc :
8−2=6 adresses attribuables.
Une adresse possible pour le routeur E est par exemple 10.42.0.81 (toute adresse de 10.42.0.81 à 10.42.0.86 convient ; attention, 10.42.0.10 est l’adresse de E sur la liaison avec B, pas dans le réseau Administration).
Question 2
L’adresse IP :
10.42.0.70 appartient au réseau : Gaming Online
Question 3
Réseau : 10.42.0.16/30
Un réseau /30 contient :
1 adresse réseau ;
2 adresses machines ;
1 adresse de diffusion.
Les adresses sont donc :
| Type | Adresse |
|---|---|
| réseau | 10.42.0.16 |
| machine 1 | 10.42.0.17 |
| machine 2 | 10.42.0.18 |
| diffusion | 10.42.0.19 |
Comme C précède F :
C reçoit 10.42.0.17
F reçoit 10.42.0.18
Pour le réseau : 10.42.0.12/30 on obtient :
| Type | Adresse |
|---|---|
| réseau | 10.42.0.12 |
| machine 1 | 10.42.0.13 |
| machine 2 | 10.42.0.14 |
| diffusion | 10.42.0.15 |
Donc :
C reçoit 10.42.0.13
D reçoit 10.42.0.14
Question 4
Une table possible pour le routeur C :
| Réseau | Passerelle | Nombre de sauts |
|---|---|---|
| Gaming Online | connecté | 0 |
| DMZ | 10.42.0.1 | 1 |
| Internet | 10.42.0.1 | 2 |
| Gaming VR | 10.42.0.18 | 1 |
| Administration | 10.42.0.14 | 2 |
| Application | 10.42.0.14 | 1 |
| SGBD | 10.42.0.14 | 2 |
Question 5
Le coût d’une liaison vaut : coût = avec d le débit en bits/s.
Exemples :
| Débit | Coût |
|---|---|
| bits/s (10 Gb/s) | 1 |
| bits/s (1 Gb/s) | 10 |
| bits/s (100 Mb/s) | 100 |
Question 6
Un chemin possible est : A→B→C→D (ou A→B→E→D) : coût total 1 + 10 + 1 = 12, contre 1 + 100 = 101 pour le chemin direct A→B→D.
Question 7
Les données d’un segment TCP sont contenues dans un paquet IP.
Question 8
Une file est plus adaptée car le premier paquet arrivé doit être le premier transmis.
Une pile fonctionnerait selon le principe « dernier arrivé, premier sorti », ce qui modifierait l’ordre des paquets.
Question 9
class Routeur_DROP_TAIL:
def __init__(self, t_max): # t_max : capacité maximale
self.f = cree_file() # file d'attente vide au départ
self.t_max = t_max # taille maximale autorisée
self.t = 0 # taille actuelle : aucun paquet
Question 10
def recoit(self, p):
if self.t < self.t_max: # il reste de la place
enfile(self.f, p)
self.t = self.t + 1 # ne pas oublier la taille !
return True # paquet accepté
return False # file pleine : paquet ignoré
Question 11
def recoit(self, p):
if self.t < self.t_min: # file peu remplie : on accepte
enfile(self.f, p)
self.t = self.t + 1
return True
elif self.t_min <= self.t < self.t_max: # zone intermédiaire :
if self.tirage_au_sort(): # on accepte au hasard
enfile(self.f, p)
self.t = self.t + 1
return True
return False # tirage perdu ou t >= t_max : rejet
Une erreur, un oubli ? Écrivez-moi : frederic.peuriere@lfcl.pt
🔎 Exercices sur des thèmes similaires
-
Asie 2024 – jour 2 – exercice 2
programmation, POO, structures de données linéaires — Difficulté : 🔥🔥🔥🔥🔥 -
Amérique du Nord 2024 – jour 2 – exercice 3
POO, structures de données, réseaux, architecture matérielle — Difficulté : 🔥🔥🔥🔥🔥 -
Amérique du Nord 2024 – jour 1 – exercice 1
POO, structures de données (file), ordonnancement et interblocage — Difficulté : 🔥🔥🔥🔥🔥 -
Métropole 2025 – jour 1 – exercice 2
algorithmique, structures de données, processus — Difficulté : 🔥🔥🔥🔥🔥 -
Métropole 2023 – jour 1 – exercice 3
POO, algorithmique — Difficulté : 🔥🔥🔥🔥🔥 -
Polynésie 2023 – jour 1 – exercice 2
processus, POO — Difficulté : 🔥🔥🔥🔥🔥