{
  "chapter": {
    "id": "reseaux",
    "level": "terminale",
    "theme": "Architectures matérielles, systèmes d'exploitation et réseaux",
    "title": "Réseaux et routage",
    "description": "Modèle TCP/IP, couches du réseau, adresses IP et masques,\nroutage, protocoles de transport (TCP, UDP), services\napplicatifs (HTTP, DNS), notions de sécurité (HTTPS, TLS).",
    "prerequisites": [],
    "references": []
  },
  "questions": [
    {
      "id": "q01",
      "difficulty": 1,
      "skills": [
        "tcp-ip",
        "modele"
      ],
      "title": "Modèle TCP/IP",
      "statement": "Combien de couches comporte le modèle **TCP/IP** ?",
      "options": [
        {
          "text": "$2$ couches",
          "correct": false,
          "feedback": "Erreur : c'est trop peu pour décrire la richesse du\nréseau Internet.\n"
        },
        {
          "text": "$4$ couches",
          "correct": true,
          "feedback": "Bonne réponse : le modèle TCP/IP usuel comporte quatre\ncouches : accès réseau (ou liaison), Internet (réseau),\ntransport, application. C'est une simplification du\nmodèle OSI à sept couches.\n"
        },
        {
          "text": "$5$ couches",
          "correct": false,
          "feedback": "Erreur : certaines présentations distinguent une couche\nphysique en plus, mais le modèle TCP/IP de référence\nen a quatre.\n"
        },
        {
          "text": "$7$ couches",
          "correct": false,
          "feedback": "Erreur : c'est le modèle OSI (théorique). Le modèle\nTCP/IP, plus pragmatique et effectivement utilisé sur\nInternet, n'en a que quatre.\n"
        }
      ],
      "explanation": "Les quatre couches du modèle TCP/IP, du bas vers le haut :\n**Accès réseau** (Ethernet, Wi-Fi), **Internet** (IP),\n**Transport** (TCP, UDP), **Application** (HTTP, DNS, etc.)."
    },
    {
      "id": "q02",
      "difficulty": 1,
      "skills": [
        "ip",
        "definition"
      ],
      "title": "Rôle d'une adresse IP",
      "statement": "À quoi sert une **adresse IP** ?",
      "options": [
        {
          "text": "À stocker des fichiers",
          "correct": false,
          "feedback": "Erreur : aucun rapport. Une IP est une adresse, pas un\nespace de stockage.\n"
        },
        {
          "text": "À chiffrer les données",
          "correct": false,
          "feedback": "Erreur : le chiffrement est le rôle de protocoles\ncomme TLS, pas d'une adresse IP.\n"
        },
        {
          "text": "À identifier de manière unique un appareil sur un réseau",
          "correct": true,
          "feedback": "Bonne réponse : une adresse IP identifie une machine\n(ou plus précisément une interface réseau) sur un\nréseau IP. Sur Internet, elle doit être unique au\nniveau global.\n"
        },
        {
          "text": "À sécuriser les communications",
          "correct": false,
          "feedback": "Erreur : la sécurité est assurée par d'autres\nmécanismes (TLS, HTTPS). L'IP est neutre sur le plan\nde la sécurité.\n"
        }
      ],
      "explanation": "Deux versions principales : IPv$4$ (sur $32$ bits, environ\n$4 \\cdot 10^9$ adresses, déjà saturé) et IPv$6$ (sur $128$\nbits, $3{,}4 \\cdot 10^{38}$ adresses, abondance pour des\nsiècles)."
    },
    {
      "id": "q03",
      "difficulty": 1,
      "skills": [
        "ipv4",
        "format"
      ],
      "title": "Format d'une adresse IPv4",
      "statement": "Quel est le format d'écriture standard d'une adresse IPv$4$ ?",
      "options": [
        {
          "text": "Huit groupes hexadécimaux séparés par des deux-points",
          "correct": false,
          "feedback": "Erreur : c'est le format d'IPv$6$, pas d'IPv$4$.\n"
        },
        {
          "text": "Six groupes hexadécimaux séparés par des deux-points",
          "correct": false,
          "feedback": "Erreur : c'est plutôt le format des adresses MAC\n($6$ octets en hexadécimal). Les adresses MAC ne sont\npas des IP.\n"
        },
        {
          "text": "Un nombre décimal très long",
          "correct": false,
          "feedback": "Erreur : techniquement, on peut représenter une IP\ncomme un seul entier $32$ bits, mais ce n'est pas la\nnotation standard. La notation pointée est universelle.\n"
        },
        {
          "text": "Quatre nombres entre $0$ et $255$ séparés par des points",
          "correct": true,
          "feedback": "Bonne réponse : chaque nombre représente un octet\n($8$ bits, valeurs $0$ à $255$). Une adresse IPv$4$\nfait donc $32$ bits ($4$ octets).\n"
        }
      ],
      "explanation": "Exemple : `192.168.1.42` est une IPv$4$. Chaque nombre\ntient sur un octet, soit $32$ bits au total. Pour la\nmaison, les adresses du réseau privé commencent par\n`192.168.`, `10.`, ou `172.16.` à `172.31.`."
    },
    {
      "id": "q04",
      "difficulty": 1,
      "skills": [
        "tcp",
        "fiabilite"
      ],
      "title": "Caractéristique du protocole TCP",
      "statement": "Quelle est la caractéristique principale du protocole **TCP** ?",
      "options": [
        {
          "text": "Il chiffre automatiquement toutes les communications",
          "correct": false,
          "feedback": "Erreur : le chiffrement est ajouté par TLS (HTTPS).\nTCP transporte les données telles quelles.\n"
        },
        {
          "text": "Il fonctionne uniquement en local (pas sur Internet)",
          "correct": false,
          "feedback": "Erreur : TCP est le protocole de transport\n**principal** sur Internet, justement.\n"
        },
        {
          "text": "Il garantit une transmission fiable et ordonnée des données",
          "correct": true,
          "feedback": "Bonne réponse : TCP assure que les paquets arrivent à\ndestination, dans le bon ordre, sans duplication. En\ncas de perte, il retransmet automatiquement.\n"
        },
        {
          "text": "Il transmet les paquets sans aucun contrôle",
          "correct": false,
          "feedback": "Erreur : c'est plutôt le caractère d'UDP. TCP fait\nbeaucoup de contrôles (acquittement, retransmission,\ncontrôle de flux).\n"
        }
      ],
      "explanation": "TCP est utilisé pour les applications nécessitant la\nfiabilité : web (HTTP), email, transfert de fichiers\n(FTP). L'ordre et l'intégrité y sont essentiels."
    },
    {
      "id": "q05",
      "difficulty": 1,
      "skills": [
        "udp",
        "definition"
      ],
      "title": "Caractéristique du protocole UDP",
      "statement": "En quoi le protocole **UDP** diffère-t-il de TCP ?",
      "options": [
        {
          "text": "UDP est plus lent que TCP mais plus sûr",
          "correct": false,
          "feedback": "Erreur : c'est l'inverse. UDP est plus rapide\n(moins de surcoût) mais moins fiable.\n"
        },
        {
          "text": "UDP n'a pas de mécanisme de retransmission ni de garantie d'ordre, il est plus rapide mais peu fiable",
          "correct": true,
          "feedback": "Bonne réponse : UDP envoie les paquets sans attendre\nd'accusé de réception. Si un paquet est perdu, tant\npis. C'est utile pour des applications où la latence\ncompte plus que la fiabilité (jeux en ligne, voix sur\nIP, streaming vidéo).\n"
        },
        {
          "text": "UDP ne fonctionne que sur les réseaux locaux",
          "correct": false,
          "feedback": "Erreur : UDP fonctionne aussi bien sur Internet que\nsur un LAN. La différence avec TCP est sémantique,\npas géographique.\n"
        },
        {
          "text": "UDP garantit l'ordre des paquets mais pas leur intégrité",
          "correct": false,
          "feedback": "Erreur : UDP ne garantit ni l'ordre ni la\nretransmission. Il est strictement plus simple que TCP.\n"
        }
      ],
      "explanation": "UDP : pas d'établissement de connexion, pas\nd'acquittement. C'est utilisé quand quelques pertes sont\ntolérables : DNS, NTP, jeux en ligne, voix sur IP."
    },
    {
      "id": "q06",
      "difficulty": 1,
      "skills": [
        "dns"
      ],
      "title": "Rôle du DNS",
      "statement": "À quoi sert le protocole **DNS** ?",
      "options": [
        {
          "text": "À transférer des fichiers entre ordinateurs",
          "correct": false,
          "feedback": "Erreur : c'est le rôle de FTP, SFTP ou HTTP, pas de\nDNS.\n"
        },
        {
          "text": "À chiffrer les données échangées sur Internet",
          "correct": false,
          "feedback": "Erreur : c'est le rôle de TLS/HTTPS, pas du DNS.\n"
        },
        {
          "text": "À filtrer les sites malveillants",
          "correct": false,
          "feedback": "Erreur : ce n'est pas la fonction principale du DNS.\nCertains DNS publics (comme Quad9) ajoutent ce service\nen bonus, mais ce n'est pas le rôle natif.\n"
        },
        {
          "text": "À traduire les noms de domaines (par exemple `wikipedia.org`) en adresses IP",
          "correct": true,
          "feedback": "Bonne réponse : DNS est l'« annuaire » d'Internet. Sans\nlui, il faudrait retenir des suites de chiffres pour\nchaque site. Le DNS est interrogé en quelques\nmillisecondes à chaque connexion à un site.\n"
        }
      ],
      "explanation": "DNS = Domain Name System. Sans DNS, taper `wikipedia.org`\nne mènerait nulle part, il faudrait connaître l'IP\ndirectement. Le DNS est un service hiérarchique\nmondialement distribué."
    },
    {
      "id": "q07",
      "difficulty": 1,
      "skills": [
        "http",
        "definition"
      ],
      "title": "Rôle de HTTP",
      "statement": "Que désigne le protocole **HTTP** ?",
      "options": [
        {
          "text": "Hyper Text Tag Protocol",
          "correct": false,
          "feedback": "Erreur : sigle inventé.\n"
        },
        {
          "text": "HyperText Transfer Protocol, le protocole d'échange entre navigateur et serveur web",
          "correct": true,
          "feedback": "Bonne réponse : HTTP transporte les requêtes du\nnavigateur (`GET /index.html`) et les réponses du\nserveur (le code HTML, les images, etc.).\n"
        },
        {
          "text": "High Throughput Transmission Protocol",
          "correct": false,
          "feedback": "Erreur : sigle inventé.\n"
        },
        {
          "text": "Home Transfer Tool Protocol",
          "correct": false,
          "feedback": "Erreur : sigle inventé.\n"
        }
      ],
      "explanation": "HTTP fonctionne en mode requête/réponse, sans état\n(chaque requête est indépendante). Sa version sécurisée\nest HTTPS (HTTP + TLS), désormais standard sur le Web."
    },
    {
      "id": "q08",
      "difficulty": 1,
      "skills": [
        "routage",
        "definition"
      ],
      "title": "Rôle d'un routeur",
      "statement": "Quel est le rôle principal d'un **routeur** sur un réseau ?",
      "options": [
        {
          "text": "Chiffrer les communications",
          "correct": false,
          "feedback": "Erreur : ce n'est pas le rôle natif d'un routeur, même\nsi certains routeurs implémentent du VPN.\n"
        },
        {
          "text": "Stocker les fichiers partagés sur le réseau",
          "correct": false,
          "feedback": "Erreur : c'est le rôle d'un serveur de fichiers, pas\nd'un routeur.\n"
        },
        {
          "text": "Servir les pages web aux navigateurs",
          "correct": false,
          "feedback": "Erreur : c'est le rôle d'un serveur web (Apache,\nnginx, etc.), pas d'un routeur.\n"
        },
        {
          "text": "Transmettre les paquets entre différents réseaux, en choisissant le meilleur chemin",
          "correct": true,
          "feedback": "Bonne réponse : un routeur examine l'adresse IP de\ndestination et consulte sa **table de routage** pour\ndéterminer par quelle interface envoyer le paquet.\n"
        }
      ],
      "explanation": "Internet est un réseau de réseaux. Les routeurs en sont\nles nœuds intermédiaires : ils relient les sous-réseaux\nentre eux et acheminent les paquets de proche en proche\nvers leur destination."
    },
    {
      "id": "q09",
      "difficulty": 1,
      "skills": [
        "paquet"
      ],
      "title": "Notion de paquet",
      "statement": "Pourquoi les données échangées sur Internet sont-elles\ndécoupées en **paquets** ?",
      "options": [
        {
          "text": "Pour augmenter la vitesse de transmission au-delà de la limite physique du câble",
          "correct": false,
          "feedback": "Erreur : la vitesse est limitée par le matériel. Le\npaquetage n'augmente pas la bande passante intrinsèque.\n"
        },
        {
          "text": "Parce que les routeurs ne peuvent traiter que de petits volumes",
          "correct": false,
          "feedback": "Erreur : les routeurs sont conçus pour traiter\nbeaucoup de paquets, mais en réalité c'est le concept\narchitectural qui motive la fragmentation.\n"
        },
        {
          "text": "Pour permettre à plusieurs communications de partager le même réseau, et pour limiter l'impact d'une perte ou d'un retard",
          "correct": true,
          "feedback": "Bonne réponse : la commutation de paquets permet à\nplusieurs flux de coexister sur les mêmes liens, et\nen cas de perte d'un paquet, on ne retransmet que\nlui (pas tout le message).\n"
        },
        {
          "text": "Pour respecter une convention de poésie en informatique",
          "correct": false,
          "feedback": "Erreur : pas de motivation poétique, c'est purement\ntechnique.\n"
        }
      ],
      "explanation": "Cette idée fondamentale (Paul Baran, $1960$) a permis le\ndéveloppement d'Internet. Les paquets peuvent prendre des\nchemins différents et arriver dans le désordre, TCP les\nréordonne au final."
    },
    {
      "id": "q10",
      "difficulty": 1,
      "skills": [
        "https",
        "tls"
      ],
      "title": "Différence HTTP / HTTPS",
      "statement": "Quelle est la différence entre HTTP et HTTPS ?",
      "options": [
        {
          "text": "HTTPS est utilisé uniquement pour le e-commerce",
          "correct": false,
          "feedback": "Erreur : HTTPS est désormais utilisé partout, y compris\npour la simple consultation de pages publiques.\n"
        },
        {
          "text": "HTTPS chiffre les communications grâce à TLS, garantissant confidentialité et authenticité",
          "correct": true,
          "feedback": "Bonne réponse : HTTPS = HTTP + TLS (anciennement SSL).\nTLS chiffre les données en transit et authentifie le\nserveur (via un certificat). C'est devenu le standard\naujourd'hui.\n"
        },
        {
          "text": "HTTPS fonctionne sans IP",
          "correct": false,
          "feedback": "Erreur : HTTPS repose sur les mêmes protocoles\nréseau (IP, TCP) que HTTP. Seule la sécurité change.\n"
        },
        {
          "text": "HTTPS est plus rapide",
          "correct": false,
          "feedback": "Erreur : HTTPS est légèrement plus lent (à cause du\nchiffrement), même si la différence est négligeable\naujourd'hui. Le bénéfice est la sécurité.\n"
        }
      ],
      "explanation": "Depuis $2018$, les navigateurs marquent les sites HTTP\n(sans S) comme « Non sécurisé ». Le déploiement gratuit\nde certificats par Let's Encrypt a généralisé HTTPS."
    },
    {
      "id": "q11",
      "difficulty": 2,
      "skills": [
        "masque-reseau"
      ],
      "title": "Masque de sous-réseau",
      "statement": "Que représente le masque de sous-réseau `255.255.255.0` ?",
      "options": [
        {
          "text": "Une adresse IP particulière",
          "correct": false,
          "feedback": "Erreur : un masque sert à séparer la partie réseau\nde la partie hôte d'une adresse IP. Ce n'est pas une\nadresse à part entière.\n"
        },
        {
          "text": "Les $24$ premiers bits désignent le réseau, les $8$ derniers désignent l'hôte au sein du réseau",
          "correct": true,
          "feedback": "Bonne réponse : `255.255.255.0` correspond à $24$ bits\nà $1$ et $8$ bits à $0$. Les bits à $1$ désignent la\npartie réseau, les bits à $0$ la partie machine. Avec\n$8$ bits pour les machines, on peut adresser jusqu'à\n$254$ hôtes ($2^8 - 2$, en retirant l'adresse réseau\net l'adresse de diffusion).\n"
        },
        {
          "text": "Un identifiant de routeur",
          "correct": false,
          "feedback": "Erreur : un masque est un motif binaire, pas un\nidentifiant matériel.\n"
        },
        {
          "text": "La quantité maximale de bande passante autorisée",
          "correct": false,
          "feedback": "Erreur : le masque n'a rien à voir avec la bande\npassante.\n"
        }
      ],
      "explanation": "Notation alternative dite **CIDR** : `192.168.1.0/24`\ndésigne un réseau avec un masque de $24$ bits. Très\nutilisée en pratique pour sa concision."
    },
    {
      "id": "q12",
      "difficulty": 2,
      "skills": [
        "reseau-local"
      ],
      "title": "Adresses privées",
      "statement": "L'adresse `192.168.1.10` est-elle une adresse Internet\npublique ?",
      "options": [
        {
          "text": "Oui, c'est une adresse Internet ordinaire",
          "correct": false,
          "feedback": "Erreur : la plage `192.168.0.0/16` est réservée aux\nréseaux **privés** (intranets). Elle n'est pas\nroutable sur Internet public.\n"
        },
        {
          "text": "Cela dépend du fournisseur d'accès",
          "correct": false,
          "feedback": "Erreur : le statut public/privé est défini par la\nspécification (RFC $1918$), pas par le FAI.\n"
        },
        {
          "text": "Non, elle appartient à une plage réservée aux réseaux privés",
          "correct": true,
          "feedback": "Bonne réponse : la plage `192.168.0.0/16` (avec\n`10.0.0.0/8` et `172.16.0.0/12`) est réservée aux\nréseaux privés (RFC $1918$). Ces adresses sont\nréutilisables localement et ne sont pas routables\nsur Internet public.\n"
        },
        {
          "text": "C'est une adresse IPv$6$",
          "correct": false,
          "feedback": "Erreur : la notation décimale pointée à quatre groupes\nest typique d'IPv$4$. IPv$6$ utilise une notation\nhexadécimale différente.\n"
        }
      ],
      "explanation": "Pour communiquer avec Internet depuis un réseau privé,\nle routeur effectue une **traduction d'adresse** (NAT) :\nil remplace l'IP privée locale par son IP publique\nunique. C'est ainsi que des millions de réseaux locaux\npartagent quelques milliards d'IP publiques."
    },
    {
      "id": "q13",
      "difficulty": 2,
      "skills": [
        "dns",
        "fonctionnement"
      ],
      "title": "Résolution DNS",
      "statement": "Lorsque vous tapez `www.example.com` dans votre navigateur,\nqu'est-ce qui se passe en premier ?",
      "options": [
        {
          "text": "Le navigateur effectue une requête DNS pour obtenir l'adresse IP correspondante",
          "correct": true,
          "feedback": "Bonne réponse : la première étape est toujours la\nrésolution DNS. Sans elle, le navigateur ne saurait\npas vers quelle adresse envoyer ses paquets TCP.\n"
        },
        {
          "text": "Le routeur lit le contenu HTML",
          "correct": false,
          "feedback": "Erreur : le routeur ne décode pas le contenu HTTP. Il\nne fait que router les paquets IP.\n"
        },
        {
          "text": "Le navigateur établit une connexion TCP avec `example.com` directement",
          "correct": false,
          "feedback": "Erreur : pour établir une connexion TCP, il faut\nd'abord connaître l'**adresse IP** correspondante,\nce qui est résolu par DNS.\n"
        },
        {
          "text": "Le navigateur envoie un email au serveur",
          "correct": false,
          "feedback": "Erreur : aucune communication par email dans le\nprocessus de chargement d'une page web.\n"
        }
      ],
      "explanation": "Une fois l'IP obtenue, le navigateur ouvre une connexion\nTCP (port $443$ pour HTTPS), négocie TLS, puis envoie\nla requête HTTP. La résolution DNS est généralement\nmise en cache pour accélérer les visites suivantes."
    },
    {
      "id": "q14",
      "difficulty": 2,
      "skills": [
        "tcp",
        "etablissement"
      ],
      "title": "Établissement d'une connexion TCP",
      "statement": "Combien d'échanges de paquets sont nécessaires pour\nétablir une connexion TCP entre deux machines ?",
      "options": [
        {
          "text": "$7$ (un par couche du modèle OSI)",
          "correct": false,
          "feedback": "Erreur : aucun rapport entre nombre d'échanges TCP\net nombre de couches OSI.\n"
        },
        {
          "text": "Aucun, TCP n'a pas besoin d'établir de connexion",
          "correct": false,
          "feedback": "Erreur : c'est UDP qui n'établit pas de connexion.\nTCP est par définition orienté connexion.\n"
        },
        {
          "text": "$1$ (un seul aller)",
          "correct": false,
          "feedback": "Erreur : un seul échange n'est pas suffisant pour\nsynchroniser les deux extrémités. TCP impose une\nphase d'établissement plus formelle.\n"
        },
        {
          "text": "$3$ (le *three-way handshake* : SYN, SYN-ACK, ACK)",
          "correct": true,
          "feedback": "Bonne réponse : c'est le célèbre *three-way handshake*.\nLe client envoie SYN, le serveur répond SYN+ACK, le\nclient confirme avec ACK. La connexion est alors\nétablie pour les deux sens.\n"
        }
      ],
      "explanation": "Cette phase d'établissement est aussi appelée\n« ouverture en trois temps ». TCP ferme aussi\nproprement la connexion par un échange de quatre\npaquets (FIN/ACK des deux côtés)."
    },
    {
      "id": "q15",
      "difficulty": 2,
      "skills": [
        "port"
      ],
      "title": "Numéros de port",
      "statement": "À quoi sert un **numéro de port** dans une communication\nréseau ?",
      "options": [
        {
          "text": "À chiffrer les données",
          "correct": false,
          "feedback": "Erreur : un numéro de port n'a pas de fonction de\nsécurité.\n"
        },
        {
          "text": "À identifier une machine sur le réseau",
          "correct": false,
          "feedback": "Erreur : c'est le rôle de l'adresse IP. Le port\nidentifie le **service** ou l'**application** sur\ncette machine.\n"
        },
        {
          "text": "À mesurer la vitesse de la connexion",
          "correct": false,
          "feedback": "Erreur : aucun rapport entre numéro de port et bande\npassante.\n"
        },
        {
          "text": "À identifier un service ou une application spécifique sur une machine donnée",
          "correct": true,
          "feedback": "Bonne réponse : le couple `(IP, port)` désigne une\nextrémité de communication précise. Plusieurs\nservices peuvent coexister sur la même machine,\nchacun écoutant sur un port différent.\n"
        }
      ],
      "explanation": "Ports célèbres : $80$ (HTTP), $443$ (HTTPS), $25$ (SMTP,\nmail sortant), $53$ (DNS), $22$ (SSH). Les ports en\ndessous de $1024$ sont dits « bien connus » et nécessitent\ndes privilèges administrateur pour être ouverts."
    },
    {
      "id": "q16",
      "difficulty": 2,
      "skills": [
        "routage",
        "table"
      ],
      "title": "Table de routage",
      "statement": "Que contient la **table de routage** d'un routeur ?",
      "options": [
        {
          "text": "Les fichiers cachés sur le réseau",
          "correct": false,
          "feedback": "La notion de « fichier\ncaché » relève des systèmes\nde fichiers, pas du routage.\nUn routeur ne manipule pas\nde fichiers, il achemine\ndes paquets IP.\n"
        },
        {
          "text": "Les correspondances entre plages d'adresses IP de destination et interfaces de sortie (avec parfois la passerelle suivante)",
          "correct": true,
          "feedback": "Bonne réponse : pour chaque paquet, le routeur cherche\ndans sa table la route correspondant à l'adresse IP\nde destination. La table peut être configurée\nmanuellement (routage statique) ou alimentée par des\nprotocoles dynamiques (RIP, OSPF, BGP).\n"
        },
        {
          "text": "La liste des sites web autorisés",
          "correct": false,
          "feedback": "Erreur : un routeur ne filtre pas par site. C'est\nle rôle d'un pare-feu ou d'un proxy.\n"
        },
        {
          "text": "La liste des utilisateurs connectés",
          "correct": false,
          "feedback": "Erreur : un routeur n'a pas la notion d'utilisateur.\nIl ne traite que des paquets IP.\n"
        }
      ],
      "explanation": "Le **routage** est la décision « où envoyer ce paquet\nmaintenant ». Sur Internet, les paquets traversent\ntypiquement entre $10$ et $30$ routeurs avant\nd'atteindre leur destination."
    },
    {
      "id": "q17",
      "difficulty": 2,
      "skills": [
        "tcp-vs-udp"
      ],
      "title": "Choisir entre TCP et UDP",
      "statement": "Pour un service de **streaming vidéo en direct**, quel\nprotocole de transport est généralement préférable ?",
      "options": [
        {
          "text": "SSH, pour la sécurité",
          "correct": false,
          "feedback": "Erreur : SSH est un protocole de connexion sécurisée\nen mode terminal, pas adapté au streaming.\n"
        },
        {
          "text": "TCP, pour garantir l'absence de perte",
          "correct": false,
          "feedback": "Erreur : la garantie de TCP a un coût en latence\n(retransmissions). Pour le direct, mieux vaut\naccepter quelques pertes que d'introduire des délais.\n"
        },
        {
          "text": "UDP, pour minimiser la latence et tolérer quelques pertes",
          "correct": true,
          "feedback": "Bonne réponse : en streaming direct, mieux vaut\nafficher l'image suivante avec un trou minime que\nd'attendre la retransmission d'un paquet perdu, ce\nqui figerait l'image. UDP (souvent au-dessus de\nRTP) est privilégié.\n"
        },
        {
          "text": "HTTP, pour la lisibilité",
          "correct": false,
          "feedback": "Erreur : HTTP est un protocole applicatif, pas de\ntransport. Il s'appuie d'ailleurs sur TCP. La\nquestion porte sur la couche transport.\n"
        }
      ],
      "explanation": "Inversement, pour le téléchargement d'un fichier ou la\nconsultation d'un site web, TCP est essentiel : on ne\nveut pas qu'un caractère manque dans le code source HTML\nou dans une archive ZIP."
    },
    {
      "id": "q18",
      "difficulty": 2,
      "skills": [
        "encapsulation"
      ],
      "title": "Encapsulation",
      "statement": "Lors de l'envoi d'une requête HTTP, comment les couches du\nmodèle TCP/IP **encapsulent**-elles les données ?",
      "options": [
        {
          "text": "Toutes les données sont compressées par la couche application",
          "correct": false,
          "feedback": "Erreur : la compression peut être ajoutée mais ce\nn'est pas le mécanisme d'encapsulation.\n"
        },
        {
          "text": "Chaque couche ajoute son en-tête autour des données reçues de la couche supérieure",
          "correct": true,
          "feedback": "Bonne réponse : la couche application crée le message\nHTTP, TCP l'enveloppe avec son en-tête (port,\nnuméro de séquence), IP ajoute son en-tête (adresses\nIP), et la couche liaison ajoute son en-tête (MAC,\ncontrôle d'erreur). À la réception, c'est l'inverse\n(désencapsulation).\n"
        },
        {
          "text": "Chaque couche supprime des données pour gagner de la place",
          "correct": false,
          "feedback": "Erreur : les couches **ajoutent** des en-têtes, elles\nne suppriment rien.\n"
        },
        {
          "text": "Les couches communiquent indépendamment, sans transformer les données",
          "correct": false,
          "feedback": "Erreur : justement, l'encapsulation ajoute des\nen-têtes successifs.\n"
        }
      ],
      "explanation": "L'encapsulation est la base du modèle en couches :\nchaque couche ne se préoccupe que de son rôle, sans\nsavoir ce qu'il y a dans les données « au-dessus ». À\nl'arrivée, chaque couche traite et retire son en-tête,\ntransmettant le contenu à la couche suivante."
    },
    {
      "id": "q19",
      "difficulty": 2,
      "skills": [
        "adressage-mac"
      ],
      "title": "Adresse MAC vs adresse IP",
      "statement": "Quelle est la différence entre une adresse **MAC** et une\nadresse **IP** ?",
      "options": [
        {
          "text": "Les deux désignent la même chose, dans des notations différentes",
          "correct": false,
          "feedback": "Erreur : ce sont des adresses bien différentes,\nopérant à des couches distinctes.\n"
        },
        {
          "text": "L'adresse MAC est utilisée sur Internet, l'IP est uniquement locale",
          "correct": false,
          "feedback": "Erreur : c'est l'inverse. La MAC est utilisée\nlocalement (couche liaison), et n'est pas routée sur\nInternet. L'IP est routable.\n"
        },
        {
          "text": "L'adresse MAC est une version cryptée de l'IP",
          "correct": false,
          "feedback": "Erreur : aucun rapport entre les deux. Les MAC sont\nattribuées par les fabricants, les IP par les\ngestionnaires de réseaux.\n"
        },
        {
          "text": "L'adresse MAC est physique et unique (gravée dans la carte réseau) ; l'adresse IP est logique et attribuée par le réseau",
          "correct": true,
          "feedback": "Bonne réponse : la MAC ($48$ bits, écrite en\nhexadécimal) identifie le matériel, elle change si\non change de carte réseau. L'IP est attribuée par le\nréseau et change quand on change de réseau.\n"
        }
      ],
      "explanation": "Sur un réseau local, le protocole ARP fait la\ncorrespondance IP ↔ MAC. À chaque saut entre routeurs,\nl'IP source et destination restent les mêmes, mais les\nadresses MAC changent (celles du routeur courant et du\nsuivant)."
    },
    {
      "id": "q20",
      "difficulty": 2,
      "skills": [
        "protocoles",
        "web"
      ],
      "title": "Pile de protocoles d'une connexion HTTPS",
      "statement": "Lors d'une consultation d'un site en HTTPS, quelle est\nl'ordre **de bas en haut** des principaux protocoles\nutilisés ?",
      "options": [
        {
          "text": "HTTP, IP, TCP, MAC",
          "correct": false,
          "feedback": "Erreur : ordre désorganisé. La pile va de la\nphysique vers l'applicatif.\n"
        },
        {
          "text": "Ethernet, IP, TCP, TLS, HTTP",
          "correct": true,
          "feedback": "Bonne réponse : couche liaison (Ethernet ou Wi-Fi),\ncouche réseau (IP), couche transport (TCP), couche\nsécurité (TLS), couche application (HTTP). La\nsécurité TLS s'insère entre TCP et HTTP.\n"
        },
        {
          "text": "HTTP, TCP, IP, Ethernet",
          "correct": false,
          "feedback": "Erreur : ordre de **haut en bas** ici. La question\ndemande de bas en haut.\n"
        },
        {
          "text": "DNS, Ethernet, IP, HTTP",
          "correct": false,
          "feedback": "Erreur : ordre incorrect. DNS est un service\napplicatif (au-dessus), pas un protocole de couche\nbasse.\n"
        }
      ],
      "explanation": "Cette pile correspond aux quatre/cinq couches du modèle\nTCP/IP. Chaque protocole est responsable d'un aspect\nbien défini : transmission physique, adressage,\ntransport fiable, sécurité, application."
    },
    {
      "id": "q21",
      "difficulty": 3,
      "skills": [
        "routage",
        "decision"
      ],
      "title": "Choix de route",
      "statement": "Lorsqu'un paquet doit être envoyé à `8.8.8.8` (DNS de\nGoogle), comment le routeur de votre maison décide-t-il où\nl'envoyer ?",
      "options": [
        {
          "text": "Il consulte sa table de routage et utilise la route par défaut (vers la passerelle du FAI)",
          "correct": true,
          "feedback": "Bonne réponse : pour des destinations qui ne sont pas\ndans le réseau local, le routeur utilise la « route\npar défaut » (`0.0.0.0/0`), qui pointe vers le\nmodem/box du FAI. Le paquet remonte ensuite la\nhiérarchie des routeurs jusqu'à atteindre Google.\n"
        },
        {
          "text": "Il chiffre le paquet et le stocke localement",
          "correct": false,
          "feedback": "Erreur : un routeur n'a pas vocation à stocker les\npaquets à long terme.\n"
        },
        {
          "text": "Il refuse les paquets qui ne sont pas pour le réseau local",
          "correct": false,
          "feedback": "Erreur : le rôle d'un routeur est précisément de\npermettre l'accès aux réseaux distants.\n"
        },
        {
          "text": "Il envoie le paquet à toutes les machines du réseau",
          "correct": false,
          "feedback": "Erreur : ce serait de la diffusion générale,\nce qui ne se fait pas pour des paquets de\npoint à point comme ici.\n"
        }
      ],
      "explanation": "Le mécanisme dit de la correspondance par\npréfixe le plus long permet au routeur de\nchoisir la route la plus spécifique qui\ncorrespond à l'adresse de destination. Si aucune\nroute spécifique n'est trouvée, on utilise la\nroute par défaut."
    },
    {
      "id": "q22",
      "difficulty": 3,
      "skills": [
        "tls",
        "certificat"
      ],
      "title": "Rôle du certificat TLS",
      "statement": "À quoi sert le **certificat TLS** présenté par un serveur\nweb lors d'une connexion HTTPS ?",
      "options": [
        {
          "text": "À accélérer la connexion",
          "correct": false,
          "feedback": "Erreur : le TLS introduit au contraire un léger\nsurcoût initial. Le bénéfice est la sécurité.\n"
        },
        {
          "text": "À authentifier le serveur, prouver que le client parle bien au site qu'il croit, et non à un imposteur",
          "correct": true,
          "feedback": "Bonne réponse : le certificat est signé par une\nautorité de certification reconnue. Le navigateur\nvérifie cette signature pour s'assurer que le\nserveur est légitime, ce qui empêche les attaques\ndites *man-in-the-middle*.\n"
        },
        {
          "text": "À chiffrer les données échangées",
          "correct": false,
          "feedback": "Erreur : le chiffrement utilise des clés négociées\nvia le certificat, mais le certificat lui-même\nn'est pas la clé de chiffrement. Son rôle est\nd'**authentifier** le serveur.\n"
        },
        {
          "text": "À ajouter une publicité officielle au site",
          "correct": false,
          "feedback": "Un certificat TLS ne sert\npas à des fins commerciales\nou publicitaires. C'est un\ndispositif cryptographique\nd'authentification, pas un\nlabel marketing.\n"
        }
      ],
      "explanation": "Sans certificat, on ne saurait pas si on parle au vrai\n`mabanque.fr` ou à un faux site. Le certificat\ncontient la clé publique du serveur et son identité,\nvérifiées par une chaîne de confiance jusqu'à des\nautorités racines pré-installées dans le système."
    },
    {
      "id": "q23",
      "difficulty": 3,
      "skills": [
        "latence-debit"
      ],
      "title": "Latence vs débit",
      "statement": "Quelle est la différence entre **latence** et **débit** sur\nun réseau ?",
      "options": [
        {
          "text": "Aucune, les deux termes sont synonymes",
          "correct": false,
          "feedback": "Erreur : ce sont deux notions distinctes et\nindépendantes.\n"
        },
        {
          "text": "La latence est le temps d'un aller-retour ; le débit est la quantité de données par seconde",
          "correct": true,
          "feedback": "Bonne réponse : on peut avoir un haut débit avec une\nlatence élevée (par exemple, avec un satellite). À\nl'inverse, une connexion très réactive mais peu\ndébitante (un câble local lent). Les deux comptent\nselon l'usage.\n"
        },
        {
          "text": "La latence ne concerne que les vidéos",
          "correct": false,
          "feedback": "Erreur : la latence concerne toute communication.\nElle est cruciale pour les jeux, la voix sur IP, les\nrequêtes interactives.\n"
        },
        {
          "text": "La latence est en bits par seconde, le débit en millisecondes",
          "correct": false,
          "feedback": "Erreur : c'est l'inverse. La latence se mesure en\ntemps (millisecondes), le débit en données par\ntemps (Mbit/s).\n"
        }
      ],
      "explanation": "Pour télécharger un gros fichier : le débit prime. Pour\njouer à un jeu en ligne ou faire un appel vidéo : la\nlatence prime. Une « bonne » connexion combine débit\nélevé et latence basse."
    },
    {
      "id": "q24",
      "difficulty": 3,
      "skills": [
        "securite-reseau"
      ],
      "title": "Limite de la sécurité réseau",
      "statement": "HTTPS chiffre les communications entre le navigateur et le\nserveur. Cela suffit-il à empêcher tout fournisseur d'accès\nInternet (FAI) de savoir quels sites vous visitez ?",
      "options": [
        {
          "text": "Oui, HTTPS empêche totalement le FAI de voir ce qui se passe",
          "correct": false,
          "feedback": "Erreur : HTTPS chiffre le **contenu**, mais pas\ntout. Le FAI voit encore certaines informations en\nclair.\n"
        },
        {
          "text": "Non, HTTPS ne sert à rien",
          "correct": false,
          "feedback": "Erreur : HTTPS est très utile (protège le contenu,\nauthentifie le serveur). Il a juste des limites.\n"
        },
        {
          "text": "Oui, à condition d'utiliser HTTP$2$",
          "correct": false,
          "feedback": "Erreur : la version du protocole HTTP n'a pas\nd'impact sur ce que le FAI voit.\n"
        },
        {
          "text": "Non, le FAI peut au minimum voir l'adresse IP et le nom de domaine du site visité (via DNS et SNI)",
          "correct": true,
          "feedback": "Bonne réponse : même avec HTTPS, le FAI observe les\nrequêtes DNS (à moins d'utiliser DoH/DoT), l'IP de\ndestination, et le nom du serveur dans l'extension\nSNI de TLS. Pour vraiment masquer, il faut un VPN ou\nTor.\n"
        }
      ],
      "explanation": "Pour réduire les fuites : DNS chiffré (DoH ou DoT), VPN\npour masquer l'IP, Tor pour anonymisation forte. La\nprotection complète exige plusieurs couches."
    },
    {
      "id": "q25",
      "difficulty": 3,
      "skills": [
        "synthese",
        "pile"
      ],
      "title": "Suivi d'un paquet de bout en bout",
      "statement": "Quand vous envoyez une requête HTTPS depuis votre\nsmartphone à un serveur à l'autre bout du monde, combien\nde **routeurs** votre paquet traverse-t-il typiquement ?",
      "options": [
        {
          "text": "Entre $10$ et $30$ routeurs, formant un chemin de proche en proche",
          "correct": true,
          "feedback": "Bonne réponse : on peut le vérifier avec la commande\n`traceroute` (ou `tracert` sous Windows). Chaque\nrouteur incrémente le compteur TTL ; quand celui-ci\natteint $0$, le paquet est jeté et un message\nd'erreur est renvoyé, ce qui permet de cartographier\nle chemin.\n"
        },
        {
          "text": "Un seul, celui de la box",
          "correct": false,
          "feedback": "Erreur : la box est juste le premier saut. Le paquet\ntraverse ensuite les routeurs du FAI, puis ceux des\nopérateurs de transit, etc.\n"
        },
        {
          "text": "Aucun, le paquet va directement à destination",
          "correct": false,
          "feedback": "Erreur : Internet est un réseau de réseaux. Sauf cas\ntrès local, le paquet traverse de nombreux\nintermédiaires.\n"
        },
        {
          "text": "Plusieurs millions, un par utilisateur du Web",
          "correct": false,
          "feedback": "Erreur : le nombre de sauts est très inférieur. Les\nrouteurs sont organisés en hiérarchie efficace.\n"
        }
      ],
      "explanation": "Il s'agit de la beauté d'Internet : pas de chemin\npré-établi, chaque routeur prend une décision locale\nbasée sur sa table de routage. Le paquet « trouve » son\nchemin, et peut même prendre une autre route si l'une\ntombe en panne."
    },
    {
      "id": "q26",
      "difficulty": 2,
      "skills": [
        "calcul-hotes"
      ],
      "title": "Calcul du nombre d'hôtes",
      "statement": "Sur un réseau d'adresse `192.168.10.0/24` (donc avec\nun masque `255.255.255.0`), combien d'**hôtes**\nutilisables peut-on adresser ?",
      "options": [
        {
          "text": "$256$ hôtes",
          "correct": false,
          "feedback": "Erreur : avec $8$ bits pour la partie hôte, on a\n$2^8 = 256$ adresses possibles, mais deux ne sont\npas attribuables à des hôtes : l'adresse de réseau\n(`.0`) et l'adresse de diffusion (`.255`).\n"
        },
        {
          "text": "$1024$ hôtes",
          "correct": false,
          "feedback": "Erreur : ce serait pour un masque de $22$ bits\n($2^{10} - 2 = 1022$ hôtes). Avec $/24$, on a\nseulement $254$ hôtes utilisables.\n"
        },
        {
          "text": "$254$ hôtes",
          "correct": true,
          "feedback": "Bonne réponse : on a $2^8 = 256$ adresses possibles\npour les bits réservés à l'hôte, dont on retire\ndeux adresses spéciales (l'adresse de réseau\n`192.168.10.0` et l'adresse de diffusion\n`192.168.10.255`). Reste $254$ hôtes utilisables.\n"
        },
        {
          "text": "$24$ hôtes",
          "correct": false,
          "feedback": "Erreur : $24$ correspond au nombre de bits dans la\npartie réseau, pas au nombre d'hôtes utilisables.\nLe calcul à faire est $2^{32 - 24} - 2$.\n"
        }
      ],
      "explanation": "Formule générale : pour un masque de $n$ bits sur\n$32$ bits, le nombre d'hôtes utilisables est\n$2^{32 - n} - 2$. Repères : $/24$ → $254$ hôtes ;\n$/16$ → $65\\,534$ hôtes ; $/8$ → $16\\,777\\,214$\nhôtes. Les deux exceptions ($-2$) sont systématiques\nen IPv$4$."
    },
    {
      "id": "q27",
      "difficulty": 2,
      "skills": [
        "icmp",
        "diagnostic"
      ],
      "title": "Protocole ICMP et ping",
      "statement": "Quel protocole utilise la commande `ping` pour vérifier\nqu'une machine distante est joignable ?",
      "options": [
        {
          "text": "DNS",
          "correct": false,
          "feedback": "Erreur : DNS est un protocole de résolution de\nnoms, pas de diagnostic. La commande `ping` peut\nutiliser DNS pour traduire un nom en IP, mais le\ntest de connectivité lui-même se fait via ICMP.\n"
        },
        {
          "text": "HTTP",
          "correct": false,
          "feedback": "Erreur : HTTP est un protocole applicatif pour le\nweb, pas pour le diagnostic réseau. Il s'appuie\nd'ailleurs sur TCP, qui suppose une connexion\nétablie.\n"
        },
        {
          "text": "TCP",
          "correct": false,
          "feedback": "Erreur : `ping` n'établit pas de connexion TCP. Il\nrepose sur un protocole bien plus simple, dédié au\ndiagnostic, qui n'utilise ni TCP ni UDP.\n"
        },
        {
          "text": "ICMP",
          "correct": true,
          "feedback": "Bonne réponse : ICMP (*Internet Control Message\nProtocol*) est utilisé pour les messages de\ncontrôle et de diagnostic du réseau. La commande\n`ping` envoie des messages ICMP `Echo Request` et\nattend des `Echo Reply` en retour. Le temps de\nl'aller-retour donne la latence. La commande\n`traceroute` exploite aussi ICMP (TTL expiré).\n"
        }
      ],
      "explanation": "ICMP est un protocole de couche réseau (au-dessus\nd'IP, comme TCP et UDP). Il sert essentiellement au\ndiagnostic et au contrôle : signalement d'erreurs\n(destination inaccessible), réseau congestionné,\npaquet trop grand, etc. Certains administrateurs\nbloquent ICMP par sécurité, ce qui empêche le `ping`\nmais ne ferme pas l'accès aux services."
    },
    {
      "id": "q28",
      "difficulty": 2,
      "skills": [
        "ipv6"
      ],
      "title": "Avantage principal d'IPv6",
      "statement": "Quel est l'**avantage principal** d'IPv$6$ par rapport\nà IPv$4$ ?",
      "options": [
        {
          "text": "IPv$6$ est compatible avec tous les routeurs IPv$4$\nexistants, sans configuration\n",
          "correct": false,
          "feedback": "Erreur : IPv$6$ et IPv$4$ ne sont **pas**\ndirectement compatibles. Le déploiement d'IPv$6$\nse fait en parallèle d'IPv$4$ (double pile) ou\nvia des mécanismes de tunnel et de traduction.\nC'est précisément ce qui explique la lenteur de\nla transition.\n"
        },
        {
          "text": "IPv$6$ propose un espace d'adressage gigantesque\n(sur $128$ bits, soit environ $3{,}4 \\cdot 10^{38}$\nadresses) qui résout l'épuisement des adresses\nIPv$4$\n",
          "correct": true,
          "feedback": "Bonne réponse : c'est le motif premier de la\nconception d'IPv$6$. IPv$4$ ne fournit qu'environ\n$4{,}3 \\cdot 10^9$ adresses, déjà saturées depuis\nplusieurs années (d'où le déploiement massif de\nNAT). IPv$6$ offre un espace tellement vaste que\nchaque grain de sable de la planète pourrait avoir\ndes milliards d'adresses uniques. Autres avantages\nd'IPv$6$ : configuration automatique, en-tête\nsimplifié, sécurité (IPsec) intégrée.\n"
        },
        {
          "text": "IPv$6$ est plus rapide qu'IPv$4$\n",
          "correct": false,
          "feedback": "Erreur : la vitesse de transmission ne dépend pas\nde la version du protocole IP, mais des\néquipements réseau. IPv$6$ et IPv$4$ ont des\nperformances comparables.\n"
        },
        {
          "text": "IPv$6$ chiffre automatiquement les communications\n",
          "correct": false,
          "feedback": "Erreur : IPv$6$ inclut un cadre pour la sécurité\n(IPsec), mais le chiffrement n'est pas activé\nautomatiquement pour toutes les communications.\nC'est plus une option qu'un défaut.\n"
        }
      ],
      "explanation": "Format IPv$6$ : huit groupes de quatre chiffres\nhexadécimaux séparés par des deux-points\n(exemple : `2001:0db8:85a3:0000:0000:8a2e:0370:7334`).\nOn peut compresser les zéros consécutifs avec `::`.\nEn 2026, le déploiement d'IPv$6$ progresse mais\nIPv$4$ reste largement dominant en pratique."
    },
    {
      "id": "q29",
      "difficulty": 3,
      "skills": [
        "calcul-plage-ip"
      ],
      "title": "Calcul de plage d'adresses",
      "statement": "Sur un réseau d'adresse `192.168.10.0/24`,\nquelles sont la **première adresse d'hôte\nutilisable**, la **dernière**, et l'**adresse\nde diffusion** ?",
      "options": [
        {
          "text": "Première : `192.168.10.1`, dernière :\n`192.168.10.254`, diffusion :\n`192.168.10.255`\n",
          "correct": true,
          "feedback": "Bonne réponse : avec un masque $/24$,\nles $24$ premiers bits désignent le\nréseau et les $8$ derniers la partie\nhôte. Le réseau lui-même\n(`192.168.10.0`) et l'adresse de\ndiffusion (`192.168.10.255`, tous les\nbits hôte à $1$) ne sont **pas**\nattribuables à des hôtes. Restent les\nadresses de `.1` à `.254`, soit $254$\nhôtes utilisables.\n"
        },
        {
          "text": "Première : `192.168.10.0`, dernière :\n`192.168.10.255`, diffusion :\n`192.168.10.255`\n",
          "correct": false,
          "feedback": "Erreur : `192.168.10.0` est l'**adresse\ndu réseau** lui-même, qui n'est jamais\nattribuée à un hôte. La première\nadresse d'hôte utilisable est\n`192.168.10.1`. De plus, la dernière\nadresse d'hôte ne doit pas coïncider\navec l'adresse de diffusion.\n"
        },
        {
          "text": "Première : `192.168.10.1`, dernière :\n`192.168.10.255`, diffusion : aucune\n",
          "correct": false,
          "feedback": "Erreur : `192.168.10.255` est l'adresse\nde diffusion (tous les bits hôte à\n$1$), elle n'est pas attribuable à un\nhôte. La dernière adresse d'hôte\nutilisable est donc `192.168.10.254`.\n"
        },
        {
          "text": "Première : `192.168.10.0`, dernière :\n`192.168.10.254`, diffusion :\n`192.168.10.0`\n",
          "correct": false,
          "feedback": "Erreur : c'est l'inverse. L'adresse de\ndiffusion est `192.168.10.255` (bits\nhôte à $1$), pas `192.168.10.0` (qui\nest l'adresse réseau, bits hôte à $0$).\n"
        }
      ],
      "explanation": "Règle systématique pour un réseau de masque\n$/n$ : (1) l'adresse réseau a tous les bits\nhôte à $0$ ; (2) l'adresse de diffusion a\ntous les bits hôte à $1$ ; (3) les\nadresses utilisables sont entre les deux,\nexclusives, soit $2^{32-n} - 2$ hôtes. Pour\n`/24`, on obtient $2^8 - 2 = 254$ hôtes ;\npour `/26`, $2^6 - 2 = 62$ hôtes."
    },
    {
      "id": "q30",
      "difficulty": 3,
      "skills": [
        "decoupage-sous-reseaux"
      ],
      "title": "Découpage en sous-réseaux",
      "statement": "Une entreprise dispose du réseau\n`192.168.0.0/24` et veut le diviser en\n**quatre sous-réseaux de taille égale**, chaque\nsous-réseau pouvant accueillir le maximum\nd'hôtes possible. Quel masque utiliser pour\nchaque sous-réseau, et combien d'hôtes\nutilisables aura chacun ?",
      "options": [
        {
          "text": "Masque `/25`, soit $126$ hôtes\nutilisables par sous-réseau\n",
          "correct": false,
          "feedback": "Erreur : `/25` ne donne que **deux**\nsous-réseaux ($2^1 = 2$ blocs), pas\nquatre. Il faut emprunter deux bits, ce\nqui donne `/26`.\n"
        },
        {
          "text": "Masque `/24`, soit $254$ hôtes\nutilisables par sous-réseau\n",
          "correct": false,
          "feedback": "Erreur : `/24` est le masque du réseau\nde **départ**, sans découpage. Pour\ncréer plusieurs sous-réseaux, il faut\nun masque plus restrictif (avec plus de\nbits à $1$).\n"
        },
        {
          "text": "Masque `/26`, soit $62$ hôtes utilisables\npar sous-réseau\n",
          "correct": true,
          "feedback": "Bonne réponse : pour quatre sous-réseaux,\nil faut emprunter $\\log_2 4 = 2$ bits\nsupplémentaires à la partie hôte. On\npasse donc de `/24` à `/26`. Chaque\nsous-réseau a $2^{32-26} - 2 = 62$\nhôtes utilisables. Les quatre\nsous-réseaux sont :\n`192.168.0.0/26` (hôtes `.1` à `.62`),\n`192.168.0.64/26` (`.65` à `.126`),\n`192.168.0.128/26` (`.129` à `.190`),\n`192.168.0.192/26` (`.193` à `.254`).\n"
        },
        {
          "text": "Masque `/27`, soit $30$ hôtes\nutilisables par sous-réseau\n",
          "correct": false,
          "feedback": "Erreur : `/27` donne **huit**\nsous-réseaux, pas quatre. Pour quatre\nsous-réseaux, il faut emprunter\nprécisément deux bits (et non trois).\n"
        }
      ],
      "explanation": "Formule générale : pour créer $2^k$\nsous-réseaux à partir d'un réseau de masque\n$/n$, on emprunte $k$ bits à la partie\nhôte, ce qui donne un masque $/(n+k)$.\nChaque sous-réseau a alors\n$2^{32-(n+k)} - 2$ hôtes utilisables. Cette\ntechnique de **subnetting** est centrale\ndans la conception des réseaux\nd'entreprise."
    },
    {
      "id": "q31",
      "difficulty": 2,
      "skills": [
        "debit-vs-volume"
      ],
      "title": "Calcul de débit",
      "statement": "Une connexion fibre offre un débit théorique\ndescendant de $300 \\mathrm{Mbit/s}$. Combien\nde temps faut-il pour télécharger un fichier\nde $750 \\mathrm{Mio}$ (mébi-octets) à ce\ndébit, sans tenir compte du surcoût des\nprotocoles ?",
      "options": [
        {
          "text": "Environ $21$ secondes",
          "correct": true,
          "feedback": "Bonne réponse. Convertir d'abord la\ntaille en bits : $1 \\mathrm{Mio} =\n2^{20}$ octets $= 8 \\cdot 2^{20}$ bits\n$\\approx 8{,}39$ Mbits. Donc $750\n\\mathrm{Mio} \\approx 750 \\cdot 8{,}39\n= 6\\,291$ Mbits. À $300 \\mathrm{Mbit/s}$,\nle temps est $6\\,291 / 300 \\approx 21$\nsecondes. Attention au piège classique :\n$1 \\mathrm{Mio} \\neq 1 \\mathrm{Mb}$.\n"
        },
        {
          "text": "Environ $170$ secondes",
          "correct": false,
          "feedback": "Erreur de calcul. Refaire la conversion :\n$750 \\mathrm{Mio} = 750 \\cdot 8 = 6\\,000\n\\mathrm{Mb}$ (en utilisant $1 \\mathrm{Mio}\n\\approx 1 \\mathrm{Mb}$ en\napproximation simple), donc $6\\,000 /\n300 = 20$ secondes. Aux arrondis près,\nenviron $21$ secondes.\n"
        },
        {
          "text": "$2{,}5$ secondes (en divisant directement $750 / 300$)",
          "correct": false,
          "feedback": "Erreur classique : on divise les Mio par\ndes Mbit/s sans convertir, ce qui mêle\ndes unités incompatibles. Un mébi-octet\ncontient $8$ bits par octet, donc une\nconversion est nécessaire avant la\ndivision.\n"
        },
        {
          "text": "Environ $200$ secondes",
          "correct": false,
          "feedback": "Erreur : surestimation par un facteur\n$10$. Refaire la conversion avec\nattention. $750 \\mathrm{Mio} \\approx\n6\\,291 \\mathrm{Mbits}$, et le débit est\n$300 \\mathrm{Mbit/s}$. $6\\,291 / 300\n\\approx 21$ secondes, pas $200$.\n"
        }
      ],
      "explanation": "Distinction essentielle :\n**Mb (mégabit) vs Mio (mébi-octet)**. Les\ndébits réseau s'expriment en bits par\nseconde ; les tailles de fichiers en\noctets. Un facteur $8$ sépare les deux,\nauquel s'ajoute une légère différence (~\n$5 \\%$) entre méga ($10^6$) et mébi\n($2^{20}$). Les fournisseurs Internet\nannoncent les débits en Mbit/s, ce qui\ngonfle le chiffre d'un facteur $8$ par\nrapport à un débit en Mio/s. Stratégie\nmémorable : « bit minuscule, octet\nmajuscule ; diviser par huit pour passer\ndu débit annoncé en bits à la vitesse de\ntéléchargement en octets »."
    },
    {
      "id": "q32",
      "difficulty": 3,
      "skills": [
        "trace-https"
      ],
      "title": "Trace d'une connexion HTTPS",
      "statement": "L'utilisateur tape `https://www.example.com/`\ndans son navigateur. Dans quel ordre\ns'enchaînent les principales étapes au\nniveau réseau ?",
      "options": [
        {
          "text": "On télécharge un certificat depuis\nl'autorité de certification, puis on\ncontacte le serveur\n",
          "correct": false,
          "feedback": "Erreur : c'est le **serveur** qui\nprésente son certificat lors de la\nnégociation TLS, le navigateur n'a pas\nbesoin de le télécharger d'ailleurs.\nLe navigateur a déjà, dans son\nmagasin, les certificats des autorités\nracines auxquelles il fait confiance.\n"
        },
        {
          "text": "On envoie d'abord la requête HTTP, puis\non chiffre le résultat\n",
          "correct": false,
          "feedback": "Erreur : impossible. Sans canal\nsécurisé déjà établi, la requête HTTP\nserait envoyée en clair, ce qui exposerait\nnotamment l'URL complète, les\nen-têtes (cookies, mot de passe,\netc.). La sécurisation TLS doit\nprécéder tout envoi de requête HTTP.\n"
        },
        {
          "text": "On contacte le serveur DNS, puis on\ntélécharge directement la page sans\nautre étape\n",
          "correct": false,
          "feedback": "Erreur : il manque la connexion TCP et\nla négociation TLS. HTTPS ne fonctionne\npas sans canal chiffré préalable, et\nle canal chiffré ne peut s'établir\nqu'après la connexion TCP.\n"
        },
        {
          "text": "(1) Résolution DNS pour obtenir\nl'adresse IP de `www.example.com`.\n(2) Établissement de la connexion TCP\nsur le port $443$ (poignée de main en\ntrois temps SYN, SYN-ACK, ACK).\n(3) Négociation TLS (échange de clés,\nvérification du certificat,\nétablissement d'une clé symétrique).\n(4) Envoi de la requête HTTP `GET /` sur\nle canal chiffré, puis réception de la\nréponse\n",
          "correct": true,
          "feedback": "Bonne réponse : c'est l'enchaînement\nstandard. Chaque étape introduit un\npeu de latence (DNS environ\n$20 \\mathrm{ms}$, TCP environ\n$20 \\mathrm{ms}$, TLS environ $40\n\\mathrm{ms}$ pour TLS $1.2$, environ\n$20 \\mathrm{ms}$ pour TLS $1.3$). Les\noptimisations modernes (HTTP$/3$ avec\nQUIC, $0$-RTT) cherchent à réduire ce\ncoût initial.\n"
        }
      ],
      "explanation": "Cette séquence DNS → TCP → TLS → HTTP\ns'observe directement dans les outils de\ndéveloppement du navigateur, sous l'onglet\n**Réseau**, qui détaille les durées de\nchaque phase. Pour aller plus vite, les\nnavigateurs mettent en cache les\nrésolutions DNS, réutilisent les\nconnexions TCP existantes, et utilisent\nla session TLS précédente avec le serveur\nvisité (technique de **reprise de session**)."
    },
    {
      "id": "q33",
      "difficulty": 1,
      "skills": [
        "rip",
        "routage",
        "metrique"
      ],
      "title": "Métrique du protocole RIP",
      "statement": "Dans le protocole de routage RIP (*Routing\nInformation Protocol*), quelle métrique est\nutilisée pour comparer deux routes possibles\nentre deux routeurs ?",
      "options": [
        {
          "text": "Le nombre de sauts (routeurs traversés) entre la source et la destination",
          "correct": true,
          "feedback": "Bonne réponse : RIP est un protocole à\nvecteur de distance dont la métrique est\nsimplement le nombre de routeurs\nintermédiaires à traverser. La route choisie\nest celle qui minimise ce nombre. Limite\nimportante : RIP plafonne à $15$ sauts ;\nau-delà, la destination est considérée comme\ninaccessible.\n"
        },
        {
          "text": "Le coût financier facturé par l'opérateur",
          "correct": false,
          "feedback": "Erreur : aucun protocole de routage standard\nn'utilise de métrique financière. RIP, comme\nla plupart des protocoles de routage interne,\nutilise une métrique purement technique.\n"
        },
        {
          "text": "La bande passante du lien le plus lent sur le chemin",
          "correct": false,
          "feedback": "Erreur : c'est plutôt la philosophie d'OSPF,\nqui pondère ses routes par un coût lié à la\nbande passante. RIP, de conception plus\nsimple et plus ancienne, ne prend en compte\nque le nombre de sauts.\n"
        },
        {
          "text": "La latence mesurée en millisecondes",
          "correct": false,
          "feedback": "Erreur : RIP ne mesure pas la latence. Cette\nmétrique exigerait des sondes en temps réel,\nalors que RIP se contente d'échanger des\ntables de routage à intervalles fixes\n(généralement toutes les $30$ secondes).\n"
        }
      ],
      "explanation": "RIP est l'un des plus anciens protocoles de\nroutage IP, popularisé par Unix dans les années\n$1980$. Sa simplicité (métrique par sauts,\ndiffusion périodique de la table de routage à\nses voisins) le rend adapté aux petits réseaux\nmais le pénalise dès que le réseau s'agrandit\nou que les liens ont des capacités très\ndifférentes. C'est pour cela qu'OSPF, plus\nsophistiqué, l'a progressivement remplacé dans\nles réseaux d'entreprise."
    },
    {
      "id": "q34",
      "difficulty": 2,
      "skills": [
        "ospf",
        "dijkstra",
        "routage"
      ],
      "title": "Métrique du protocole OSPF",
      "statement": "Le protocole de routage OSPF (*Open Shortest\nPath First*) utilise un coût pondéré pour chaque\nlien afin de déterminer la meilleure route. Quel\nalgorithme permet alors à chaque routeur de\ncalculer les plus courts chemins vers toutes les\ndestinations connues ?",
      "options": [
        {
          "text": "L'algorithme de tri par insertion",
          "correct": false,
          "feedback": "Erreur : le tri par insertion est un\nalgorithme de tri d'un tableau, sans rapport\navec la recherche d'un plus court chemin\ndans un graphe pondéré.\n"
        },
        {
          "text": "L'algorithme de Dijkstra",
          "correct": true,
          "feedback": "Bonne réponse : chaque routeur OSPF maintient\nune carte complète de la topologie du réseau\n(échangée avec les autres routeurs via des\nmessages d'état de lien) puis applique\nl'algorithme de Dijkstra pour calculer les\nplus courts chemins vers tous les autres\nrouteurs. La métrique de chaque arête est un\ncoût (souvent inversement proportionnel à la\nbande passante du lien).\n"
        },
        {
          "text": "L'algorithme de Boyer-Moore",
          "correct": false,
          "feedback": "Erreur : Boyer-Moore est un algorithme de\nrecherche d'un motif dans une chaîne de\ncaractères, pas un algorithme de plus court\nchemin sur un graphe.\n"
        },
        {
          "text": "L'algorithme glouton de rendu de monnaie",
          "correct": false,
          "feedback": "Erreur : un algorithme glouton ne donne pas\ntoujours la solution optimale, ce qui serait\nrédhibitoire pour le routage. L'algorithme\nutilisé par OSPF est plus sophistiqué et\ngarantit le plus court chemin.\n"
        }
      ],
      "explanation": "Comparaison avec RIP : RIP utilise une approche\nà vecteur de distance (chaque routeur ne connaît\nque ses voisins et la distance estimée vers\nchaque destination), tandis qu'OSPF est un\nprotocole à état de lien (chaque routeur connaît\nla topologie complète du réseau). Cette\ndifférence fondamentale explique pourquoi OSPF\ns'adapte mieux aux grands réseaux : un routeur\npeut prendre en compte la bande passante réelle\ndes liens plutôt que de se contenter de\nminimiser le nombre de sauts."
    },
    {
      "id": "q35",
      "difficulty": 3,
      "skills": [
        "rip",
        "ospf",
        "comparaison",
        "trace"
      ],
      "title": "Choix de route RIP versus OSPF",
      "statement": "On considère le réseau ci-dessous, composé de\nquatre routeurs `R1`, `R2`, `R3`, `R4`, où\nchaque arête porte un coût pondéré utilisé par\nOSPF :\n\n```\nR1 ----- 10 ----- R2\n |                 |\n 1                100\n |                 |\nR3 ----- 1 ------ R4\n```\n\nTous ces liens existent et chacun compte pour\nun saut côté RIP. On cherche la route choisie\nde `R1` vers `R4`. Quelle route chaque protocole\nsélectionne-t-il ?",
      "options": [
        {
          "text": "RIP choisit `R1 → R3 → R4` à cause du coût $2$, OSPF choisit `R1 → R2 → R4` car deux sauts suffisent",
          "correct": false,
          "feedback": "Erreur : on a inversé les rôles des deux\nprotocoles. RIP est celui qui n'utilise que\nle nombre de sauts, et donc ne « voit » pas\nles coûts pondérés. OSPF est celui qui\nintègre les coûts dans son calcul.\n"
        },
        {
          "text": "RIP comme OSPF choisissent `R1 → R3 → R4` (deux sauts, coût total $2$)",
          "correct": false,
          "feedback": "Erreur : seul OSPF favorise nettement ce\nchemin. Pour RIP, la métrique est le seul\nnombre de sauts. Or `R1 → R2 → R4` fait\négalement deux sauts. Les deux chemins\nparaissent équivalents pour RIP, sans\ndépartage strict en faveur de `R3`.\n"
        },
        {
          "text": "RIP est indifférent entre `R1 → R2 → R4` et `R1 → R3 → R4` (deux sauts dans les deux cas) ; OSPF choisit `R1 → R3 → R4` car son coût $1 + 1 = 2$ est inférieur au coût $10 + 100 = 110$ via `R2`\n",
          "correct": true,
          "feedback": "Bonne réponse : RIP ne distingue que le\nnombre de sauts, donc les deux chemins\nparaissent équivalents pour lui. OSPF, au\ncontraire, additionne les coûts pondérés et\ntranche nettement en faveur de\n`R1 → R3 → R4`, dont le coût total ($2$) est\nbeaucoup plus faible que celui de\n`R1 → R2 → R4` ($110$).\n"
        },
        {
          "text": "RIP choisit `R1 → R2 → R4` (deux sauts) et OSPF choisit le même chemin pour minimiser le coût",
          "correct": false,
          "feedback": "Erreur sur OSPF : `R1 → R2 → R4` a un coût\ntotal de $10 + 100 = 110$, alors que\n`R1 → R3 → R4` a un coût de $1 + 1 = 2$.\nOSPF choisira évidemment ce dernier. Quant\nà RIP, il est en fait indifférent entre les\ndeux chemins puisqu'ils font tous deux deux\nsauts.\n"
        }
      ],
      "explanation": "Cet exemple illustre la limite principale de\nRIP : en ne tenant pas compte de la qualité des\nliens, il peut choisir un chemin pourtant\nbeaucoup plus lent qu'un autre. OSPF, en\nintégrant la bande passante des liens via un\ncoût pondéré, fournit naturellement des routes\nplus efficaces. C'est pour cette raison qu'OSPF\na remplacé RIP dans la plupart des réseaux\nd'entreprise modernes."
    }
  ]
}