{
  "chapter": {
    "id": "reseaux-premiere",
    "level": "premiere",
    "theme": "Architectures",
    "title": "Réseaux : bases",
    "description": "Notions de base sur les réseaux informatiques :\nqu'est-ce qu'un réseau, modèle en couches du\nprotocole TCP/IP, adresses IP, principaux protocoles\n(HTTP, DNS), modèle client-serveur, distinction\nentre Internet et le Web. Préparation au chapitre\nsur le routage en classe de terminale.",
    "parties": [
      {
        "id": "bases",
        "title": "Réseau, équipements et protocoles"
      },
      {
        "id": "adressage",
        "title": "Adresses IP et masques"
      },
      {
        "id": "transport",
        "title": "Paquets, encapsulation et web"
      }
    ],
    "prerequisites": [],
    "references": []
  },
  "questions": [
    {
      "id": "q01",
      "difficulty": 1,
      "skills": [
        "definition"
      ],
      "title": "Réseau informatique",
      "partie": "bases",
      "statement": "Qu'est-ce qu'un **réseau informatique** ?",
      "options": [
        {
          "text": "Un type de mémoire interne aux ordinateurs",
          "correct": false,
          "feedback": "La mémoire et le réseau sont des\nnotions distinctes : la mémoire\nstocke des données dans une\nmachine, le réseau permet de les\néchanger entre plusieurs\nmachines.\n"
        },
        {
          "text": "Des machines connectées qui échangent des données",
          "correct": true,
          "feedback": "Cette définition couvre tous les\nréseaux, du plus modeste réseau\nlocal de quelques machines à\nInternet, qui interconnecte des\nmilliards d'appareils.\n"
        },
        {
          "text": "Une catégorie de logiciels malveillants",
          "correct": false,
          "feedback": "Aucun rapport. Un réseau désigne\nune infrastructure de\ncommunication, pas un programme\nnuisible.\n"
        },
        {
          "text": "Un type de logiciel installé sur chaque ordinateur",
          "correct": false,
          "feedback": "Un réseau n'est pas un logiciel,\nmais une infrastructure permettant\nà plusieurs machines de\ncommuniquer entre elles.\n"
        }
      ],
      "explanation": "Différentes échelles existent : le\nréseau local (LAN, *Local Area\nNetwork*), le réseau métropolitain\n(MAN, *Metropolitan Area Network*) et\nle réseau étendu (WAN, *Wide Area\nNetwork*), Internet étant l'exemple\nle plus vaste. Tous reposent sur les\nmêmes principes de couches et de\nprotocoles."
    },
    {
      "id": "q02",
      "difficulty": 1,
      "skills": [
        "internet-vs-web"
      ],
      "title": "Internet et Web",
      "partie": "bases",
      "statement": "Quelle est la différence entre\n**Internet** et le **Web** ?",
      "options": [
        {
          "text": "Internet est l'infrastructure, le Web un service qui s'y appuie",
          "correct": true,
          "feedback": "Internet est apparu avant le Web :\n$1969$ pour son ancêtre, contre\n$1991$ pour le Web. Beaucoup\nd'autres services circulent sur\nInternet, comme la messagerie\nélectronique (SMTP), le transfert\nde fichiers (FTP), les\nmessageries instantanées et les\njeux en ligne.\n"
        },
        {
          "text": "Ce sont deux mots pour la même chose",
          "correct": false,
          "feedback": "La distinction est importante.\nInternet et Web ne désignent pas\nle même objet, comme expliqué\ndans la bonne réponse.\n"
        },
        {
          "text": "Internet est limité à la France alors que le Web est international",
          "correct": false,
          "feedback": "Internet et le Web sont l'un\ncomme l'autre des réseaux\nmondiaux. Aucun rapport\ngéographique ne les\ndistingue.\n"
        },
        {
          "text": "Internet est plus récent que le Web",
          "correct": false,
          "feedback": "C'est l'inverse : Internet (sous\nla forme d'ARPANET) date de\n$1969$, alors que le Web a été\nconçu en $1991$.\n"
        }
      ],
      "explanation": "Vocabulaire : on parle de\n« surfer **sur le Web** » et de\n« communiquer **via Internet** ».\nVint Cerf et Bob Kahn sont parmi\nles pionniers d'Internet. Tim\nBerners-Lee est le concepteur du\nWeb."
    },
    {
      "id": "q03",
      "difficulty": 1,
      "skills": [
        "adresse-ip"
      ],
      "title": "Adresse IP",
      "partie": "adressage",
      "statement": "Qu'est-ce qu'une **adresse IP** ?",
      "options": [
        {
          "text": "Le nom d'une page Web",
          "correct": false,
          "feedback": "Le nom d'une page Web correspond\nplutôt à son URL. Une adresse\nIP est un identifiant numérique\nattribué à une machine, et non\nun nom de page.\n"
        },
        {
          "text": "Un mot de passe d'authentification sur le réseau",
          "correct": false,
          "feedback": "Une adresse IP est publique sur\nle réseau ; elle n'a rien à voir\navec un mot de passe, qui doit\nrester secret.\n"
        },
        {
          "text": "Un identifiant numérique de chaque machine",
          "correct": true,
          "feedback": "Une adresse IP identifie une\nmachine sur le réseau. En IPv4,\nelle est codée sur $32$ bits et\ns'écrit en notation décimale\npointée, par exemple\n`192.168.1.1`.\n"
        },
        {
          "text": "Une marque commerciale d'ordinateur",
          "correct": false,
          "feedback": "Une adresse IP n'a aucun rapport\navec une marque. C'est un\nidentifiant numérique.\n"
        }
      ],
      "explanation": "Le sigle IP signifie *Internet\nProtocol*. Chaque paquet porte\nl'adresse IP de la machine\ndestinataire : c'est elle qui\npermet de l'acheminer à travers\nles réseaux."
    },
    {
      "id": "q04",
      "difficulty": 1,
      "skills": [
        "client-serveur"
      ],
      "title": "Client et serveur",
      "partie": "bases",
      "statement": "Dans le modèle **client-serveur**,\nquel rôle joue chacun ?",
      "options": [
        {
          "text": "Le client demande un service ; le serveur le fournit",
          "correct": true,
          "feedback": "C'est le modèle adopté par la\nplupart des services Internet.\nPar exemple, un serveur Web\nreçoit des requêtes HTTP de la\npart de clients (les\nnavigateurs) et leur renvoie les\npages demandées.\n"
        },
        {
          "text": "Le serveur est plus petit que le client",
          "correct": false,
          "feedback": "C'est généralement l'inverse.\nUn serveur dispose souvent de\nplus de ressources qu'un\nclient, car il doit pouvoir\nrépondre simultanément à de\nnombreuses requêtes.\n"
        },
        {
          "text": "Les deux jouent le même rôle, sans distinction",
          "correct": false,
          "feedback": "Le modèle client-serveur est\nfondamentalement asymétrique.\nSi les rôles étaient\nidentiques, on parlerait\nplutôt de modèle pair-à-pair.\n"
        },
        {
          "text": "Le client fournit le service au serveur",
          "correct": false,
          "feedback": "C'est l'inverse. Dans ce modèle,\nle client demande un service et\nle serveur le fournit.\n"
        }
      ],
      "explanation": "Une alternative au modèle\nclient-serveur est le **pair-à-pair**,\ndans lequel chaque machine joue à\nla fois le rôle de client et celui\nde serveur. Le protocole BitTorrent\net certaines applications de\nvisioconférence reposent sur ce\nprincipe."
    },
    {
      "id": "q05",
      "difficulty": 1,
      "skills": [
        "protocole"
      ],
      "title": "Protocole réseau",
      "partie": "bases",
      "statement": "Qu'est-ce qu'un **protocole** réseau ?",
      "options": [
        {
          "text": "Un format de fichier propre aux logiciels de réseau",
          "correct": false,
          "feedback": "Un protocole n'est pas un\nfichier, c'est une convention\nde communication entre\nmachines.\n"
        },
        {
          "text": "Une marque commerciale déposée par un fabricant de routeurs",
          "correct": false,
          "feedback": "Un protocole n'est pas une\nmarque, mais un standard\ntechnique défini, le plus\nsouvent par un document de\nréférence partagé.\n"
        },
        {
          "text": "Un type de câble reliant physiquement deux machines",
          "correct": false,
          "feedback": "Les câbles relèvent du matériel.\nUn protocole, lui, est un\nensemble de règles abstraites\nque les machines suivent pour\ncommuniquer.\n"
        },
        {
          "text": "Des règles suivies par les machines pour communiquer",
          "correct": true,
          "feedback": "Les protocoles permettent à des\nmachines hétérogènes de se\ncomprendre. Quelques exemples\ncourants : HTTP, DNS, SMTP, TCP\net IP.\n"
        }
      ],
      "explanation": "Une analogie utile : un protocole\nest comparable à une langue\ncommune. Sans cette convention\npartagée, deux machines ne\npourraient pas s'échanger\nd'informations exploitables."
    },
    {
      "id": "q06",
      "difficulty": 1,
      "skills": [
        "http"
      ],
      "title": "Protocole HTTP",
      "partie": "transport",
      "statement": "Que signifie le sigle **HTTP** ?",
      "options": [
        {
          "text": "Home Tools Tech Page",
          "correct": false,
          "feedback": "Cette expression n'a aucun\nrapport avec le protocole\nHTTP.\n"
        },
        {
          "text": "Hyper Tag Text Pages",
          "correct": false,
          "feedback": "Cette expression n'est pas la\nsignification du sigle HTTP.\n"
        },
        {
          "text": "HyperText Transfer Protocol",
          "correct": true,
          "feedback": "C'est le protocole utilisé par\nle Web pour transférer des\npages, des images et d'autres\nressources entre un client et\nun serveur. Sa version\nsécurisée, HTTPS, chiffre les\néchanges.\n"
        },
        {
          "text": "High-Tech Transfer Protocol",
          "correct": false,
          "feedback": "Cette dénomination est\ninventée. Le sigle HTTP\nrenvoie à *HyperText Transfer\nProtocol*.\n"
        }
      ],
      "explanation": "Lorsqu'on tape `https://example.com`\ndans un navigateur, on demande au\nserveur la page d'accueil par\nl'intermédiaire du protocole HTTP.\nLe serveur répond généralement\npar le code $200$ (OK) accompagné\ndu contenu HTML de la page."
    },
    {
      "id": "q07",
      "difficulty": 1,
      "skills": [
        "url"
      ],
      "title": "Adresse URL",
      "partie": "transport",
      "statement": "Que signifie le sigle **URL** ?",
      "options": [
        {
          "text": "Universal Real Lookup",
          "correct": false,
          "feedback": "Cette dénomination est\ninventée et ne correspond pas\nau sigle URL.\n"
        },
        {
          "text": "Universal Recovery Link",
          "correct": false,
          "feedback": "Cette dénomination est\nfantaisiste. Le sigle URL\ncorrespond à autre chose.\n"
        },
        {
          "text": "Uniform Resource Locator",
          "correct": true,
          "feedback": "Une URL est l'adresse complète\nd'une ressource sur le Web,\npar exemple\n`https://site.com/page.html`.\nElle se compose d'un protocole,\nd'un domaine, d'un chemin et,\néventuellement, de paramètres.\n"
        },
        {
          "text": "User Reference Login System",
          "correct": false,
          "feedback": "Cette dénomination est elle\naussi inventée. Le sigle URL\nrenvoie à un autre concept,\nprécisé dans la bonne\nréponse.\n"
        }
      ],
      "explanation": "Structure générale d'une URL :\n`protocole://domaine:port/chemin?paramètres#ancre`.\nExemple typique :\n`https://example.com/page?id=42`."
    },
    {
      "id": "q08",
      "difficulty": 1,
      "skills": [
        "dns"
      ],
      "title": "Service DNS",
      "partie": "transport",
      "statement": "À quoi sert le **service DNS**\n(*Domain Name System*) ?",
      "options": [
        {
          "text": "À chiffrer les données échangées",
          "correct": false,
          "feedback": "Le chiffrement des\ncommunications relève d'autres\nprotocoles, comme HTTPS pour\nle Web. Le DNS ne chiffre pas\nles données.\n"
        },
        {
          "text": "À traduire les noms de domaine en adresses IP",
          "correct": true,
          "feedback": "On retient plus facilement des\nnoms que des nombres, mais les\nmachines ont besoin\nd'identifiants numériques. Le\nDNS joue le rôle d'annuaire\nd'Internet.\n"
        },
        {
          "text": "À envoyer des courriels",
          "correct": false,
          "feedback": "L'envoi de courriels est assuré\npar d'autres protocoles. Le DNS\njoue un rôle différent.\n"
        },
        {
          "text": "À filtrer les sites Web jugés indésirables",
          "correct": false,
          "feedback": "Le DNS peut être détourné pour\ndu filtrage, mais ce n'est pas\nson rôle premier. Sa fonction\nest avant tout la résolution\ndes noms en adresses.\n"
        }
      ],
      "explanation": "Quand on tape `example.com`, votre\nordinateur interroge un serveur\nDNS pour obtenir l'adresse IP\ncorrespondante. Une hiérarchie de\nserveurs assure ce service :\nserveurs racine, serveurs des\ndomaines de premier niveau,\nserveurs autoritaires."
    },
    {
      "id": "q09",
      "difficulty": 1,
      "skills": [
        "navigateur"
      ],
      "title": "Rôle du navigateur",
      "partie": "transport",
      "statement": "Que fait un **navigateur Web** comme\nFirefox ou Chrome ?",
      "options": [
        {
          "text": "Il télécharge l'intégralité du Web entier sur la machine",
          "correct": false,
          "feedback": "Cette interprétation est\nfantaisiste. Aucun navigateur\nne télécharge tout le Web : il\nne récupère que les pages\nconsultées par l'utilisateur.\n"
        },
        {
          "text": "Demander des ressources à un serveur, puis les afficher",
          "correct": true,
          "feedback": "Un navigateur envoie des\nrequêtes HTTP au serveur,\nanalyse le HTML et le CSS\nreçus, affiche la page et\nexécute le JavaScript qu'elle\ncontient.\n"
        },
        {
          "text": "Il stocke les fichiers personnels de l'utilisateur",
          "correct": false,
          "feedback": "Le stockage des fichiers\npersonnels est plutôt le rôle\nd'un système de fichiers ou\nd'un service en nuage. Ce\nn'est pas la fonction\nprincipale d'un navigateur.\n"
        },
        {
          "text": "Il imprime les pages Web",
          "correct": false,
          "feedback": "Un navigateur peut transmettre\nune demande d'impression, mais\nce n'est pas son rôle premier.\nSa fonction principale est\nl'affichage des pages Web.\n"
        }
      ],
      "explanation": "Quelques navigateurs très utilisés\ndans le monde : Chrome, Safari,\nFirefox, Edge. Tous jouent le même\nrôle de client du Web."
    },
    {
      "id": "q10",
      "difficulty": 1,
      "skills": [
        "exemple-pratique"
      ],
      "title": "Première étape de l'accès à un site",
      "partie": "transport",
      "statement": "Quand on tape `https://example.com`\ndans un navigateur, que se\npasse-t-il **en premier** ?",
      "options": [
        {
          "text": "Aucune action n'est entreprise",
          "correct": false,
          "feedback": "Le navigateur effectue au\ncontraire un enchaînement\nd'opérations dès que\nl'utilisateur valide\nl'adresse.\n"
        },
        {
          "text": "Le navigateur compresse la page demandée",
          "correct": false,
          "feedback": "La compression peut intervenir\nplus tard dans le processus,\nmais ce n'est jamais la\npremière étape. Le navigateur\ndoit d'abord savoir à quelle\nmachine s'adresser.\n"
        },
        {
          "text": "Le navigateur ouvre directement un fichier local",
          "correct": false,
          "feedback": "Pour une URL commençant par\n`https://`, le navigateur ne\nconsulte pas le système de\nfichiers local. Il s'adresse\nà un serveur distant.\n"
        },
        {
          "text": "Il interroge le DNS, puis envoie une requête HTTP",
          "correct": true,
          "feedback": "Les étapes typiques sont les\nsuivantes : résolution DNS,\npuis connexion TCP, puis\nchiffrement si on est en\nHTTPS, puis requête HTTP, puis\nréception et affichage de la\nréponse.\n"
        }
      ],
      "explanation": "On peut observer ce flux dans les\noutils de développement du\nnavigateur (touche F12, onglet\n« Réseau »). Chaque requête y\napparaît, avec son temps de\nréponse et sa taille."
    },
    {
      "id": "q11",
      "difficulty": 2,
      "skills": [
        "couches"
      ],
      "title": "Modèle en couches",
      "partie": "bases",
      "statement": "Pourquoi les protocoles réseau sont-ils\norganisés en **couches** ?",
      "options": [
        {
          "text": "Pour ralentir les communications",
          "correct": false,
          "feedback": "Le ralentissement éventuel est\nau mieux une conséquence\nindésirable, et certainement\npas un objectif recherché par\nla conception.\n"
        },
        {
          "text": "Pour séparer les responsabilités entre couches",
          "correct": true,
          "feedback": "Cette organisation rend les\nprotocoles modulaires,\nmaintenables et évolutifs.\nC'est cette conception qui a\npermis à Internet d'évoluer\npendant plusieurs décennies\nsans remettre en cause les\nfondations.\n"
        },
        {
          "text": "Pour des raisons commerciales",
          "correct": false,
          "feedback": "La motivation est purement\ntechnique, et non commerciale.\n"
        },
        {
          "text": "Pour une simple question décorative",
          "correct": false,
          "feedback": "L'organisation en couches répond\nà un besoin technique précis :\nséparer les responsabilités de\nchaque protocole.\n"
        }
      ],
      "explanation": "Une couche n'a besoin de connaître\nque la couche immédiatement\nau-dessous d'elle. C'est ce qui\npermet, par exemple, de\nremplacer Ethernet par Wi-Fi sans\nmodifier HTTP. C'est le principe\nd'**encapsulation** appliqué aux\nréseaux."
    },
    {
      "id": "q12",
      "difficulty": 2,
      "skills": [
        "tcp-ip"
      ],
      "title": "Suite TCP/IP",
      "partie": "bases",
      "statement": "Que désigne **TCP/IP** ?",
      "options": [
        {
          "text": "Une marque d'ordinateurs",
          "correct": false,
          "feedback": "TCP/IP n'est pas une marque,\nmais un ensemble de protocoles\nstandard.\n"
        },
        {
          "text": "La suite de protocoles d'Internet",
          "correct": true,
          "feedback": "C'est le standard de fait\ndepuis les années $1980$. Il\nse décline en quatre couches :\napplication, transport, réseau\n(où se situe IP) et accès au\nsupport physique.\n"
        },
        {
          "text": "Un type particulier de câble réseau",
          "correct": false,
          "feedback": "TCP/IP est un ensemble de\nprotocoles logiciels, et non\nun câble. Il fonctionne avec\nde nombreux types de\nsupports physiques.\n"
        },
        {
          "text": "Un système d'exploitation",
          "correct": false,
          "feedback": "TCP/IP n'est pas un système\nd'exploitation. C'est une\nsuite de protocoles que tous\nles systèmes d'exploitation\nmodernes savent gérer.\n"
        }
      ],
      "explanation": "Le protocole IP joue deux rôles :\nidentifier les machines et router\nles paquets. Le protocole TCP\ngarantit la livraison fiable des\ndonnées, à l'aide d'accusés de\nréception et de retransmissions.\nLes deux protocoles forment un\ncouple complémentaire."
    },
    {
      "id": "q13",
      "difficulty": 2,
      "skills": [
        "tcp",
        "paquets"
      ],
      "title": "Paquets arrivés dans le désordre",
      "partie": "transport",
      "statement": "Les paquets d'un fichier téléchargé empruntent des chemins\ndifférents sur Internet et arrivent dans l'ordre 2, 1, 4, 3.\nQu'est-ce qui permet à la machine destinataire de reconstituer\nle fichier correctement ?",
      "options": [
        {
          "text": "Les routeurs retiennent les paquets pour les livrer dans l'ordre d'envoi",
          "correct": false,
          "feedback": "Erreur : un routeur fait suivre chaque\npaquet dès son arrivée, sans attendre\nles autres ni connaître leur ordre. La\nremise en ordre n'a lieu qu'à l'arrivée.\n"
        },
        {
          "text": "TCP numérote les paquets, et le destinataire les remet dans l'ordre",
          "correct": true,
          "feedback": "Bonne réponse : à l'envoi, `TCP`\nnumérote chaque paquet ; à l'arrivée,\nil les range selon ces numéros avant de\ntransmettre les données à l'application,\nquel que soit le chemin suivi par chacun.\n"
        },
        {
          "text": "Le serveur DNS indique à la machine l'ordre d'arrivée prévu",
          "correct": false,
          "feedback": "Erreur : le `DNS` se contente de\ntraduire un nom de domaine en adresse\nIP, avant l'échange. Il n'intervient ni\ndans l'acheminement ni dans l'ordre des\npaquets.\n"
        },
        {
          "text": "Rien : le fichier est abîmé et doit être téléchargé à nouveau",
          "correct": false,
          "feedback": "Erreur : l'arrivée dans le désordre est\nun fonctionnement normal d'Internet, pas\nune panne. Les numéros portés par les\npaquets suffisent à reconstituer le\nfichier.\n"
        }
      ],
      "explanation": "Avec la commutation par paquets, chaque\npaquet voyage indépendamment et peut\nprendre sa propre route. C'est `TCP` qui\ngarantit à l'arrivée un fichier complet et\ndans l'ordre, grâce à la numérotation des\npaquets et aux accusés de réception."
    },
    {
      "id": "q14",
      "difficulty": 2,
      "skills": [
        "paquet"
      ],
      "title": "Commutation par paquets",
      "partie": "transport",
      "statement": "Comment les données sont-elles\ntransmises sur Internet ?",
      "options": [
        {
          "text": "Toutes les données sont envoyées exactement au même moment",
          "correct": false,
          "feedback": "Cette description est\nincorrecte. Les données\npartent par fragments\nsuccessifs, à mesure qu'elles\nsont prêtes.\n"
        },
        {
          "text": "Sous la forme d'un long flot continu",
          "correct": false,
          "feedback": "Internet utilise au contraire\nla **commutation par paquets**,\ndans laquelle les données sont\ndécoupées en petites unités.\n"
        },
        {
          "text": "Découpées en paquets routés indépendamment",
          "correct": true,
          "feedback": "C'est la **commutation par paquets**, idée centrale\nd'Internet, par opposition à\nla commutation de circuits\ndu téléphone analogique\nhistorique. Cette technique\npermet de partager\nefficacement le réseau entre\nde nombreux utilisateurs.\n"
        },
        {
          "text": "Au compte-goutte, un seul caractère à la fois",
          "correct": false,
          "feedback": "Internet n'envoie pas les\ndonnées caractère par\ncaractère, mais par blocs de\ntaille variable, appelés\npaquets.\n"
        }
      ],
      "explanation": "Avantages de cette approche : si\nun paquet se perd, on n'en perd\nqu'une faible portion ; les\npaquets peuvent emprunter des\nchemins différents, ce qui rend\nle réseau plus résilient. Cette\nidée est due aux travaux\nconjoints de Paul Baran et\nDonald Davies, dans les années\n$1960$."
    },
    {
      "id": "q15",
      "difficulty": 2,
      "skills": [
        "adresse-ipv4"
      ],
      "title": "Format d'une adresse IPv4",
      "partie": "adressage",
      "statement": "Lequel de ces formats correspond à\nune **adresse IPv4** valide ?",
      "options": [
        {
          "text": "`192.168.1.42`",
          "correct": true,
          "feedback": "Une adresse IPv4 est composée\nde quatre nombres compris\nentre $0$ et $255$ (chacun\ncodé sur un octet, soit huit\nbits), séparés par des\npoints. C'est ce qu'on appelle\nla notation décimale pointée.\n"
        },
        {
          "text": "`fe80::1`",
          "correct": false,
          "feedback": "Cette écriture contient des\nlettres et des deux-points, et\nnon quatre nombres séparés par\ndes points : ce n'est pas une\nadresse IPv4.\n"
        },
        {
          "text": "`192-168-1-42`",
          "correct": false,
          "feedback": "Le séparateur correct est le\npoint, et non le tiret.\n"
        },
        {
          "text": "`256.0.0.1`",
          "correct": false,
          "feedback": "La valeur $256$ est hors de\nl'intervalle autorisé : chaque\nnombre d'une adresse IPv4\ndoit être compris entre $0$\net $255$.\n"
        }
      ],
      "explanation": "Quelques plages spéciales :\n`127.x.x.x` désigne la machine\nlocale (boucle locale),\n`192.168.x.x` est réservé aux\nréseaux privés, et `8.8.8.8` est\nun serveur DNS public proposé\npar Google."
    },
    {
      "id": "q16",
      "difficulty": 2,
      "skills": [
        "routage",
        "paquets"
      ],
      "title": "Un routeur en panne pendant un transfert",
      "partie": "adressage",
      "statement": "Pendant qu'Élise télécharge une vidéo, l'un des routeurs situés\nsur le trajet de ses paquets tombe en panne. Si le réseau offre\nd'autres chemins, que se passe-t-il ?",
      "options": [
        {
          "text": "Les paquets suivants sont acheminés par un autre chemin",
          "correct": true,
          "feedback": "Bonne réponse : les routeurs voisins de\nla panne font passer les paquets suivants\npar une autre route, et les paquets\nperdus dans le routeur en panne sont\nrenvoyés grâce à `TCP`.\n"
        },
        {
          "text": "Le téléchargement s'arrête jusqu'à la réparation du routeur",
          "correct": false,
          "feedback": "Erreur : les paquets ne sont pas liés à\nun chemin fixé une fois pour toutes.\nChaque routeur choisit la suite du\ntrajet, et un autre chemin est trouvé\nsans attendre la réparation.\n"
        },
        {
          "text": "La vidéo arrive quand même, mais avec des morceaux manquants",
          "correct": false,
          "feedback": "Erreur : `TCP` fait renvoyer tout paquet\ndont la réception n'a pas été confirmée,\ny compris ceux qui se trouvaient dans le\nrouteur en panne. Le fichier arrive\ncomplet.\n"
        },
        {
          "text": "Élise doit changer l'adresse IP de sa machine pour relancer",
          "correct": false,
          "feedback": "Erreur : l'adresse IP d'Élise n'a rien à\nvoir avec la panne d'un routeur éloigné.\nLe contournement se fait sur le trajet,\nsans aucune intervention de sa part.\n"
        }
      ],
      "explanation": "Le découpage en paquets et le routage\nrendent Internet robuste : aucun chemin\nn'est réservé à l'avance, chaque routeur\nfait suivre les paquets vers un voisin, et\nune panne se contourne tant qu'un autre\nchemin existe."
    },
    {
      "id": "q17",
      "difficulty": 2,
      "skills": [
        "routeur"
      ],
      "title": "Rôle d'un routeur",
      "partie": "bases",
      "statement": "Quel est le rôle d'un **routeur** sur\nun réseau ?",
      "options": [
        {
          "text": "Afficher les pages Web directement sur l'écran de l'utilisateur",
          "correct": false,
          "feedback": "L'affichage des pages Web est\nle rôle du navigateur, et non\nd'un routeur.\n"
        },
        {
          "text": "Diriger les paquets d'un réseau à un autre",
          "correct": true,
          "feedback": "Le routeur joue, pour les\nréseaux, un rôle comparable\nà celui des aiguillages pour\nles trains. Sans routeur, les\npaquets ne pourraient pas\nsortir d'un réseau local\npour atteindre une autre\npartie d'Internet.\n"
        },
        {
          "text": "Stocker des fichiers",
          "correct": false,
          "feedback": "Le stockage de fichiers est\nplutôt le rôle d'un serveur\nde fichiers, et non d'un\nrouteur, qui s'occupe du\ntransit des paquets.\n"
        },
        {
          "text": "Compresser les données",
          "correct": false,
          "feedback": "La compression peut être\nréalisée à différentes étapes\nde la chaîne de communication,\nmais ce n'est pas le rôle\nprincipal d'un routeur.\n"
        }
      ],
      "explanation": "Internet est un **réseau de réseaux**, interconnectés par des\nrouteurs. Chaque routeur a juste\nbesoin de savoir vers qui\ntransmettre le paquet pour le\nrapprocher de sa destination\nfinale."
    },
    {
      "id": "q18",
      "difficulty": 2,
      "skills": [
        "https-securite"
      ],
      "title": "Apport du protocole HTTPS",
      "partie": "transport",
      "statement": "Qu'apporte le protocole **HTTPS** par\nrapport à HTTP ?",
      "options": [
        {
          "text": "La compression des pages, donc des transferts plus légers",
          "correct": false,
          "feedback": "Erreur : HTTPS ne compresse rien. La\ncompression est un mécanisme distinct,\ndisponible en HTTP comme en HTTPS.\n"
        },
        {
          "text": "Aucune différence, le « S » indique seulement un serveur",
          "correct": false,
          "feedback": "Erreur : le « S » signifie *Secure*.\nHTTPS apporte deux fonctionnalités\nmajeures : le chiffrement et\nl'authentification.\n"
        },
        {
          "text": "Des échanges chiffrés et un serveur authentifié",
          "correct": true,
          "feedback": "Bonne réponse : HTTPS chiffre les\néchanges et authentifie le serveur.\nC'est devenu le standard\nmoderne. Le « S » de HTTPS\nsignifie *Secure*. Les\nnavigateurs modernes\nimposent quasiment HTTPS et\nsignalent les sites en HTTP\ncomme « non sécurisés ».\n"
        },
        {
          "text": "De la rapidité supplémentaire au chargement des pages",
          "correct": false,
          "feedback": "HTTPS est en réalité\nlégèrement plus lent que\nHTTP, en raison du\nchiffrement. La différence\nest cependant à peine\nperceptible.\n"
        }
      ],
      "explanation": "Le cadenas affiché par le\nnavigateur indique qu'une\nconnexion HTTPS est active : les\néchanges entre client et serveur\nsont chiffrés."
    },
    {
      "id": "q19",
      "difficulty": 2,
      "skills": [
        "arpanet"
      ],
      "title": "Histoire d'Internet",
      "partie": "bases",
      "statement": "Quel ancêtre direct d'Internet a\nété créé en $1969$ par le ministère\nde la Défense américain ?",
      "options": [
        {
          "text": "Le système Linux",
          "correct": false,
          "feedback": "Linux est un système\nd'exploitation, créé en\n$1991$ par Linus Torvalds.\nIl n'a aucun rapport avec la\nnaissance d'Internet.\n"
        },
        {
          "text": "Le Web",
          "correct": false,
          "feedback": "Le Web a été conçu plus tard,\nen $1991$, par Tim Berners-Lee\nau CERN. Ce n'est pas\nl'ancêtre d'Internet, mais un\nservice qui s'appuie sur\nInternet.\n"
        },
        {
          "text": "ARPANET",
          "correct": true,
          "feedback": "ARPANET (*Advanced Research\nProjects Agency Network*) est\nle premier réseau à\ncommutation par paquets, et\nl'ancêtre direct d'Internet.\n"
        },
        {
          "text": "L'encyclopédie Wikipédia",
          "correct": false,
          "feedback": "Wikipédia, lancée en $2001$,\nest un service du Web. Elle\nest apparue bien après les\ndébuts d'Internet.\n"
        }
      ],
      "explanation": "Internet a une histoire mixte :\nd'abord militaire (ARPANET),\npuis universitaire (NSFNET),\npuis ouverte aux usages\ncommerciaux à partir de $1993$.\nC'est aujourd'hui une\ninfrastructure mondiale."
    },
    {
      "id": "q20",
      "difficulty": 2,
      "skills": [
        "encapsulation",
        "paquets"
      ],
      "title": "Octets transmis pour un message découpé",
      "partie": "transport",
      "statement": "Une application envoie un message de $2\\,500$ octets. Il est\ndécoupé en paquets qui transportent chacun au plus $1\\,000$\noctets de données, et chaque paquet reçoit en plus un en-tête\nde $40$ octets. Combien d'octets sont transmis au total ?",
      "options": [
        {
          "text": "$2\\,500$ octets",
          "correct": false,
          "feedback": "Erreur : ce total oublie les en-têtes.\nChaque paquet transporte, en plus des\ndonnées, un en-tête qui permet de\nl'acheminer.\n"
        },
        {
          "text": "$2\\,540$ octets",
          "correct": false,
          "feedback": "Erreur : un seul en-tête est compté,\ncomme si le message partait d'un bloc.\nIl est découpé en trois paquets, et\nchacun porte son propre en-tête.\n"
        },
        {
          "text": "$2\\,620$ octets",
          "correct": true,
          "feedback": "Bonne réponse : il faut trois paquets,\nde $1\\,000$, $1\\,000$ et $500$ octets de\ndonnées. Avec $40$ octets d'en-tête\nchacun, on transmet\n$2\\,500 + 3 \\times 40 = 2\\,620$ octets.\n"
        },
        {
          "text": "$3\\,120$ octets",
          "correct": false,
          "feedback": "Erreur : le dernier paquet est compté\ncomme plein. Il ne transporte que les\n$500$ octets restants, et non $1\\,000$.\n"
        }
      ],
      "explanation": "L'encapsulation a un coût : chaque paquet\najoute son en-tête aux données. Plus un\nmessage est découpé en paquets nombreux,\nplus la part des en-têtes dans le total\ntransmis augmente.",
      "variants": [
        {
          "statement": "Une application envoie un message de $2\\,500$ octets. Il est\ndécoupé en paquets qui transportent chacun au plus $1\\,000$\noctets de données, et chaque paquet reçoit en plus un en-tête\nde $40$ octets. Combien d'octets sont transmis au total ?",
          "options": [
            {
              "text": "$2\\,500$ octets",
              "correct": false,
              "feedback": "Erreur : ce total oublie les en-têtes.\nChaque paquet transporte, en plus des\ndonnées, un en-tête qui permet de\nl'acheminer.\n"
            },
            {
              "text": "$2\\,540$ octets",
              "correct": false,
              "feedback": "Erreur : un seul en-tête est compté,\ncomme si le message partait d'un bloc.\nIl est découpé en trois paquets, et\nchacun porte son propre en-tête.\n"
            },
            {
              "text": "$2\\,620$ octets",
              "correct": true,
              "feedback": "Bonne réponse : il faut trois paquets,\nde $1\\,000$, $1\\,000$ et $500$ octets de\ndonnées. Avec $40$ octets d'en-tête\nchacun, on transmet\n$2\\,500 + 3 \\times 40 = 2\\,620$ octets.\n"
            },
            {
              "text": "$3\\,120$ octets",
              "correct": false,
              "feedback": "Erreur : le dernier paquet est compté\ncomme plein. Il ne transporte que les\n$500$ octets restants, et non $1\\,000$.\n"
            }
          ],
          "explanation": "L'encapsulation a un coût : chaque paquet\najoute son en-tête aux données. Plus un\nmessage est découpé en paquets nombreux,\nplus la part des en-têtes dans le total\ntransmis augmente."
        },
        {
          "statement": "Une application envoie un message de $3\\,200$ octets. Il est\ndécoupé en paquets qui transportent chacun au plus $1\\,500$\noctets de données, et chaque paquet reçoit en plus un en-tête\nde $20$ octets. Combien d'octets sont transmis au total ?",
          "options": [
            {
              "text": "$3\\,200$ octets",
              "correct": false,
              "feedback": "Erreur : ce total oublie les en-têtes.\nChaque paquet transporte, en plus des\ndonnées, un en-tête qui permet de\nl'acheminer.\n"
            },
            {
              "text": "$3\\,220$ octets",
              "correct": false,
              "feedback": "Erreur : un seul en-tête est compté,\ncomme si le message partait d'un bloc.\nIl est découpé en trois paquets, et\nchacun porte son propre en-tête.\n"
            },
            {
              "text": "$3\\,260$ octets",
              "correct": true,
              "feedback": "Bonne réponse : il faut trois paquets,\nde $1\\,500$, $1\\,500$ et $200$ octets de\ndonnées. Avec $20$ octets d'en-tête\nchacun, on transmet\n$3\\,200 + 3 \\times 20 = 3\\,260$ octets.\n"
            },
            {
              "text": "$4\\,560$ octets",
              "correct": false,
              "feedback": "Erreur : le dernier paquet est compté\ncomme plein. Il ne transporte que les\n$200$ octets restants, et non $1\\,500$.\n"
            }
          ],
          "explanation": "L'encapsulation a un coût : chaque paquet\najoute son en-tête aux données. Plus un\nmessage est découpé en paquets nombreux,\nplus la part des en-têtes dans le total\ntransmis augmente."
        },
        {
          "statement": "Une application envoie un message de $1\\,800$ octets. Il est\ndécoupé en paquets qui transportent chacun au plus $500$\noctets de données, et chaque paquet reçoit en plus un en-tête\nde $40$ octets. Combien d'octets sont transmis au total ?",
          "options": [
            {
              "text": "$1\\,800$ octets",
              "correct": false,
              "feedback": "Erreur : ce total oublie les en-têtes.\nChaque paquet transporte, en plus des\ndonnées, un en-tête qui permet de\nl'acheminer.\n"
            },
            {
              "text": "$1\\,840$ octets",
              "correct": false,
              "feedback": "Erreur : un seul en-tête est compté,\ncomme si le message partait d'un bloc.\nIl est découpé en quatre paquets, et\nchacun porte son propre en-tête.\n"
            },
            {
              "text": "$1\\,960$ octets",
              "correct": true,
              "feedback": "Bonne réponse : il faut quatre paquets,\nde $500$, $500$, $500$ et $300$ octets de\ndonnées. Avec $40$ octets d'en-tête\nchacun, on transmet\n$1\\,800 + 4 \\times 40 = 1\\,960$ octets.\n"
            },
            {
              "text": "$2\\,160$ octets",
              "correct": false,
              "feedback": "Erreur : le dernier paquet est compté\ncomme plein. Il ne transporte que les\n$300$ octets restants, et non $500$.\n"
            }
          ],
          "explanation": "L'encapsulation a un coût : chaque paquet\najoute son en-tête aux données. Plus un\nmessage est découpé en paquets nombreux,\nplus la part des en-têtes dans le total\ntransmis augmente."
        }
      ]
    },
    {
      "id": "q21",
      "difficulty": 3,
      "skills": [
        "trace-requete"
      ],
      "title": "Trace de requête HTTPS",
      "partie": "transport",
      "statement": "Quelles sont les **étapes** suivies\nlorsqu'un navigateur charge\n`https://example.com` ?",
      "options": [
        {
          "text": "Tout se déroule en une seule étape",
          "correct": false,
          "feedback": "L'accès à une page Web fait\nintervenir plusieurs étapes\nsuccessives : trouver l'adresse\ndu serveur, se connecter, puis\néchanger requête et réponse.\n"
        },
        {
          "text": "Le serveur appelle le client en premier",
          "correct": false,
          "feedback": "C'est toujours le client qui\ninitie la communication.\nAucun serveur ne contacte un\nclient sans qu'une demande\nait été envoyée\npréalablement.\n"
        },
        {
          "text": "La résolution DNS est facultative",
          "correct": false,
          "feedback": "La résolution DNS est\nnécessaire dès lors qu'on\nutilise un nom de domaine.\nElle ne pourrait être évitée\nqu'en saisissant directement\nl'adresse IP du serveur.\n"
        },
        {
          "text": "DNS, TCP, chiffrement, requête HTTP, puis affichage",
          "correct": true,
          "feedback": "C'est la séquence type. Chaque\nétape ne prend en général que\nquelques millisecondes, et le\ntemps total reste le plus\nsouvent inférieur à une\nseconde.\n"
        }
      ],
      "explanation": "Les requêtes suivantes vont plus\nvite : le navigateur garde en\nmémoire les adresses IP déjà\nobtenues auprès du DNS et les\nressources déjà téléchargées."
    },
    {
      "id": "q22",
      "difficulty": 3,
      "skills": [
        "encapsulation"
      ],
      "title": "Encapsulation",
      "partie": "transport",
      "statement": "Quand un message HTTP traverse les\ndifférentes couches pour être\nenvoyé, comment est-il transformé ?",
      "options": [
        {
          "text": "Il est compressé avant l'envoi",
          "correct": false,
          "feedback": "Une compression peut\nintervenir, mais elle n'est\npas systématique. Le\nmécanisme général ne se\nréduit pas à une compression.\n"
        },
        {
          "text": "Il est scindé totalement aléatoirement en morceaux",
          "correct": false,
          "feedback": "Les données sont segmentées\nen paquets, mais cette\nsegmentation suit une logique\nprécise (taille maximale par\ncouche), et n'a rien\nd'aléatoire.\n"
        },
        {
          "text": "Il est traduit dans une autre langue naturelle",
          "correct": false,
          "feedback": "Cette interprétation est\nfantaisiste. L'encapsulation\nest une opération technique\nsur la structure du message,\net non une traduction\nlinguistique.\n"
        },
        {
          "text": "Chaque couche ajoute son en-tête (encapsulation)",
          "correct": true,
          "feedback": "À l'arrivée, on effectue\nl'opération inverse, appelée\ndécapsulation. Le mécanisme\nest analogue à celui des\npoupées russes : chaque\ncouche entoure la précédente.\n"
        }
      ],
      "explanation": "L'encapsulation est un concept\nfondamental des réseaux en\ncouches. Chaque couche ne\n« voit » que l'information qui\nla concerne ; le contenu des\nautres couches lui est opaque."
    },
    {
      "id": "q23",
      "difficulty": 3,
      "skills": [
        "reseau-local"
      ],
      "title": "Adresses privées d'un réseau local",
      "partie": "bases",
      "statement": "Sur un réseau local domestique\ntypique (une box à la maison),\nquelle plage d'adresses IP **privées**\nest utilisée ?",
      "options": [
        {
          "text": "La plage `192.168.x.x`",
          "correct": true,
          "feedback": "Les box domestiques\nattribuent le plus souvent\naux machines du foyer des\nadresses de la forme\n`192.168.x.x`, réservées aux\nréseaux locaux et jamais\nutilisées sur Internet.\n"
        },
        {
          "text": "L'adresse `8.8.8.8`",
          "correct": false,
          "feedback": "Cette adresse correspond au\nserveur DNS public de\nGoogle. C'est une adresse\npublique, et non privée.\n"
        },
        {
          "text": "Aucune adresse fixe n'est utilisée",
          "correct": false,
          "feedback": "Les réseaux locaux utilisent\nau contraire des plages\nd'adresses réservées, comme\n`192.168.x.x` pour la plupart\ndes box.\n"
        },
        {
          "text": "La plage `1.0.0.0` à `1.0.0.255`",
          "correct": false,
          "feedback": "Cette plage est composée\nd'adresses publiques\nattribuées à des opérateurs\nréels, et non d'adresses\nréservées aux réseaux\nprivés.\n"
        }
      ],
      "explanation": "Comme ces adresses ne servent\nqu'à l'intérieur des réseaux\nlocaux, des millions de foyers\npeuvent utiliser les mêmes sans\nconflit : seule la box est\nvisible sur Internet."
    },
    {
      "id": "q24",
      "difficulty": 3,
      "skills": [
        "traceroute"
      ],
      "title": "La commande traceroute",
      "partie": "transport",
      "statement": "Que fait la commande `traceroute`\n(appelée `tracert` sous Windows) ?",
      "options": [
        {
          "text": "Elle modifie la table de routage interne de la machine",
          "correct": false,
          "feedback": "La modification de la table\nde routage est une opération\nd'administration système,\nréalisée par d'autres\ncommandes. La commande\n`traceroute` est purement\ninformative.\n"
        },
        {
          "text": "Elle crée un nouveau réseau local entre deux machines distantes",
          "correct": false,
          "feedback": "La commande `traceroute` ne\ncrée aucun réseau ; elle se\ncontente d'observer le\nchemin emprunté par les\npaquets.\n"
        },
        {
          "text": "Elle mesure le débit maximal d'une connexion vers un serveur",
          "correct": false,
          "feedback": "La mesure de débit est\nplutôt la fonction de\ncommandes ou de services\ncomme `speedtest`. La\ncommande `traceroute` joue\nun autre rôle.\n"
        },
        {
          "text": "Elle affiche les routeurs traversés jusqu'à la destination",
          "correct": true,
          "feedback": "Bonne réponse : elle montre le chemin\nsuivi par les paquets, saut par saut.\nCette commande est utile\npour diagnostiquer un point\ndu réseau où la connexion\ndevient lente ou échoue.\nPour traverser Internet\nd'un bout à l'autre, on\nobserve en général entre\ndix et trente sauts.\n"
        }
      ],
      "explanation": "Internet est conçu pour être\nrésilient : si un saut tombe en\npanne, les paquets empruntent\nautomatiquement un autre\nchemin. La commande\n`traceroute` indique le chemin\neffectivement emprunté à un\ninstant donné, mais ce chemin\npeut varier d'une exécution à\nl'autre."
    },
    {
      "id": "q25",
      "difficulty": 3,
      "skills": [
        "synthese"
      ],
      "title": "Synthèse",
      "partie": "bases",
      "statement": "Parmi les affirmations suivantes\nsur les réseaux, laquelle est\n**fausse** ?",
      "options": [
        {
          "text": "TCP fait renvoyer les paquets perdus et remet les données dans l'ordre",
          "correct": false,
          "feedback": "Cette affirmation est\ncorrecte : c'est ce qui rend\nTCP fiable.\n"
        },
        {
          "text": "Internet est l'infrastructure ; le Web est l'un des services qui s'y appuient",
          "correct": false,
          "feedback": "Cette affirmation est\ncorrecte. Elle traduit la\ndistinction fondamentale\nentre Internet et le Web.\n"
        },
        {
          "text": "Une adresse IPv4 est composée de huit nombres séparés par des points",
          "correct": true,
          "feedback": "Cette affirmation est fausse\n(donc c'est la bonne\nréponse). Une adresse IPv4\nest composée de **quatre**\nnombres (octets) compris\nentre $0$ et $255$.\n"
        },
        {
          "text": "HTTPS chiffre les communications entre le navigateur et le serveur",
          "correct": false,
          "feedback": "Cette affirmation est\ncorrecte. C'est le rôle\nprincipal de HTTPS.\n"
        }
      ],
      "explanation": "Mémo utile : une adresse IPv4\noccupe quatre octets de huit\nbits chacun, soit $32$ bits,\nécrits en notation décimale\npointée."
    },
    {
      "id": "q26",
      "difficulty": 1,
      "skills": [
        "ping",
        "diagnostic"
      ],
      "title": "Commande ping",
      "partie": "transport",
      "statement": "Que permet de faire la commande **`ping`** lancée depuis\nun terminal ?",
      "options": [
        {
          "text": "Mesurer la quantité de données téléchargées depuis Internet",
          "correct": false,
          "feedback": "Erreur : la commande `ping` mesure un temps de réponse, pas un\nvolume de données ; ses paquets de test sont minuscules.\n"
        },
        {
          "text": "Obtenir la route complète suivie par un paquet",
          "correct": false,
          "feedback": "Erreur : c'est le rôle de la commande\n`traceroute` (ou `tracert` sous Windows).\nLa commande `ping` ne montre que le résultat\nfinal, pas les routeurs traversés.\n"
        },
        {
          "text": "Chiffrer les échanges avec une machine distante",
          "correct": false,
          "feedback": "Erreur : `ping` envoie de simples paquets de test, sans aucun\nchiffrement. Le chiffrement des échanges Web relève de HTTPS.\n"
        },
        {
          "text": "Tester si une machine distante est joignable sur le réseau",
          "correct": true,
          "feedback": "Bonne réponse : `ping` envoie de petits paquets de test à\nl'adresse cible et mesure le délai des réponses. Si la machine\nrépond, le réseau fonctionne jusqu'à elle. Si elle ne répond\npas, on peut soupçonner une coupure ou une machine éteinte.\n"
        }
      ],
      "explanation": "C'est l'outil de diagnostic le plus utilisé : avant\ntout dépannage, on essaie un `ping` vers la passerelle\n(`ping 192.168.1.1`), puis vers un serveur connu\n(`ping 8.8.8.8`), puis vers un nom de domaine\n(`ping example.com`) pour isoler la cause d'un\nproblème (réseau local, accès Internet, résolution\nDNS)."
    },
    {
      "id": "q27",
      "difficulty": 2,
      "skills": [
        "routeur",
        "switch",
        "equipements"
      ],
      "title": "Routeur et commutateur",
      "partie": "bases",
      "statement": "Quelle est la différence essentielle entre un\n**routeur** et un **commutateur** (*switch*) ?",
      "options": [
        {
          "text": "Le routeur relie des réseaux (IP), le switch des machines locales (MAC)",
          "correct": true,
          "feedback": "Bonne réponse : le routeur lit l'adresse IP du\npaquet pour décider vers quel réseau l'envoyer, en\nconsultant sa table de routage. Le commutateur,\nlui, redirige les trames d'une machine à une autre\nà l'intérieur d'un même réseau local.\n"
        },
        {
          "text": "Aucune, ce sont deux noms pour le même équipement",
          "correct": false,
          "feedback": "Erreur : ce sont deux équipements distincts qui\nopèrent à des niveaux différents et n'ont pas le\nmême rôle. Confondre les deux mène à des\nincompréhensions sur l'architecture des réseaux.\n"
        },
        {
          "text": "Le commutateur diffuse à toutes les machines connectées, le routeur sélectionne une seule destination",
          "correct": false,
          "feedback": "Erreur : c'est plutôt la définition d'un\n**concentrateur** (*hub*), équipement obsolète qui\nrediffusait toutes les trames à tous les ports. Un\ncommutateur moderne, lui, n'envoie chaque trame\nqu'à son destinataire.\n"
        },
        {
          "text": "Le routeur est utilisé en entreprise, le commutateur à la maison",
          "correct": false,
          "feedback": "Erreur : les deux équipements existent dans tous\nles contextes. Une box internet domestique combine\nd'ailleurs souvent les deux fonctions dans le même\nboîtier.\n"
        }
      ],
      "explanation": "Pour relier deux réseaux différents, il faut un\nrouteur ; pour étendre le nombre de prises d'un même\nréseau local, un commutateur suffit. Les box internet\njouent les deux rôles : commutation côté LAN, routage\nvers Internet."
    },
    {
      "id": "q28",
      "difficulty": 2,
      "skills": [
        "cidr",
        "masque"
      ],
      "title": "Suffixe /24 d'une adresse",
      "partie": "adressage",
      "statement": "L'identification d'une machine s'écrit sous la forme\n`192.168.1.144/24`. Que signifie ce `/24` ?",
      "options": [
        {
          "text": "L'adresse IP est mise à jour toutes les $24$ heures",
          "correct": false,
          "feedback": "Erreur : le `/24` ne dit rien d'une durée. Il fait partie de\nl'identification de la machine et désigne la longueur de la\npartie réseau de l'adresse.\n"
        },
        {
          "text": "Les $24$ premiers bits codent le réseau (masque $255.255.255.0$)",
          "correct": true,
          "feedback": "Bonne réponse : le nombre après la barre précise sur combien de\nbits porte la partie « réseau » de l'adresse. Ici, $24$ bits\ndonnent le masque $255.255.255.0$, et les $32 - 24 = 8$ bits\nrestants désignent l'**hôte** dans ce réseau.\n"
        },
        {
          "text": "La machine se trouve à $24$ sauts (*hops*) du routeur le plus proche",
          "correct": false,
          "feedback": "Erreur : la distance en nombre de sauts est une notion\ndifférente, mesurée par la commande `traceroute`. Le suffixe\n`/24` ne renseigne en rien sur le trajet.\n"
        },
        {
          "text": "La machine peut accueillir au maximum $24$ utilisateurs",
          "correct": false,
          "feedback": "Erreur : ce nombre n'a aucun rapport avec le nombre\nd'utilisateurs. Le suffixe concerne uniquement la structure de\nl'adresse.\n"
        }
      ],
      "explanation": "Quelques équivalences : `/8` correspond au masque $255.0.0.0$,\n`/16` à $255.255.0.0$ et `/24` à $255.255.255.0$. Le nombre après\nla barre compte les bits à $1$ du masque."
    },
    {
      "id": "q29",
      "difficulty": 3,
      "skills": [
        "masque",
        "denombrement",
        "hotes"
      ],
      "title": "Nombre d'hôtes dans un réseau",
      "partie": "adressage",
      "statement": "Combien de machines (hôtes) peut-on accueillir au\nmaximum dans le réseau `192.168.1.0/24` ?",
      "options": [
        {
          "text": "$254$",
          "correct": true,
          "feedback": "Bonne réponse : avec un masque `/24`, $8$ bits\ncodent l'hôte, soit $2^{8} = 256$ adresses possibles.\nSur ces $256$, deux sont réservées : l'adresse du\nréseau (`192.168.1.0`) et l'adresse de diffusion\n(`192.168.1.255`). Il reste donc\n$256 - 2 = 254$ machines adressables.\n"
        },
        {
          "text": "$24$",
          "correct": false,
          "feedback": "Erreur : le `/24` indique la longueur du préfixe\nréseau, pas le nombre d'hôtes. Avec ce masque,\nchaque réseau peut contenir bien plus de machines.\n"
        },
        {
          "text": "$256$",
          "correct": false,
          "feedback": "Erreur : on a oublié de retrancher les deux\nadresses réservées. Avec $8$ bits d'hôte, il y a\n$256$ combinaisons possibles, mais l'adresse du\nréseau lui-même et l'adresse de **diffusion** ne\npeuvent pas être attribuées à une machine.\n"
        },
        {
          "text": "$65\\,534$",
          "correct": false,
          "feedback": "Erreur : ce nombre correspond à un masque `/16`\n($2^{16} - 2 = 65\\,534$ hôtes). Avec un masque\n`/24`, le nombre d'hôtes est différent.\n"
        }
      ],
      "explanation": "Formule à retenir : pour un masque `/n` IPv4, le\nnombre d'hôtes adressables vaut $2^{32 - n} - 2$. Ce\n« $-2$ » correspond aux deux adresses spéciales\nsystématiquement réservées dans chaque réseau :\nl'adresse réseau (tous les bits d'hôte à $0$) et\nl'adresse de diffusion (tous les bits d'hôte à $1$).",
      "variants": [
        {
          "statement": "Combien de machines (hôtes) peut-on accueillir au\nmaximum dans le réseau `192.168.1.0/24` ?",
          "options": [
            {
              "text": "$254$",
              "correct": true,
              "feedback": "Bonne réponse : avec un masque `/24`, $8$ bits\ncodent l'hôte, soit $2^{8} = 256$ adresses possibles.\nSur ces $256$, deux sont réservées : l'adresse du\nréseau (`192.168.1.0`) et l'adresse de diffusion\n(`192.168.1.255`). Il reste donc\n$256 - 2 = 254$ machines adressables.\n"
            },
            {
              "text": "$24$",
              "correct": false,
              "feedback": "Erreur : le `/24` indique la longueur du préfixe\nréseau, pas le nombre d'hôtes. Avec ce masque,\nchaque réseau peut contenir bien plus de machines.\n"
            },
            {
              "text": "$256$",
              "correct": false,
              "feedback": "Erreur : on a oublié de retrancher les deux\nadresses réservées. Avec $8$ bits d'hôte, il y a\n$256$ combinaisons possibles, mais l'adresse du\nréseau lui-même et l'adresse de **diffusion** ne\npeuvent pas être attribuées à une machine.\n"
            },
            {
              "text": "$65\\,534$",
              "correct": false,
              "feedback": "Erreur : ce nombre correspond à un masque `/16`\n($2^{16} - 2 = 65\\,534$ hôtes). Avec un masque\n`/24`, le nombre d'hôtes est différent.\n"
            }
          ],
          "explanation": "Formule à retenir : pour un masque `/n` IPv4, le\nnombre d'hôtes adressables vaut $2^{32 - n} - 2$. Ce\n« $-2$ » correspond aux deux adresses spéciales\nsystématiquement réservées dans chaque réseau :\nl'adresse réseau (tous les bits d'hôte à $0$) et\nl'adresse de diffusion (tous les bits d'hôte à $1$)."
        },
        {
          "statement": "Combien de machines (hôtes) peut-on accueillir au\nmaximum dans le réseau `10.0.0.0/16` ?",
          "options": [
            {
              "text": "$65\\,534$",
              "correct": true,
              "feedback": "Bonne réponse : avec un masque `/16`, $16$ bits\ncodent l'hôte, soit $2^{16} = 65\\,536$ adresses possibles.\nSur ces $65\\,536$, deux sont réservées : l'adresse du\nréseau (`10.0.0.0`) et l'adresse de diffusion\n(`10.0.255.255`). Il reste donc\n$65\\,536 - 2 = 65\\,534$ machines adressables.\n"
            },
            {
              "text": "$16$",
              "correct": false,
              "feedback": "Erreur : le `/16` indique la longueur du préfixe\nréseau, pas le nombre d'hôtes. Avec ce masque,\nchaque réseau peut contenir bien plus de machines.\n"
            },
            {
              "text": "$65\\,536$",
              "correct": false,
              "feedback": "Erreur : on a oublié de retrancher les deux\nadresses réservées. Avec $16$ bits d'hôte, il y a\n$65\\,536$ combinaisons possibles, mais l'adresse du\nréseau lui-même et l'adresse de **diffusion** ne\npeuvent pas être attribuées à une machine.\n"
            },
            {
              "text": "$254$",
              "correct": false,
              "feedback": "Erreur : ce nombre correspond à un masque `/24`\n($2^{8} - 2 = 254$ hôtes). Avec un masque\n`/16`, le nombre d'hôtes est différent.\n"
            }
          ],
          "explanation": "Formule à retenir : pour un masque `/n` IPv4, le\nnombre d'hôtes adressables vaut $2^{32 - n} - 2$. Ce\n« $-2$ » correspond aux deux adresses spéciales\nsystématiquement réservées dans chaque réseau :\nl'adresse réseau (tous les bits d'hôte à $0$) et\nl'adresse de diffusion (tous les bits d'hôte à $1$)."
        },
        {
          "statement": "Combien de machines (hôtes) peut-on accueillir au\nmaximum dans le réseau `172.16.4.0/26` ?",
          "options": [
            {
              "text": "$62$",
              "correct": true,
              "feedback": "Bonne réponse : avec un masque `/26`, $6$ bits\ncodent l'hôte, soit $2^{6} = 64$ adresses possibles.\nSur ces $64$, deux sont réservées : l'adresse du\nréseau (`172.16.4.0`) et l'adresse de diffusion\n(`172.16.4.63`). Il reste donc\n$64 - 2 = 62$ machines adressables.\n"
            },
            {
              "text": "$26$",
              "correct": false,
              "feedback": "Erreur : le `/26` indique la longueur du préfixe\nréseau, pas le nombre d'hôtes. Avec ce masque,\nchaque réseau peut contenir bien plus de machines.\n"
            },
            {
              "text": "$64$",
              "correct": false,
              "feedback": "Erreur : on a oublié de retrancher les deux\nadresses réservées. Avec $6$ bits d'hôte, il y a\n$64$ combinaisons possibles, mais l'adresse du\nréseau lui-même et l'adresse de **diffusion** ne\npeuvent pas être attribuées à une machine.\n"
            },
            {
              "text": "$254$",
              "correct": false,
              "feedback": "Erreur : ce nombre correspond à un masque `/24`\n($2^{8} - 2 = 254$ hôtes). Avec un masque\n`/26`, le nombre d'hôtes est différent.\n"
            }
          ],
          "explanation": "Formule à retenir : pour un masque `/n` IPv4, le\nnombre d'hôtes adressables vaut $2^{32 - n} - 2$. Ce\n« $-2$ » correspond aux deux adresses spéciales\nsystématiquement réservées dans chaque réseau :\nl'adresse réseau (tous les bits d'hôte à $0$) et\nl'adresse de diffusion (tous les bits d'hôte à $1$)."
        }
      ]
    },
    {
      "id": "q30",
      "difficulty": 1,
      "skills": [
        "bit-alterne"
      ],
      "title": "Le bit du protocole du bit alterné",
      "partie": "transport",
      "statement": "Dans le protocole du bit alterné, chaque message envoyé porte\nun bit qui vaut alternativement 0 et 1. À quoi sert ce bit ?",
      "options": [
        {
          "text": "À signaler que le message contient une erreur de transmission",
          "correct": false,
          "feedback": "Erreur : le bit ne dit rien du contenu du\nmessage. Il vaut 0 ou 1 selon le rang du\nmessage, que celui-ci soit abîmé ou non.\n"
        },
        {
          "text": "À distinguer un nouveau message d'une copie renvoyée",
          "correct": true,
          "feedback": "Bonne réponse : si le récepteur reçoit\ndeux fois de suite le même bit, il sait\nqu'il s'agit d'une copie, renvoyée parce\nque l'accusé de réception s'est perdu, et\nil ne la conserve pas une seconde fois.\n"
        },
        {
          "text": "À désigner la machine destinataire",
          "correct": false,
          "feedback": "Erreur : un seul bit ne distingue que\ndeux valeurs, bien trop peu pour désigner\nune machine. La destination est indiquée\npar l'adresse IP.\n"
        },
        {
          "text": "À chiffrer le message pendant son trajet",
          "correct": false,
          "feedback": "Erreur : un bit qui alterne entre 0 et 1\nne cache rien du contenu. Le protocole du\nbit alterné sert à récupérer les pertes,\npas à chiffrer.\n"
        }
      ],
      "explanation": "Le protocole du bit alterné combine trois\nidées : un accusé de réception pour chaque\nmessage, un renvoi quand l'accusé tarde, et\nun bit alterné pour que le récepteur écarte\nles copies. Un seul bit suffit, car un seul\nmessage est en cours d'envoi à la fois."
    },
    {
      "id": "q31",
      "difficulty": 2,
      "skills": [
        "diffusion",
        "masque",
        "calcul"
      ],
      "title": "Adresse de diffusion d'un réseau",
      "partie": "adressage",
      "statement": "Pour un réseau d'adresse `192.168.2.0/24`, quelle\nest l'adresse de diffusion ?",
      "options": [
        {
          "text": "`255.255.255.0`",
          "correct": false,
          "feedback": "Erreur : c'est le masque de sous-réseau\nassocié au préfixe `/24`, pas l'adresse de\ndiffusion. Le masque indique la longueur du\npréfixe réseau, l'adresse de diffusion\npermet d'envoyer un paquet à toutes les\nmachines du réseau simultanément.\n"
        },
        {
          "text": "`192.168.2.0`",
          "correct": false,
          "feedback": "Erreur : `192.168.2.0` est l'adresse du\nréseau lui-même (tous les bits d'hôte à\n$0$), pas l'adresse de diffusion. Ces deux\nadresses sont distinctes et toutes deux\nréservées : aucune machine ne peut les\nrecevoir comme adresse propre.\n"
        },
        {
          "text": "`192.168.2.255`",
          "correct": true,
          "feedback": "Bonne réponse : avec un masque `/24`, les\n$8$ derniers bits codent l'hôte. L'adresse\nde diffusion correspond à tous ces bits à\n$1$, soit le dernier octet égal à $11111111_2 = 255_{10}$. On obtient bien\n`192.168.2.255`.\n"
        },
        {
          "text": "`192.168.2.1`",
          "correct": false,
          "feedback": "Erreur : `192.168.2.1` est typiquement la\npremière adresse attribuable à une machine\ndu réseau (souvent affectée à la\npasserelle), mais ce n'est pas l'adresse de\ndiffusion.\n"
        }
      ],
      "explanation": "Méthode pour calculer l'adresse de diffusion\nd'un réseau : on conserve les bits du préfixe\nréseau (déterminé par le masque) et on met tous\nles bits d'hôte à $1$. Pour `192.168.2.0/24`,\nle préfixe réseau occupe les $24$ premiers bits\n(`192.168.2`) et les $8$ bits d'hôte à $1$\ndonnent `192.168.2.255`. Cette\nadresse permet d'envoyer un même paquet à\ntoutes les machines du réseau simultanément.",
      "variants": [
        {
          "statement": "Pour un réseau d'adresse `192.168.2.0/24`, quelle\nest l'adresse de diffusion ?",
          "options": [
            {
              "text": "`255.255.255.0`",
              "correct": false,
              "feedback": "Erreur : c'est le masque de sous-réseau\nassocié au préfixe `/24`, pas l'adresse de\ndiffusion. Le masque indique la longueur du\npréfixe réseau, l'adresse de diffusion\npermet d'envoyer un paquet à toutes les\nmachines du réseau simultanément.\n"
            },
            {
              "text": "`192.168.2.0`",
              "correct": false,
              "feedback": "Erreur : `192.168.2.0` est l'adresse du\nréseau lui-même (tous les bits d'hôte à\n$0$), pas l'adresse de diffusion. Ces deux\nadresses sont distinctes et toutes deux\nréservées : aucune machine ne peut les\nrecevoir comme adresse propre.\n"
            },
            {
              "text": "`192.168.2.255`",
              "correct": true,
              "feedback": "Bonne réponse : avec un masque `/24`, les\n$8$ derniers bits codent l'hôte. L'adresse\nde diffusion correspond à tous ces bits à\n$1$, soit le dernier octet égal à $11111111_2 = 255_{10}$. On obtient bien\n`192.168.2.255`.\n"
            },
            {
              "text": "`192.168.2.1`",
              "correct": false,
              "feedback": "Erreur : `192.168.2.1` est typiquement la\npremière adresse attribuable à une machine\ndu réseau (souvent affectée à la\npasserelle), mais ce n'est pas l'adresse de\ndiffusion.\n"
            }
          ],
          "explanation": "Méthode pour calculer l'adresse de diffusion\nd'un réseau : on conserve les bits du préfixe\nréseau (déterminé par le masque) et on met tous\nles bits d'hôte à $1$. Pour `192.168.2.0/24`,\nle préfixe réseau occupe les $24$ premiers bits\n(`192.168.2`) et les $8$ bits d'hôte à $1$\ndonnent `192.168.2.255`. Cette\nadresse permet d'envoyer un même paquet à\ntoutes les machines du réseau simultanément."
        },
        {
          "statement": "Pour un réseau d'adresse `10.0.0.0/16`, quelle\nest l'adresse de diffusion ?",
          "options": [
            {
              "text": "`255.255.0.0`",
              "correct": false,
              "feedback": "Erreur : c'est le masque de sous-réseau\nassocié au préfixe `/16`, pas l'adresse de\ndiffusion. Le masque indique la longueur du\npréfixe réseau, l'adresse de diffusion\npermet d'envoyer un paquet à toutes les\nmachines du réseau simultanément.\n"
            },
            {
              "text": "`10.0.0.0`",
              "correct": false,
              "feedback": "Erreur : `10.0.0.0` est l'adresse du\nréseau lui-même (tous les bits d'hôte à\n$0$), pas l'adresse de diffusion. Ces deux\nadresses sont distinctes et toutes deux\nréservées : aucune machine ne peut les\nrecevoir comme adresse propre.\n"
            },
            {
              "text": "`10.0.255.255`",
              "correct": true,
              "feedback": "Bonne réponse : avec un masque `/16`, les\n$16$ derniers bits codent l'hôte. L'adresse\nde diffusion correspond à tous ces bits à\n$1$, soit les deux derniers octets égaux à $255$. On obtient bien\n`10.0.255.255`.\n"
            },
            {
              "text": "`10.0.0.1`",
              "correct": false,
              "feedback": "Erreur : `10.0.0.1` est typiquement la\npremière adresse attribuable à une machine\ndu réseau (souvent affectée à la\npasserelle), mais ce n'est pas l'adresse de\ndiffusion.\n"
            }
          ],
          "explanation": "Méthode pour calculer l'adresse de diffusion\nd'un réseau : on conserve les bits du préfixe\nréseau (déterminé par le masque) et on met tous\nles bits d'hôte à $1$. Pour `10.0.0.0/16`,\nle préfixe réseau occupe les $16$ premiers bits\n(`10.0`) et les $16$ bits d'hôte à $1$\ndonnent `10.0.255.255`. Cette\nadresse permet d'envoyer un même paquet à\ntoutes les machines du réseau simultanément."
        },
        {
          "statement": "Pour un réseau d'adresse `172.16.4.0/26`, quelle\nest l'adresse de diffusion ?",
          "options": [
            {
              "text": "`255.255.255.192`",
              "correct": false,
              "feedback": "Erreur : c'est le masque de sous-réseau\nassocié au préfixe `/26`, pas l'adresse de\ndiffusion. Le masque indique la longueur du\npréfixe réseau, l'adresse de diffusion\npermet d'envoyer un paquet à toutes les\nmachines du réseau simultanément.\n"
            },
            {
              "text": "`172.16.4.0`",
              "correct": false,
              "feedback": "Erreur : `172.16.4.0` est l'adresse du\nréseau lui-même (tous les bits d'hôte à\n$0$), pas l'adresse de diffusion. Ces deux\nadresses sont distinctes et toutes deux\nréservées : aucune machine ne peut les\nrecevoir comme adresse propre.\n"
            },
            {
              "text": "`172.16.4.63`",
              "correct": true,
              "feedback": "Bonne réponse : avec un masque `/26`, les\n$6$ derniers bits codent l'hôte. L'adresse\nde diffusion correspond à tous ces bits à\n$1$, soit les six derniers bits à $1$, soit un dernier octet égal à $00111111_2 = 63_{10}$. On obtient bien\n`172.16.4.63`.\n"
            },
            {
              "text": "`172.16.4.1`",
              "correct": false,
              "feedback": "Erreur : `172.16.4.1` est typiquement la\npremière adresse attribuable à une machine\ndu réseau (souvent affectée à la\npasserelle), mais ce n'est pas l'adresse de\ndiffusion.\n"
            }
          ],
          "explanation": "Méthode pour calculer l'adresse de diffusion\nd'un réseau : on conserve les bits du préfixe\nréseau (déterminé par le masque) et on met tous\nles bits d'hôte à $1$. Pour `172.16.4.0/26`,\nle préfixe réseau occupe les $26$ premiers bits\n(`172.16.4` et les deux premiers bits du dernier octet) et les $6$ bits d'hôte à $1$\ndonnent `172.16.4.63`. Cette\nadresse permet d'envoyer un même paquet à\ntoutes les machines du réseau simultanément."
        }
      ]
    },
    {
      "id": "q32",
      "difficulty": 1,
      "skills": [
        "bit-alterne",
        "retransmission"
      ],
      "title": "Quand l'émetteur renvoie un message",
      "partie": "transport",
      "statement": "Dans le protocole du bit alterné, dans quel cas\nl'émetteur renvoie-t-il le message qu'il vient\nd'envoyer ?",
      "options": [
        {
          "text": "Quand l'accusé de réception attendu n'arrive pas avant la fin du délai",
          "correct": true,
          "feedback": "Perte du message ou perte de l'accusé : dans les\ndeux cas, l'émetteur ne reçoit rien et renvoie.\n"
        },
        {
          "text": "Dès que le récepteur lui envoie un message signalant une erreur",
          "correct": false,
          "feedback": "Le protocole ne prévoit aucun message d'erreur ;\nseul le silence du récepteur déclenche le renvoi.\n"
        },
        {
          "text": "Systématiquement, chaque message étant envoyé deux fois par sécurité",
          "correct": false,
          "feedback": "Un message n'est renvoyé que s'il le faut ;\ndoubler tous les envois gaspillerait la bande\npassante.\n"
        },
        {
          "text": "Jamais : un message perdu est définitivement abandonné par l'émetteur",
          "correct": false,
          "feedback": "Récupérer les messages perdus est précisément le\nbut du protocole.\n"
        }
      ],
      "explanation": "L'émetteur garde une copie du dernier message et\nlance un compte à rebours. Si l'accusé portant le\nbon bit arrive, il passe au message suivant en\ninversant le bit ; sinon, à l'expiration du délai,\nil renvoie la même copie avec le même bit."
    },
    {
      "id": "q33",
      "difficulty": 2,
      "skills": [
        "bit-alterne",
        "trace",
        "emetteur"
      ],
      "title": "Trace côté émetteur",
      "partie": "transport",
      "statement": "L'émetteur envoie `M1` avec le bit $0$ et reçoit\nl'accusé $0$. Il envoie `M2` avec le bit $1$, mais\nl'accusé se perd. Que fait l'émetteur à la fin du\ndélai ?",
      "options": [
        {
          "text": "Il renvoie `M2` avec le bit $1$",
          "correct": true,
          "feedback": "Sans accusé, il ne peut pas savoir si `M2` est\narrivé : il renvoie la même copie, avec le même\nbit.\n"
        },
        {
          "text": "Il envoie `M3` avec le bit $0$",
          "correct": false,
          "feedback": "Passer au message suivant sans accusé ferait\nperdre `M2` si c'est lui qui s'est perdu.\n"
        },
        {
          "text": "Il renvoie `M2` avec le bit $0$",
          "correct": false,
          "feedback": "Changer le bit ferait croire au récepteur qu'il\ns'agit d'un nouveau message.\n"
        },
        {
          "text": "Il renvoie `M1` avec le bit $0$",
          "correct": false,
          "feedback": "`M1` a été acquitté ; revenir en arrière n'a\naucune raison.\n"
        }
      ],
      "explanation": "Le bit ne change qu'après réception de l'accusé\nattendu. Tant que l'accusé $1$ manque, l'émetteur\nrépète `M2` avec le bit $1$, autant de fois que\nnécessaire."
    },
    {
      "id": "q34",
      "difficulty": 2,
      "skills": [
        "bit-alterne",
        "trace",
        "recepteur"
      ],
      "title": "Trace côté récepteur",
      "partie": "transport",
      "statement": "Le récepteur a déjà reçu `M2` avec le bit $1$ et a\nenvoyé l'accusé $1$, qui s'est perdu. Il reçoit\nalors une seconde fois `M2` avec le bit $1$. Que\nfait-il ?",
      "options": [
        {
          "text": "Il ignore ce doublon mais renvoie l'accusé $1$",
          "correct": true,
          "feedback": "Le bit $1$ est celui du message déjà reçu : la\ncopie est écartée, et l'accusé est renvoyé pour\ndébloquer l'émetteur.\n"
        },
        {
          "text": "Il traite `M2` une seconde fois, puis attend `M3`",
          "correct": false,
          "feedback": "Il remettrait deux fois le même message à\nl'application ; c'est justement ce que le bit\npermet d'éviter.\n"
        },
        {
          "text": "Il ignore ce doublon et n'envoie rien",
          "correct": false,
          "feedback": "Sans accusé, l'émetteur renverrait `M2`\nindéfiniment.\n"
        },
        {
          "text": "Il signale une erreur à l'émetteur et demande `M3`",
          "correct": false,
          "feedback": "Le protocole ne comporte ni message d'erreur ni\ndemande explicite ; seuls les accusés circulent.\n"
        }
      ],
      "explanation": "Le récepteur attend le bit opposé au dernier message\naccepté. Un message portant le même bit est une\ncopie : il n'est pas livré, mais l'accusé est\nrenvoyé, car c'est sa perte qui a provoqué le\nrenvoi."
    },
    {
      "id": "q35",
      "difficulty": 3,
      "skills": [
        "bit-alterne",
        "trace",
        "comptage"
      ],
      "title": "Compter les envois",
      "partie": "transport",
      "statement": "Trois messages `M1`, `M2`, `M3` sont à transmettre\navec le protocole du bit alterné. Le premier envoi de `M2` est perdu ; le premier accusé de `M3` est perdu ; tout le reste arrive. Combien de fois\nl'émetteur envoie-t-il un message au total (premiers\nenvois et renvois compris) ?",
      "options": [
        {
          "text": "$3$",
          "correct": false,
          "feedback": "Sans aucune perte il y aurait trois envois ; ici deux renvois s'ajoute(nt).\n"
        },
        {
          "text": "$4$",
          "correct": false,
          "feedback": "Il y a deux renvois, pas un : `M2` perdu et `M3` dont l'accusé s'est perdu.\n"
        },
        {
          "text": "$5$",
          "correct": true,
          "feedback": "`M1` une fois, `M2` deux fois (le premier envoi est perdu), `M3` deux fois (l'accusé perdu oblige à renvoyer).\n"
        },
        {
          "text": "$6$",
          "correct": false,
          "feedback": "Chaque incident coûte un seul renvoi ; le second envoi de `M2` comme celui de `M3` sont acquittés.\n"
        }
      ],
      "explanation": "Un message perdu et un accusé perdu provoquent la\nmême réaction : l'émetteur, sans accusé à la fin du\ndélai, renvoie. Trace : `M1`($0$) acquitté ; `M2`($1$) perdu, puis `M2`($1$) acquitté ; `M3`($0$) dont l'accusé se perd, puis `M3`($0$) écarté comme doublon par le récepteur et acquitté. Cinq envois.",
      "variants": [
        {
          "statement": "Trois messages `M1`, `M2`, `M3` sont à transmettre\navec le protocole du bit alterné. Le premier envoi de `M2` est perdu ; le premier accusé de `M3` est perdu ; tout le reste arrive. Combien de fois\nl'émetteur envoie-t-il un message au total (premiers\nenvois et renvois compris) ?",
          "options": [
            {
              "text": "$3$",
              "correct": false,
              "feedback": "Sans aucune perte il y aurait trois envois ; ici deux renvois s'ajoute(nt).\n"
            },
            {
              "text": "$4$",
              "correct": false,
              "feedback": "Il y a deux renvois, pas un : `M2` perdu et `M3` dont l'accusé s'est perdu.\n"
            },
            {
              "text": "$5$",
              "correct": true,
              "feedback": "`M1` une fois, `M2` deux fois (le premier envoi est perdu), `M3` deux fois (l'accusé perdu oblige à renvoyer).\n"
            },
            {
              "text": "$6$",
              "correct": false,
              "feedback": "Chaque incident coûte un seul renvoi ; le second envoi de `M2` comme celui de `M3` sont acquittés.\n"
            }
          ],
          "explanation": "Un message perdu et un accusé perdu provoquent la\nmême réaction : l'émetteur, sans accusé à la fin du\ndélai, renvoie. Trace : `M1`($0$) acquitté ; `M2`($1$) perdu, puis `M2`($1$) acquitté ; `M3`($0$) dont l'accusé se perd, puis `M3`($0$) écarté comme doublon par le récepteur et acquitté. Cinq envois."
        },
        {
          "statement": "Trois messages `M1`, `M2`, `M3` sont à transmettre\navec le protocole du bit alterné. Le premier accusé de `M1` est perdu ; les deux premiers envois de `M3` sont perdus ; tout le reste arrive. Combien de fois\nl'émetteur envoie-t-il un message au total (premiers\nenvois et renvois compris) ?",
          "options": [
            {
              "text": "$4$",
              "correct": false,
              "feedback": "Sans aucune perte il y aurait trois envois ; ici trois renvois s'ajoute(nt).\n"
            },
            {
              "text": "$5$",
              "correct": false,
              "feedback": "Il y a trois renvois, pas deux : un pour `M1` dont l'accusé s'est perdu, deux pour `M3`.\n"
            },
            {
              "text": "$6$",
              "correct": true,
              "feedback": "`M1` deux fois (l'accusé perdu oblige à renvoyer), `M2` une fois, `M3` trois fois (deux envois perdus avant le bon).\n"
            },
            {
              "text": "$7$",
              "correct": false,
              "feedback": "Chaque perte coûte un seul renvoi ; le second envoi de `M1` et le troisième de `M3` sont acquittés.\n"
            }
          ],
          "explanation": "Un message perdu et un accusé perdu provoquent la\nmême réaction : l'émetteur, sans accusé à la fin du\ndélai, renvoie. Trace : `M1`($0$) dont l'accusé se perd, puis `M1`($0$) écarté comme doublon et acquitté ; `M2`($1$) acquitté ; `M3`($0$) perdu, `M3`($0$) perdu encore, puis `M3`($0$) acquitté. Six envois."
        },
        {
          "statement": "Trois messages `M1`, `M2`, `M3` sont à transmettre\navec le protocole du bit alterné. Seul le premier envoi de `M2` est perdu ; tout le reste arrive. Combien de fois\nl'émetteur envoie-t-il un message au total (premiers\nenvois et renvois compris) ?",
          "options": [
            {
              "text": "$2$",
              "correct": false,
              "feedback": "Sans aucune perte il y aurait trois envois ; ici un seul renvoi s'ajoute(nt).\n"
            },
            {
              "text": "$3$",
              "correct": false,
              "feedback": "Il y a bien un renvoi : le premier envoi de `M2` n'arrive jamais.\n"
            },
            {
              "text": "$4$",
              "correct": true,
              "feedback": "`M1` une fois, `M2` deux fois (le premier envoi est perdu), `M3` une fois.\n"
            },
            {
              "text": "$5$",
              "correct": false,
              "feedback": "Un seul incident coûte un seul renvoi ; le second envoi de `M2` est acquitté.\n"
            }
          ],
          "explanation": "Un message perdu et un accusé perdu provoquent la\nmême réaction : l'émetteur, sans accusé à la fin du\ndélai, renvoie. Trace : `M1`($0$) acquitté ; `M2`($1$) perdu, puis `M2`($1$) acquitté ; `M3`($0$) acquitté. Quatre envois."
        }
      ]
    },
    {
      "id": "q36",
      "difficulty": 2,
      "skills": [
        "masque",
        "reseau",
        "appartenance"
      ],
      "title": "Deux machines sur le même réseau",
      "partie": "adressage",
      "statement": "La machine A a l'adresse `192.168.1.10` avec le masque\n`255.255.255.0`. La machine B a l'adresse `192.168.1.200` avec le même\nmasque. Sont-elles sur le même réseau ?",
      "options": [
        {
          "text": "Oui, les trois premiers octets sont identiques",
          "correct": true,
          "feedback": "Bonne réponse : avec ce masque, la partie réseau est formée des\ntrois premiers octets. Deux adresses sont sur le même réseau si\nces trois octets coïncident.\n"
        },
        {
          "text": "Non, le dernier octet diffère trop",
          "correct": false,
          "feedback": "Erreur : seuls les octets couverts par le masque comptent, les\ntrois premiers ici ; compare-les un à un.\n"
        },
        {
          "text": "Oui, les deux adresses commençant par `192`",
          "correct": false,
          "feedback": "Erreur : le premier octet ne suffit pas ; le masque impose\ntrois octets communs.\n"
        },
        {
          "text": "Impossible à dire sans connaître le routeur",
          "correct": false,
          "feedback": "Erreur : l'adresse et le masque suffisent à répondre.\n"
        }
      ],
      "explanation": "Le masque sépare la partie réseau de la partie hôte : deux machines\nsont sur le même réseau si leurs parties réseau sont égales.",
      "variants": [
        {
          "statement": "La machine A a l'adresse `192.168.1.10` avec le masque\n`255.255.255.0`. La machine B a l'adresse `192.168.1.200` avec le même\nmasque. Sont-elles sur le même réseau ?",
          "options": [
            {
              "text": "Oui, les trois premiers octets sont identiques",
              "correct": true,
              "feedback": "Bonne réponse : avec ce masque, la partie réseau est formée des\ntrois premiers octets. Deux adresses sont sur le même réseau si\nces trois octets coïncident.\n"
            },
            {
              "text": "Non, le dernier octet diffère trop",
              "correct": false,
              "feedback": "Erreur : seuls les octets couverts par le masque comptent, les\ntrois premiers ici ; compare-les un à un.\n"
            },
            {
              "text": "Oui, les deux adresses commençant par `192`",
              "correct": false,
              "feedback": "Erreur : le premier octet ne suffit pas ; le masque impose\ntrois octets communs.\n"
            },
            {
              "text": "Impossible à dire sans connaître le routeur",
              "correct": false,
              "feedback": "Erreur : l'adresse et le masque suffisent à répondre.\n"
            }
          ],
          "explanation": "Le masque sépare la partie réseau de la partie hôte : deux machines\nsont sur le même réseau si leurs parties réseau sont égales."
        },
        {
          "statement": "La machine A a l'adresse `192.168.1.10` avec le masque\n`255.255.255.0`. La machine B a l'adresse `192.168.2.5` avec le même\nmasque. Sont-elles sur le même réseau ?",
          "options": [
            {
              "text": "Non, le troisième octet diffère",
              "correct": true,
              "feedback": "Bonne réponse : avec ce masque, la partie réseau est formée des\ntrois premiers octets. Deux adresses sont sur le même réseau si\nces trois octets coïncident.\n"
            },
            {
              "text": "Oui, les deux premiers octets sont identiques",
              "correct": false,
              "feedback": "Erreur : seuls les octets couverts par le masque comptent, les\ntrois premiers ici ; compare-les un à un.\n"
            },
            {
              "text": "Oui, les deux adresses commençant par `192`",
              "correct": false,
              "feedback": "Erreur : le premier octet ne suffit pas ; le masque impose\ntrois octets communs.\n"
            },
            {
              "text": "Impossible à dire sans connaître le routeur",
              "correct": false,
              "feedback": "Erreur : l'adresse et le masque suffisent à répondre.\n"
            }
          ],
          "explanation": "Le masque sépare la partie réseau de la partie hôte : deux machines\nsont sur le même réseau si leurs parties réseau sont égales."
        }
      ]
    },
    {
      "id": "q37",
      "difficulty": 2,
      "skills": [
        "adressage",
        "adresse-reseau",
        "masque"
      ],
      "title": "L'adresse du réseau d'une machine",
      "partie": "adressage",
      "statement": "Une machine a l'adresse `192.168.3.77` avec le masque `255.255.255.0`.\nQuelle est l'adresse de son réseau ?",
      "options": [
        {
          "text": "`192.168.3.0`, la partie machine mise à zéro",
          "correct": true,
          "feedback": "Bonne réponse : le masque garde les trois premiers octets pour\nle réseau ; l'adresse du réseau s'obtient en annulant le\ndernier octet.\n"
        },
        {
          "text": "`192.168.3.255`, la partie machine mise à un",
          "correct": false,
          "feedback": "Erreur : tous les bits machine à $1$ donnent l'adresse de\ndiffusion.\n"
        },
        {
          "text": "`192.168.3.77`, l'adresse de la machine elle-même",
          "correct": false,
          "feedback": "Erreur : l'adresse du réseau est commune à toutes ses\nmachines.\n"
        },
        {
          "text": "`255.255.255.0`, le masque",
          "correct": false,
          "feedback": "Erreur : le masque n'est pas une adresse, il dit où couper.\n"
        }
      ],
      "explanation": "Adresse de réseau : les bits réseau conservés, les bits machine à\nzéro. Toutes les machines d'un même réseau la partagent.",
      "variants": [
        {
          "statement": "Une machine a l'adresse `192.168.3.77` avec le masque `255.255.255.0`.\nQuelle est l'adresse de son réseau ?",
          "options": [
            {
              "text": "`192.168.3.0`, la partie machine mise à zéro",
              "correct": true,
              "feedback": "Bonne réponse : le masque garde les trois premiers octets pour\nle réseau ; l'adresse du réseau s'obtient en annulant le\ndernier octet.\n"
            },
            {
              "text": "`192.168.3.255`, la partie machine mise à un",
              "correct": false,
              "feedback": "Erreur : tous les bits machine à $1$ donnent l'adresse de\ndiffusion.\n"
            },
            {
              "text": "`192.168.3.77`, l'adresse de la machine elle-même",
              "correct": false,
              "feedback": "Erreur : l'adresse du réseau est commune à toutes ses\nmachines.\n"
            },
            {
              "text": "`255.255.255.0`, le masque",
              "correct": false,
              "feedback": "Erreur : le masque n'est pas une adresse, il dit où couper.\n"
            }
          ],
          "explanation": "Adresse de réseau : les bits réseau conservés, les bits machine à\nzéro. Toutes les machines d'un même réseau la partagent."
        },
        {
          "statement": "Une machine a l'adresse `10.4.12.9` avec le masque `255.255.255.0`.\nQuelle est l'adresse de son réseau ?",
          "options": [
            {
              "text": "`10.4.12.0`, la partie machine mise à zéro",
              "correct": true,
              "feedback": "Bonne réponse : le masque garde les trois premiers octets pour\nle réseau ; l'adresse du réseau s'obtient en annulant le\ndernier octet.\n"
            },
            {
              "text": "`10.4.12.255`, la partie machine mise à un",
              "correct": false,
              "feedback": "Erreur : tous les bits machine à $1$ donnent l'adresse de\ndiffusion.\n"
            },
            {
              "text": "`10.4.12.9`, l'adresse de la machine elle-même",
              "correct": false,
              "feedback": "Erreur : l'adresse du réseau est commune à toutes ses\nmachines.\n"
            },
            {
              "text": "`255.255.255.0`, le masque",
              "correct": false,
              "feedback": "Erreur : le masque n'est pas une adresse, il dit où couper.\n"
            }
          ],
          "explanation": "Adresse de réseau : les bits réseau conservés, les bits machine à\nzéro. Toutes les machines d'un même réseau la partagent."
        },
        {
          "statement": "Une machine a l'adresse `172.16.200.130` avec le masque `255.255.255.0`.\nQuelle est l'adresse de son réseau ?",
          "options": [
            {
              "text": "`172.16.200.0`, la partie machine mise à zéro",
              "correct": true,
              "feedback": "Bonne réponse : le masque garde les trois premiers octets pour\nle réseau ; l'adresse du réseau s'obtient en annulant le\ndernier octet.\n"
            },
            {
              "text": "`172.16.200.255`, la partie machine mise à un",
              "correct": false,
              "feedback": "Erreur : tous les bits machine à $1$ donnent l'adresse de\ndiffusion.\n"
            },
            {
              "text": "`172.16.200.130`, l'adresse de la machine elle-même",
              "correct": false,
              "feedback": "Erreur : l'adresse du réseau est commune à toutes ses\nmachines.\n"
            },
            {
              "text": "`255.255.255.0`, le masque",
              "correct": false,
              "feedback": "Erreur : le masque n'est pas une adresse, il dit où couper.\n"
            }
          ],
          "explanation": "Adresse de réseau : les bits réseau conservés, les bits machine à\nzéro. Toutes les machines d'un même réseau la partagent."
        }
      ]
    },
    {
      "id": "q38",
      "difficulty": 1,
      "skills": [
        "adressage",
        "masque",
        "role"
      ],
      "title": "Le rôle du masque de sous-réseau",
      "partie": "adressage",
      "statement": "À quoi sert le masque de sous-réseau associé à une adresse IP ?",
      "options": [
        {
          "text": "À séparer, dans l'adresse, les bits du réseau et ceux de la machine",
          "correct": true,
          "feedback": "Bonne réponse : les bits à $1$ du masque marquent la partie\nréseau, les bits à $0$ la partie machine. Deux machines de même\npartie réseau peuvent se parler sans routeur.\n"
        },
        {
          "text": "À chiffrer l'adresse pour la rendre illisible sur le réseau",
          "correct": false,
          "feedback": "Erreur : le masque ne protège rien, il structure.\n"
        },
        {
          "text": "À remplacer l'adresse quand elle n'a pas encore été attribuée",
          "correct": false,
          "feedback": "Erreur : le masque accompagne l'adresse, il ne la remplace\npas.\n"
        },
        {
          "text": "À indiquer l'adresse du routeur de sortie du réseau",
          "correct": false,
          "feedback": "Erreur : l'adresse du routeur, la passerelle, est un réglage\ndistinct.\n"
        }
      ],
      "explanation": "Adresse et masque vont ensemble : le masque dit combien de bits,\nà gauche, identifient le réseau."
    },
    {
      "id": "q39",
      "difficulty": 3,
      "skills": [
        "adressage",
        "adresses-reservees",
        "diffusion"
      ],
      "title": "Une adresse que l'on ne peut pas attribuer",
      "partie": "adressage",
      "statement": "Dans le réseau `192.168.1.0/24`, peut-on attribuer l'adresse\n`192.168.1.255` à un ordinateur ?",
      "options": [
        {
          "text": "Non, c'est l'adresse de diffusion, réservée",
          "correct": true,
          "feedback": "Bonne réponse : dans tout réseau, la première adresse désigne\nle réseau et la dernière sert à la diffusion ; aucune des deux\nne va à une machine. Restent $254$ adresses attribuables.\n"
        },
        {
          "text": "Oui, c'est la dernière adresse disponible du réseau",
          "correct": false,
          "feedback": "Erreur : cette adresse est précisément l'une des deux réservées\ndu réseau.\n"
        },
        {
          "text": "Non, les adresses commençant par `192.168` sont réservées à Internet",
          "correct": false,
          "feedback": "Erreur : `192.168` est au contraire réservé aux réseaux locaux.\n"
        },
        {
          "text": "Oui, toute adresse du réseau peut aller à une machine",
          "correct": false,
          "feedback": "Erreur : deux adresses par réseau sont toujours réservées.\n"
        }
      ],
      "explanation": "Un réseau `/24` offre $256$ motifs mais $254$ adresses de machine :\nla première et la dernière ont un rôle à part.",
      "variants": [
        {
          "statement": "Dans le réseau `192.168.1.0/24`, peut-on attribuer l'adresse\n`192.168.1.255` à un ordinateur ?",
          "options": [
            {
              "text": "Non, c'est l'adresse de diffusion, réservée",
              "correct": true,
              "feedback": "Bonne réponse : dans tout réseau, la première adresse désigne\nle réseau et la dernière sert à la diffusion ; aucune des deux\nne va à une machine. Restent $254$ adresses attribuables.\n"
            },
            {
              "text": "Oui, c'est la dernière adresse disponible du réseau",
              "correct": false,
              "feedback": "Erreur : cette adresse est précisément l'une des deux réservées\ndu réseau.\n"
            },
            {
              "text": "Non, les adresses commençant par `192.168` sont réservées à Internet",
              "correct": false,
              "feedback": "Erreur : `192.168` est au contraire réservé aux réseaux locaux.\n"
            },
            {
              "text": "Oui, toute adresse du réseau peut aller à une machine",
              "correct": false,
              "feedback": "Erreur : deux adresses par réseau sont toujours réservées.\n"
            }
          ],
          "explanation": "Un réseau `/24` offre $256$ motifs mais $254$ adresses de machine :\nla première et la dernière ont un rôle à part."
        },
        {
          "statement": "Dans le réseau `192.168.1.0/24`, peut-on attribuer l'adresse\n`192.168.1.0` à un ordinateur ?",
          "options": [
            {
              "text": "Non, c'est l'adresse du réseau lui-même, réservée",
              "correct": true,
              "feedback": "Bonne réponse : dans tout réseau, la première adresse désigne\nle réseau et la dernière sert à la diffusion ; aucune des deux\nne va à une machine. Restent $254$ adresses attribuables.\n"
            },
            {
              "text": "Oui, c'est la première adresse disponible du réseau",
              "correct": false,
              "feedback": "Erreur : cette adresse est précisément l'une des deux réservées\ndu réseau.\n"
            },
            {
              "text": "Non, les adresses commençant par `192.168` sont réservées à Internet",
              "correct": false,
              "feedback": "Erreur : `192.168` est au contraire réservé aux réseaux locaux.\n"
            },
            {
              "text": "Oui, toute adresse du réseau peut aller à une machine",
              "correct": false,
              "feedback": "Erreur : deux adresses par réseau sont toujours réservées.\n"
            }
          ],
          "explanation": "Un réseau `/24` offre $256$ motifs mais $254$ adresses de machine :\nla première et la dernière ont un rôle à part."
        }
      ]
    }
  ]
}