Corrigé NSI Métropole 2026 – Jour 1
Bac 2026 • NSI • Métropole Réunion Mayotte • Jour 1

Corrigé NSI Métropole 2026 – Jour 1

Ce corrigé reprend l’intégralité du sujet de spécialité NSI Métropole, Réunion et Mayotte 2026 jour 1. Les trois exercices sont expliqués pas à pas : réseaux et routage, jeu Recto-Verso, graphes, récursivité, arbres de débat, programmation objet et requêtes SQL.

Adressage CIDR RIP et OSPF Chiffrement Graphes Récursivité Arbres SQL
📚Tous les sujets NSIAnnales et corrigés 📝Fiches NSIProchainement 🔎Lexique NSIProchainement 🏠AccueilSujets-corriges-bac.fr

Résumé du sujet et notions évaluées

Le sujet est très équilibré : il commence par un exercice concret de réseau, poursuit avec une modélisation de jeu par bits et graphe, puis termine par une plateforme de débat modélisée avec des arbres et une base relationnelle. Il vérifie donc à la fois des connaissances de cours, des calculs, de la lecture de schémas, de l’algorithmique et de la programmation Python.

Exercice 1Adresse IP, masque, passerelle, sous-réseau, traceroute, RIP, OSPF, HTTPS et chiffrement.
Exercice 2Configurations binaires, opération XOR, dictionnaire de voisins, graphe, parcours en profondeur et largeur.
Exercice 3Arbre de débat, classe Python, attributs, méthodes récursives, SGBD et requêtes SQL.
MéthodeRédiger les justifications : expliquer un choix de structure, commenter le code et interpréter les requêtes.

Analyse du sujet : ce qui est vraiment attendu

Le correcteur attend des réponses précises, mais aussi des explications. En NSI, une réponse de code sans justification peut être insuffisante si la question demande de “justifier”, “expliquer” ou “interpréter”. Il faut donc penser à écrire une phrase qui relie le résultat au contexte.

Les difficultés principales sont les suivantes : ne pas confondre adresse de réseau, adresse utilisable et passerelle ; comprendre que le XOR retourne un jeton lorsqu’on l’applique avec 1 ; comparer le coût mémoire d’un dictionnaire et d’une matrice d’adjacence ; savoir qu’un parcours en largeur donne un plus court chemin en nombre d’arêtes ; et maintenir l’intégrité référentielle dans les requêtes SQL de suppression.

Conseil de copie : quand une question porte sur du code Python, écris un code simple, lisible, puis ajoute une courte phrase expliquant ce qu’il fait. C’est souvent ce qui fait la différence entre une réponse partielle et une réponse pleinement validée.

Exercice 1 – Réseaux, routage et sécurisation des communications

L’exercice porte sur un réseau de lycée composé de plusieurs sites, chacun associé à un sous-réseau. Il faut d’abord vérifier une configuration IP, puis analyser un routage dynamique, avant de conclure sur la sécurisation des échanges.

1. Conversion en binaire de l’adresse IP et du masque

On convertit chaque octet séparément sur 8 bits.

ÉlémentConversion
Adresse IP 172.16.32.1510101100.00010000.00100000.00001111
Masque 255.255.240.011111111.11111111.11110000.00000000
À retenir : 240 vaut 11110000 en binaire, ce qui correspond bien à un masque /20.

2. Nombre d’hôtes et adresses utilisables du site3

Le site3 est dans le réseau 172.16.32.0/20. Un préfixe /20 laisse 12 bits pour la partie machine, car 32 – 20 = 12.

Nombre total d’adresses : 212 = 4096. On retire l’adresse réseau et l’adresse de diffusion : 4094 hôtes utilisables.

Réponse : première adresse utilisable : 172.16.32.1. Dernière adresse utilisable : 172.16.47.254.

3. Paramètre mal configuré

L’hôte peut communiquer avec le site3, mais pas avec Internet. Le test vers 172.16.47.254 réussit : cette adresse correspond à la bonne passerelle du réseau site3, puisqu’elle est la dernière adresse utilisable du sous-réseau.

Dans le fichier, la passerelle indiquée est pourtant 172.16.48.254, qui appartient au sous-réseau suivant, celui du site4.

Correction : remplacer gateway 172.16.48.254 par gateway 172.16.47.254.

4. Adresses du lien R2-R4 en 192.168.0.8/30

Un réseau /30 laisse 2 bits pour les machines, donc 4 adresses au total : adresse réseau, deux adresses utilisables et adresse de diffusion.

Pour 192.168.0.8/30 : adresse réseau = 192.168.0.8, diffusion = 192.168.0.11.

Réponse possible : R2 : 192.168.0.9 et R4 : 192.168.0.10. L’inverse est aussi acceptable.

5. Chemin observé avec traceroute et coût RIP

La commande indique les routeurs traversés depuis le site3 : R2, puis R3, puis R4, puis R5, avant la sortie vers Internet.

Réponse : chemin de R2 à R5 : R2 → R3 → R4 → R5. Avec RIP, le coût est le nombre de liens : 3.

6. Dysfonctionnement du réseau

Le réseau contient un lien direct entre R2 et R4. Un chemin plus court existe donc : R2 → R4 → R5, de coût RIP 2. Or le chemin observé a un coût 3.

Conclusion : il y a un dysfonctionnement car RIP ne choisit pas le chemin avec le plus petit nombre de sauts. Une cause possible est une table de routage non mise à jour, une panne ou une mauvaise configuration du lien R2-R4, ou encore une annonce RIP absente.

7. Débit et coût d’une liaison

Le débit mesure la quantité de données transmises par seconde. On cherche donc à le maximiser. Le coût, dans OSPF, représente une pénalité de passage par une liaison : on cherche donc à le minimiser.

Réponse : débit à maximiser ; coût à minimiser.

8. Chemin OSPF depuis le site4 vers Internet

Les coûts sont calculés avec la formule coût = 108 / débit.

LiaisonDébitCoût
Ethernet10 Mbits/s10
Fast Ethernet100 Mbits/s1
Fibre optique4 Gbits/s0,025

Depuis le site4, le routeur d’entrée est R2. Le meilleur chemin vers R5 est :

R2 → R1 → R3 → R4 → R5

Coût total : 1 + 0,025 + 0,025 + 0,025 = 1,075.

Conclusion : OSPF choisit le chemin R2 → R1 → R3 → R4 → R5, car son coût total est minimal.

9. Chiffrement symétrique ou asymétrique ?

Alice et Bob doivent préférer le chiffrement asymétrique pour initialiser un échange sécurisé. En effet, avec un chiffrement symétrique, les deux interlocuteurs doivent partager une même clé secrète. Si cette clé est échangée sur un réseau déjà compromis, le pirate peut l’intercepter.

Réponse : le chiffrement asymétrique est préférable au départ, car chacun peut publier une clé publique tout en gardant sa clé privée secrète. Le pirate peut voir la clé publique, mais il ne peut pas déchiffrer les messages sans la clé privée.

10. Pourquoi HTTPS est plus sécurisé que HTTP

HTTP transmet les données en clair. Un pirate placé sur le réseau peut donc lire ou modifier les informations échangées. HTTPS ajoute une couche de sécurité grâce au protocole TLS : les échanges sont chiffrés, l’intégrité est vérifiée et le serveur peut être authentifié par certificat.

Conclusion : HTTPS protège la confidentialité, l’intégrité et l’authentification des échanges, alors que HTTP ne protège pas efficacement une conversation privée.

Exercice 2 – Jeu Recto-Verso, binaire, graphes et récursivité

Le jeu est modélisé par 9 bits : chaque jeton peut être Recto, donc 1, ou Verso, donc 0. Les coups sont représentés par des listes de bits et appliqués avec l’opérateur XOR.

1. Nombre total de configurations

Il y a 9 jetons. Chaque jeton possède 2 états possibles : Recto ou Verso. Les choix sont indépendants.

Réponse : le nombre total de configurations est 29 = 512.

2. Séquence ligne 1, ligne 2, colonne 2

La figure 1 se lit, ligne par ligne : [0, 0, 1, 0, 0, 1, 1, 1, 0]. Après les trois coups :

  • ligne 1 : [1, 1, 0, 0, 0, 1, 1, 1, 0] ;
  • ligne 2 : [1, 1, 0, 1, 1, 0, 1, 1, 0] ;
  • colonne 2 : [1, 0, 0, 1, 0, 0, 1, 0, 0].
Conclusion : la séquence ne mène pas à la victoire, car la configuration finale n’est pas [1,1,1,1,1,1,1,1,1].

3. Entier représentant la configuration de la figure 1

La configuration de la figure 1 est 001001110 en binaire.

Calcul : 0×28 + 0×27 + 1×26 + 0×25 + 0×24 + 1×23 + 1×22 + 1×21 + 0×20.

Donc : 64 + 8 + 4 + 2 = 78.

Réponse : l’entier représentant la configuration de la figure 1 est 78.

4. Fonction representant

On lit les bits de gauche à droite. À chaque nouveau bit, on décale l’entier déjà construit d’un rang binaire, puis on ajoute le bit.

def representant(bits):
    total = 0
    for bit in bits:
        total = 2 * total + bit
    return total

5. Fonction xor_etendu

On applique le XOR élément par élément sur deux listes de même longueur.

def xor_etendu(l_x, l_y):
    resultat = []
    for i in range(len(l_x)):
        resultat.append(xor(l_x[i], l_y[i]))
    return resultat
Remarque : on pourrait aussi écrire cette fonction avec une compréhension de liste, mais la version ci-dessus est très lisible en contexte d’épreuve.

6. Fonction configurations_suivantes

On convertit la configuration entière en liste de bits, puis on applique chaque masque de coup possible. Chaque configuration obtenue est reconvertie en entier.

def configurations_suivantes(config):
    config_bin = binaire(config)
    voisins = []
    for coup in coups_possibles:
        masque = coups_possibles[coup]
        config_suivante = xor_etendu(config_bin, masque)
        voisins.append(representant(config_suivante))
    return voisins

7. Pourquoi l’arête réciproque existe

Si l’on passe de x à y en appliquant un coup, cela signifie que y = x ⊕ masque. Or appliquer deux fois le même XOR revient à annuler l’opération : un jeton retourné deux fois revient dans son état initial.

Conclusion : si x → y existe, alors y → x existe aussi, car le même coup permet de revenir de y vers x.

8. Dictionnaire ou matrice d’adjacence ?

Il y a 29 configurations, donc 512 sommets. Dans une matrice d’adjacence, il faudrait stocker 29 × 29 = 218 valeurs.

Avec un dictionnaire de successeurs, chaque configuration possède seulement 8 voisins, car il y a 8 coups possibles. On stocke donc environ 8 × 29 entiers pour les voisins, ou 9 × 29 si l’on compte aussi les clés du dictionnaire.

Conclusion : le dictionnaire est beaucoup plus économique en mémoire que la matrice d’adjacence.

9. Fonction parcours_profondeur

Un parcours en profondeur marque le sommet courant comme vu, puis explore récursivement ses voisins non encore visités.

def parcours_profondeur(graphe, configuration, vus):
    vus.append(configuration)
    for s in graphe[configuration]:
        if s not in vus:
            parcours_profondeur(graphe, s, vus)

10. Vérifier que la configuration 4 est perdante

La configuration gagnante est celle où tous les bits valent 1, soit 111111111 en binaire, c’est-à-dire 29 – 1 = 511.

vus = []
parcours_profondeur(graphe, 4, vus)

if 511 not in vus:
    print("La configuration 4 est perdante")
else:
    print("La configuration 4 est gagnante")
Interprétation : si 511 n’est pas dans la liste des configurations atteintes depuis 4, alors aucune suite de coups ne mène à la victoire.

11. Parcours le plus adapté pour obtenir un minimum de coups

Le graphe n’est pas pondéré : chaque arête correspond à un coup. Pour trouver un chemin avec un nombre minimal de coups, il faut explorer les sommets par distance croissante depuis le départ.

Réponse : le parcours en largeur est le plus approprié. Il explore d’abord les configurations accessibles en 1 coup, puis en 2 coups, puis en 3 coups, etc. Le premier chemin trouvé vers la victoire est donc minimal.

Exercice 3 – Arbres, programmation objet et bases de données

La plateforme de débats organise les contributions sous forme d’arbre : chaque affirmation peut recevoir plusieurs arguments pour ou contre. La seconde partie modélise ensuite les utilisateurs, affirmations et réactions dans une base de données relationnelle.

1. Nom du nœud de départ

Dans le vocabulaire des arbres, le nœud de départ, placé tout en haut de la structure, s’appelle la racine.

Réponse : le point de départ du débat est la racine de l’arbre.

2. L’arbre de débat est-il binaire ?

Un arbre binaire est un arbre dans lequel chaque nœud possède au maximum deux enfants. Ici, une affirmation peut recevoir plusieurs arguments directs : plusieurs pour et plusieurs contre.

Réponse : non, ce n’est pas forcément un arbre binaire, car un nœud peut avoir plus de deux enfants.

3. Attributs de la classe Affirmation

AttributTypeRôle
contenustrtexte de l’affirmation
sortestr« sujet », « pour », « contre » ou chaîne vide avant insertion
argumentslistliste d’objets Affirmation rattachés
nb_likesintnombre de likes
nb_dislikesintnombre de dislikes

4. Méthode soutenir

L’argument ne doit pas déjà appartenir à un autre arbre ou à une autre position. On vérifie donc que sa sorte est encore vide.

def soutenir(self, argument):
    assert argument.sorte == ""
    self.arguments.append(argument)
    argument.sorte = "pour"

5. Méthode nb_contre

Il faut compter seulement les arguments directement rattachés à l’affirmation courante et dont la sorte vaut « contre ».

def nb_contre(self):
    compteur = 0
    for arg in self.arguments:
        if arg.sorte == "contre":
            compteur = compteur + 1
    return compteur

6. Interprétation de la méthode mystere

La méthode commence par calculer le nombre d’arguments contre directement rattachés à l’affirmation courante. Puis elle parcourt récursivement tous les arguments descendants et conserve la plus grande valeur trouvée.

Réponse : la méthode mystere renvoie le nombre maximal d’arguments contre directement rattachés à une affirmation dans tout le sous-arbre étudié.

7. Méthode evaluation

On part du score propre de l’affirmation : likes – dislikes. Puis on ajoute l’évaluation des arguments pour et on retire l’évaluation des arguments contre.

def evaluation(self):
    total = self.nb_likes - self.nb_dislikes
    for arg in self.arguments:
        if arg.sorte == "pour":
            total = total + arg.evaluation()
        if arg.sorte == "contre":
            total = total - arg.evaluation()
    return total
Point important : la méthode est récursive, car l’évaluation d’un argument dépend elle-même de ses propres sous-arguments.

Partie B – Correction des questions SQL

8. Rôles d’un SGBD

Un SGBD sert à gérer une base de données : il sécurise l’accès, conserve les données et permet l’accès simultané de plusieurs utilisateurs.

Réponses correctes : a, c et d. Les propositions b et e ne sont pas des rôles propres du SGBD.

9. Autre clé primaire possible pour utilisateur

La table utilisateur utilise le pseudo comme clé primaire. L’attribut email pourrait aussi servir de clé primaire si l’on impose qu’une adresse e-mail ne puisse appartenir qu’à un seul utilisateur.

Réponse : email, car une adresse e-mail est en principe unique. Le nom et le prénom ne conviennent pas, car plusieurs personnes peuvent avoir les mêmes.

10. Nombre d’affirmations ayant au moins 50 likes

SELECT COUNT(*)
FROM affirmation
WHERE nb_likes >= 50;

11. Contenus des sujets créés par Pierre Durand

Il faut joindre affirmation et utilisateur, puis filtrer sur le prénom, le nom et le fait que l’affirmation soit un sujet.

SELECT affirmation.contenu, affirmation.nb_likes
FROM affirmation JOIN utilisateur
     ON affirmation.auteur = utilisateur.pseudo
WHERE utilisateur.prenom = 'Pierre'
  AND utilisateur.nom = 'Durand'
  AND affirmation.sorte = 'sujet';

12. Interprétation de la requête avec auto-jointure

La requête joint la table affirmation avec elle-même : une première fois pour l’affirmation attaquée, une seconde fois pour sa réponse.

Interprétation : elle renvoie les couples composés du contenu d’une affirmation et du contenu d’une réponse contre cette affirmation, lorsque cette réponse contre possède au moins deux fois plus de likes que l’affirmation initiale.

13. Ajouter un like de l’utilisateur i<3descartes

Il faut insérer une réaction, puis incrémenter le compteur de likes de l’affirmation concernée.

INSERT INTO reaction
VALUES (108, 'i<3descartes', 'like');

UPDATE affirmation
SET nb_likes = nb_likes + 1
WHERE id_aff = 108;

14. Pourquoi supprimer les réactions avant l’utilisateur ?

La table reaction contient une clé étrangère vers la table utilisateur. Si l’on supprimait l’utilisateur avant ses réactions, il resterait des réactions faisant référence à un utilisateur qui n’existe plus.

Conclusion : il faut respecter l’intégrité référentielle : supprimer ou modifier d’abord les données dépendantes, puis seulement ensuite l’utilisateur.

15. Requêtes pour le droit à l’effacement de i<3rgpd

La procédure demandée impose trois étapes : anonymiser les affirmations, supprimer les réactions, puis supprimer le compte utilisateur.

UPDATE affirmation
SET auteur = NULL
WHERE auteur = 'i<3rgpd';

DELETE FROM reaction
WHERE utilisateur = 'i<3rgpd';

DELETE FROM utilisateur
WHERE pseudo = 'i<3rgpd';

Méthode pour réussir ce type de sujet NSI

1. RéseauIdentifier le réseau, le masque, les adresses utilisables et la passerelle avant de répondre.
2. RoutageRIP minimise le nombre de sauts ; OSPF minimise une somme de coûts liés aux débits.
3. BinaireLire les bits dans le bon ordre : ici ligne par ligne, de haut en bas, puis de gauche à droite.
4. XORAvec 1, le bit change ; avec 0, il reste identique. C’est l’idée centrale du jeu Recto-Verso.
5. GraphesLe parcours en profondeur explore ; le parcours en largeur trouve un plus court chemin en nombre d’arêtes.
6. SQLToujours repérer les clés primaires, les clés étrangères et l’ordre logique des mises à jour.

Erreurs fréquentes à éviter

ErreurPourquoi elle coûte des pointsCorrection attendue
Confondre 172.16.47.254 et 172.16.48.254La première appartient au site3, la seconde au site4.La passerelle du site3 est 172.16.47.254.
Dire que RIP choisit le meilleur débitRIP ne regarde pas le débit, mais le nombre de sauts.OSPF utilise les coûts liés aux débits.
Oublier les clés dans la comparaison dictionnaire / matriceIl faut raisonner en ordre de grandeur mémoire.Matrice : 218, dictionnaire : environ 8×29 voisins.
Supprimer l’utilisateur avant ses réactionsCela viole l’intégrité référentielle.Anonymiser, supprimer les réactions, supprimer l’utilisateur.

Télécharger le sujet officiel de NSI

Le sujet officiel NSI Métropole, Réunion et Mayotte 2026 jour 1 est accessible ci-dessous. Le corrigé détaillé est intégré directement dans cette page.

DocumentAccès
Sujet officiel NSI Métropole Réunion Mayotte 2026 – Jour 1 SUJET PDF
Corrigé complet CORRIGÉ DANS LA PAGE

FAQ – Corrigé NSI Métropole 2026 jour 1

Le sujet est-il difficile ?

Il est complet, mais classique. Les difficultés viennent surtout du soin à apporter aux justifications : calculs d’adresses, choix du chemin OSPF, raisonnement sur les graphes et intégrité référentielle en SQL.

Quelle est la bonne passerelle du site3 ?

La bonne passerelle est 172.16.47.254, car c’est la dernière adresse IP utilisable du sous-réseau 172.16.32.0/20.

Quel est le coût OSPF du meilleur chemin depuis site4 ?

Depuis R2, le meilleur chemin vers R5 est R2 → R1 → R3 → R4 → R5, pour un coût total de 1,075.

Pourquoi le parcours en largeur est-il préférable pour le minimum de coups ?

Parce qu’il explore le graphe par distance croissante. Dans un graphe non pondéré, il garantit de trouver un chemin avec le nombre minimal d’arêtes.

Quels chapitres réviser après ce sujet ?

Il faut réviser les protocoles de routage, le chiffrement et HTTPS, les graphes, la récursivité, les arbres, la programmation objet et les requêtes SQL.