Exercice 1 Polynésie – Bac NSI 2025 – Jour 1
mots clés: réseaux, algorithmique, POO
🔎 Voir les exercices similaires ↓
Polynésie – Bac NSI 2025 – Jour 1 Énoncé de l'exercice 1
Cet exercice porte sur les protocoles réseaux, l’algorithmique et la POO.
Partie A
Un cœur de réseau est constitué d’un maillage dans lequel les routeurs 𝑅1 à 𝑅6 sont reliés par des liaisons physiques dont le débit en Mbps (Méga-bits par seconde) est indiqué sur la figure suivante.

Derrière chaque routeur 𝑅1 à 𝑅5, un switch distribue un réseau local LAN1 à LAN5.
Les protocoles utilisés sont le protocole RIP et le protocole OSPF, qui minimisent respectivement le nombre de routeurs traversés et la somme des coûts des liaisons physiques empruntées.
Recopier et compléter la table de routage de 𝑅1 sachant que le protocole de routage RIP est utilisé.
La destination est le routeur à atteindre, le prochain saut est le premier routeur traversé et la distance est le nombre de routeurs traversés.
| Table de routage de 𝑅1 | ||
|---|---|---|
| destination | prochain saut | distance |
| 𝑅2 | 𝑅2 | 0 |
| 𝑅3 | 𝑅2 | 1 |
| 𝑅4 | ||
| 𝑅5 | ||
| 𝑅6 | ||
Un utilisateur du réseau local LAN1 interroge, via son navigateur web, un serveur d’Internet. Détailler, suivant le protocole RIP, la route suivie dans le maillage par la requête à destination de ce serveur.
Le coût d’une liaison est donné par la relation coût = , où 𝑑 est le débit de la liaison en Mbps.
Exemple : le coût de la liaison entre 𝑅1 et 𝑅2 est = 10.
Le tableau suivant donne le coût de chacune des liaisons physiques entre 𝑅1 et les autres routeurs du graphe qui lui sont connectés.
| Coût des liaisons depuis 𝑅1 | |||
|---|---|---|---|
| routeur | 𝑅2 | 𝑅4 | 𝑅5 |
| coût | 10 | 100 | 100 |
Recopier et compléter la table de routage de 𝑅1 sachant que le protocole de routage OSPF est utilisé.
La distance est la somme totale des coûts des liaisons physiques empruntées pour atteindre la destination.
| Table de routage de 𝑅1 | ||
|---|---|---|
| destination | prochain saut | distance |
| 𝑅2 | 𝑅2 | 10 |
| 𝑅3 | ||
| 𝑅4 | ||
| 𝑅5 | ||
| 𝑅6 | ||
Un utilisateur du réseau local LAN1 interroge, via son navigateur web, un serveur d’Internet.
Donner, selon le protocole OSPF, la route suivie dans le maillage par la requête à destination de ce serveur.
Le protocole de routage OSPF est toujours utilisé et le routeur 𝑅2 tombe en panne.
Donner la nouvelle route suivie dans le maillage par une requête partant du réseau LAN1 à destination d’Internet et en donner la nouvelle valeur de la distance.
Partie B
Le réseau LAN1 est supposé disposer d’un serveur DHCP (Dynamic Host Control Protocol) gérant l’attribution d’adresses IPv4. Il est rappelé, ici, qu’une adresse IPv4 est une séquence de 4 octets, généralement représentée par les 4 entiers correspondants en écriture décimale, séparés par des points (notation décimale pointée). Un réseau est caractérisé par des machines dont les adresses ont en commun les 𝑛 mêmes premiers bits. La notation CIDR du réseau a la forme “adresse réseau / 𝑛”. Appliqué à une adresse du réseau, le masque permet de calculer le préfixe réseau commun. Il est constitué de 4 octets consécutifs, dont (de gauche à droite) les 𝑛 premiers bits sont égaux à 1 et les suivants à 0. On obtient l’adresse du réseau en effectuant un ET logique, bit à bit, entre chaque octet composant l’adresse d’une machine et l’octet qui lui correspond dans le masque.
Exemple de ET :
l'entier 192 s'écrit : 1 1 0 0 0 0 0 0
l'entier 255 s'écrit : 1 1 1 1 1 1 1 1
------------------------------------------------------
ET logique, bit à bit : 1 1 0 0 0 0 0 0 (soit l'entier 192)
Recopier et compléter le tableau suivant correspondant à une machine d’un réseau d’adresse 192.168.1.100 et de masque 255.192.0.0. Ce tableau détermine l’adresse du réseau (en binaire puis en décimale pointée).
| Calcul d’une adresse de réseau | ||||
|---|---|---|---|---|
| octet 1 | octet 2 | octet 3 | octet 4 | |
| machine (binaire) | 11000000 | 10101000 | ||
| masque (binaire) | 11111111 | 11000000 | 00000000 | 00000000 |
| réseau (binaire) | 11000000 | |||
| réseau (déc. pointée) | 192 | |||
On obtient le complémentaire d’un octet en échangeant respectivement chacun des 0 et des 1 qui le composent, par un 1 ou un 0.
Par exemple, le complémentaire de 1 1 0 0 1 0 1 0 est 0 0 1 1 0 1 0 1.
Par un procédé analogue à celui de la question précédente, l’adresse de broadcast d’un réseau est obtenue en effectuant un OU logique bit à bit entre chaque octet composant l’adresse réseau et le complémentaire de l’octet correspondant dans l’écriture binaire du masque.
Exemple de OU :
12 s'écrit : 0 0 0 0 1 1 0 0
9 s'écrit : 0 0 0 0 1 0 0 1
---------------------------------------------
OU logique, bit à bit : 0 0 0 0 1 1 0 1 (soit l'entier 13)
Recopier et compléter le tableau ci-après pour déterminer l’adresse de broadcast du réseau suivant (en binaire puis en décimale pointée).
| Calcul d’une adresse de broadcast | ||||
|---|---|---|---|---|
| octet 1 | octet 2 | octet 3 | octet 4 | |
| réseau (binaire) | 11000000 | 10000000 | 00000000 | 00000000 |
| masque (binaire) | 11111111 | 11000000 | 00000000 | 00000000 |
| complément du masque (binaire) | ||||
| broadcast (binaire) | ||||
| broadcast (déc. pointée) | ||||
Une machine du réseau LAN1 a reçu du serveur DHCP l’adresse 172.16.1.100, avec le masque 255.255.0.0.
Sa passerelle par défaut a pour adresse 172.16.255.254.
En déduire les informations suivantes :
l’adresse du réseau LAN1 (en décimale pointée) ;
l’adresse de broadcast (en décimale pointée) ;
le nombre total d’adresses pouvant être distribuées par le serveur, en ne tenant pas compte des éventuelles restrictions possiblement posées par l’administrateur du réseau.
On souhaite, désormais, simuler en Python le fonctionnement du réseau LAN1.
On donne, ci-après, les documentations des méthodes split et join.
Documentation de la méthode split de la classe str : split(self, séparateur). Elle renvoie la liste des sous-chaînes de caractères délimitées par le séparateur dans l’instance courante de chaîne de caractères. Exemple :
>>> 'ab-pq-rs'.split('-')
['ab', 'pq', 'rs']
Documentation de la méthode join de l’objet str : join(self, iterable). Elle fusionne les chaînes de caractères contenues dans iterable en les liant par la sous-chaîne depuis laquelle cette méthode est appelée. Exemple :
>>> '.'.join(['ab', 'pq', 'rs'])
'ab.pq.rs'
On commence par créer la classe IPv4 suivante.
class IPv4(object):
def __init__(self, adresse:str):
"""
Constructeur de la classe de calcul sur une
adresse IPv4 dont la notation décimale pointée
est passée en paramètre.
"""
self.adresse = adresse
def octets(self)->list[int]:
"""
Découpe l'adresse décimale pointée en la liste
des 4 entiers correspondants.
"""
return [int(i) for i in self.adresse.split(".")]
Pour mémoire, l’opérateur & entre deux entiers effectue le ET logique bit à bit de la représentation binaire de ces entiers et renvoie l’entier correspondant à la représentation binaire ainsi obtenue.
Exemple :
>>> 192 & 255
192
Recopier sur la copie et compléter les lignes 15 et 16 du code de la méthode masquer de la classe IPv4, donné ci-dessous. La méthode doit correspondre au docstring.
def masquer(self, masque: str)->str:
"""
Détermine le préfixe masqué de l'adresse,
le masque (décimal pointé) étant passé en
paramètre.
>>> add = IPv4('192.168.1.100')
>>> add.masquer('255.192.0.0')
'192.128.0.0'
"""
tmp = []
ip = self.octets()
crible = IPv4(masque).octets()
for i in range(4):
# Opération booléenne :
tmp.append(... & ...)
return ".".join(...)
Recopier sur la copie et compléter les lignes 19 et 20 du code de la méthode adresse_suivante de la classe IPv4, donné ci-dessous. La méthode doit correspondre au docstring.
def adresse_suivante(self, adresse_max:str)->str:
"""
Détermine l'adresse décimale pointée suivant
immédiatement l'adresse courante, sous réserve
d'existence d'une adresse disponible
>>> add = IPv4('192.168.1.100')
>>> add.adresse_suivante('192.168.1.254')
'192.168.1.101'
>>> add = IPv4('192.168.1.255')
>>> add.adresse_suivante('192.168.255.254')
'192.168.2.0'
"""
assert self.adresse < adresse_max
liste_courante = self.octets()
liste_suivante = list()
retenue = 1
for index in range(4):
somme = liste_courante[3 - index] + retenue
valeur, retenue = ..., ...
liste_suivante = ...
return '.'.join(liste_suivante)
Polynésie – Bac NSI 2025 – Jour 1 Correction de l'exercice 1
Partie A – Routage RIP et OSPF
1. Table de routage de R1 avec RIP
R1 est relié directement à R2, R4 et R5 (aucun routeur traversé). R6 n’est relié qu’à R5 : pour l’atteindre, on traverse un seul routeur, R5.
| destination | prochain saut | distance |
|---|---|---|
| R2 | R2 | 0 |
| R3 | R2 | 1 |
| R4 | R4 | 0 |
| R5 | R5 | 0 |
| R6 | R5 | 1 |
2. Route vers Internet avec RIP
LAN1 → R1 → R5 → R6 → Internet (un seul routeur traversé entre R1 et R6).
3. Table de routage de R1 avec OSPF
Avec coût = 10² / d : une liaison à 1 Mbps coûte 100, à 10 Mbps coûte 10 et à 100 Mbps coûte 1.
Depuis R1, le plus économique est de passer par R2 (coût 10), puis d’emprunter les liaisons à 100 Mbps (coût 1) : R2 – R3 – R4 – R5 – R6.
| destination | prochain saut | distance |
|---|---|---|
| R2 | R2 | 10 |
| R3 | R2 | 11 |
| R4 | R2 | 12 |
| R5 | R2 | 13 |
| R6 | R2 | 14 |
4. Route vers Internet avec OSPF
LAN1 → R1 → R2 → R3 → R4 → R5 → R6 → Internet, pour un coût de 10 + 1 + 1 + 1 + 1 = 14.
5. Panne de R2
Sans R2, R1 ne peut sortir que par R4 ou R5, avec une liaison à 1 Mbps (coût 100) :
par R5 : R1 – R5 – R6 coûte 100 + 1 = 101 ;
par R4 : R1 – R4 – R5 – R6 coûte 100 + 1 + 1 = 102.
Nouvelle route : LAN1 → R1 → R5 → R6 → Internet, distance 101.
▶ Animation : RIP ou OSPF, quelle route vers Internet ?
Choisissez le protocole et mettez éventuellement R2 en panne. La route de LAN1 vers Internet est tracée en couleur et la table de routage de R1 se met à jour. Les nombres sur les liaisons sont les coûts OSPF (10² / débit).
Partie B – Adressage IPv4
6. Adresse du réseau (192.168.1.100, masque 255.192.0.0)
| octet 1 | octet 2 | octet 3 | octet 4 | |
|---|---|---|---|---|
| machine (binaire) | 11000000 | 10101000 | 00000001 | 01100100 |
| masque (binaire) | 11111111 | 11000000 | 00000000 | 00000000 |
| réseau (binaire) | 11000000 | 10000000 | 00000000 | 00000000 |
| réseau (déc. pointée) | 192 | 128 | 0 | 0 |
L’adresse du réseau est 192.128.0.0.
7. Adresse de broadcast
| octet 1 | octet 2 | octet 3 | octet 4 | |
|---|---|---|---|---|
| réseau (binaire) | 11000000 | 10000000 | 00000000 | 00000000 |
| masque (binaire) | 11111111 | 11000000 | 00000000 | 00000000 |
| complément du masque | 00000000 | 00111111 | 11111111 | 11111111 |
| broadcast (binaire) | 11000000 | 10111111 | 11111111 | 11111111 |
| broadcast (déc. pointée) | 192 | 191 | 255 | 255 |
L’adresse de broadcast est 192.191.255.255.
8. Réseau LAN1
Le masque 255.255.0.0 conserve les deux premiers octets :
adresse du réseau : 172.16.0.0 ;
adresse de broadcast : 172.16.255.255 ;
il reste 16 bits pour les machines, soit 2¹⁶ = 65 536 adresses. On retire l’adresse du réseau et celle de broadcast, qui ne peuvent pas être attribuées : le serveur peut distribuer 65 534 adresses.
Partie B (suite) – La classe IPv4
9. Méthode masquer (lignes 15 et 16)
for i in range(4):
# Opération booléenne :
tmp.append(ip[i] & crible[i]) # ligne 15
return ".".join([str(x) for x in tmp]) # ligne 16
10. Méthode adresse_suivante (lignes 19 et 20)
for index in range(4):
somme = liste_courante[3 - index] + retenue
valeur, retenue = somme % 256, somme // 256 # ligne 19
liste_suivante = [str(valeur)] + liste_suivante # ligne 20
return '.'.join(liste_suivante)
Une erreur, un oubli ? Écrivez-moi : frederic.peuriere@lfcl.pt
🔎 Exercices sur des thèmes similaires
-
Asie 2024 – jour 1 – exercice 1
programmation, POO, algorithmique — Difficulté : 🔥🔥🔥🔥🔥 -
Métropole 2023 – jour 1 – exercice 3
POO, algorithmique — Difficulté : 🔥🔥🔥🔥🔥 -
Polynésie 2023 – jour 1 – exercice 3
algorithmique, POO, méthode diviser-pour-régner — Difficulté : 🔥🔥🔥🔥🔥 -
Amérique du Nord 2024 – jour 2 – exercice 3
POO, structures de données, réseaux, architecture matérielle — Difficulté : 🔥🔥🔥🔥🔥 -
Polynésie 2025 – jour 2 – exercice 1
POO, algorithmique , programmation — Difficulté : 🔥🔥🔥🔥🔥 -
Nouvelle Calédonie 2025 – jour 1 – exercice 1
graphes, réseaux, POO — Difficulté : 🔥🔥🔥🔥🔥