Retour à la page d'accueilNSI · Terminale (maths complémentaires) · Changer de matière
Commencer gratuitement
Terminale (maths complémentaires) · NSI
Préparer l'épreuve de spécialité NSI du bac · Épreuve de spécialité NSI du baccalauréat

Réseaux, routage et systèmes

Léa ouvre l'application de sa banque sur son téléphone. Pendant que la page s'affiche, son téléphone exécute des dizaines de processus, ses paquets traversent plusieurs routeurs, et personne ne doit pouvoir lire son mot de passe en route. Comment le système partage-t-il le processeur ? Comment un paquet trouve-t-il son chemin ? Comment la connexion est-elle protégée ? Voilà les trois questions de ce chapitre, qui reviennent régulièrement dans les exercices de l'épreuve écrite du bac.

Processus et ordonnancement

Un processus est un programme en cours d'exécution. Le processeur ne peut exécuter qu'un processus à la fois (par cœur) : le système d'exploitation décide dans quel ordre les processus passent. C'est l'ordonnancement, assuré par l'ordonnanceur.

Un processus est toujours dans l'un de ces trois états :

  • prêt : il attend que le processeur se libère ;

  • élu (ou en cours d'exécution) : il utilise le processeur ;

  • bloqué : il attend une ressource (lecture sur le disque, réponse du réseau, saisie au clavier…).

États d'un processus : prêt, élu et bloqué, avec les transitions entre eux Prêt Élu Bloqué élection fin du quantum attente réveil

Un processus bloqué ne repasse jamais directement à l'état élu : une fois la ressource obtenue, il redevient prêt et doit attendre son tour.

Première arrivée, première servie (FIFO)

Les processus passent dans l'ordre d'arrivée, et chacun va jusqu'au bout. Le temps d'attente d'un processus est la durée écoulée entre son arrivée et le début de son exécution.

Le tourniquet (round robin)

Chaque processus reçoit le processeur au plus pendant un quantum (une durée fixée, par exemple 2 s). S'il n'a pas terminé, il est remis à la fin de la file des processus prêts. Personne ne reste bloqué derrière un long processus.

Avec ce mode, le temps d'attente total d'un processus est la durée passée dans la file des prêts :

$$\text{attente} = \text{instant de fin} - \text{instant d'arrivée} - \text{durée d'exécution}.$$
Entraîne-toi★☆☆Pas commencé
Un système d'exploitation exécute trois processus selon la règle « premier arrivé, premier servi » (sans interruption). Les instants sont exprimés en secondes. |…

Un système d'exploitation exécute trois processus selon la règle « premier arrivé, premier servi » (sans interruption). Les instants sont exprimés en secondes.

Processus Instant d'arrivée Durée d'exécution
P1 0 4
P2 1 3
P3 2 1
  1. Donner, pour chaque processus, l'intervalle de temps pendant lequel il s'exécute.

  2. Calculer le temps d'attente de chaque processus, c'est-à-dire la durée écoulée entre son arrivée et le début de son exécution, puis le temps d'attente moyen, arrondi au centième.

  3. Citer les trois états classiques d'un processus et préciser, à l'instant 3 s, l'état de chacun des trois processus.

Résoudre
Entraîne-toi★★★Pas commencé
Trois processus sont ordonnancés selon la politique du tourniquet avec un quantum de 2 s. Un processus qui n'a pas terminé à la fin de son quantum retourne à la fin de…

Trois processus sont ordonnancés selon la politique du tourniquet avec un quantum de 2 s. Un processus qui n'a pas terminé à la fin de son quantum retourne à la fin de la file des processus prêts. Si un processus arrive à un instant inférieur ou égal à la fin d'une tranche, il est placé dans la file avant le processus interrompu à cet instant.

Processus Instant d'arrivée (s) Durée d'exécution (s)
P1 0 5
P2 1 3
P3 2 4
  1. Construire le diagramme de Gantt de l'exécution, sous la forme d'une suite d'intervalles de temps associés aux processus.

  2. Donner l'instant de fin de chaque processus, puis son temps de séjour (instant de fin moins instant d'arrivée) et le temps de séjour moyen, arrondi au centième.

  3. Mener la même étude avec la règle « premier arrivé, premier servi » sans interruption.

  4. Comparer les temps de séjour moyens obtenus et citer un avantage du tourniquet pour un système interactif.

Résoudre

Ressources partagées et interblocage

Plusieurs processus peuvent avoir besoin de la même ressource (une imprimante, un fichier, un port). Si elle ne peut servir qu'à un seul processus à la fois, les autres attendent. Cela peut conduire à un interblocage (deadlock) : plusieurs processus s'attendent mutuellement, pour toujours.

Interblocage : P1 détient R1 et attend R2, P2 détient R2 et attend R1 P1 P2 R1 R2 trait plein : détient — pointillé : attend

Le cycle « P1 attend P2 qui attend P1 » ne peut jamais se débloquer. Un interblocage exige la réunion de quatre conditions :

  • exclusion mutuelle : une ressource n'est utilisable que par un processus à la fois ;

  • détention et attente : un processus garde ses ressources en en demandant d'autres ;

  • pas de réquisition : on ne peut pas retirer de force une ressource à un processus ;

  • attente circulaire : il existe un cycle de processus, chacun attendant une ressource détenue par le suivant.

Entraîne-toi★★☆Pas commencé
Deux processus P1 et P2 partagent deux ressources R1 et R2, chacune utilisable par un seul processus à la fois. Le processus P1 exécute les actions suivantes : demander…

Deux processus P1 et P2 partagent deux ressources R1 et R2, chacune utilisable par un seul processus à la fois. Le processus P1 exécute les actions suivantes : demander R1, demander R2, utiliser les deux ressources, libérer R2, libérer R1. Le processus P2 exécute : demander R2, demander R1, utiliser les deux ressources, libérer R1, libérer R2. Une demande d'une ressource déjà occupée met le processus en attente jusqu'à sa libération.

  1. Décrire un entrelacement des exécutions de P1 et de P2 qui provoque un interblocage. Préciser quelle ressource détient chaque processus et laquelle il attend.

  2. Décrire un entrelacement des exécutions qui se termine normalement.

  3. Expliquer pourquoi, dans la situation de la question 1, aucun des deux processus ne pourra progresser.

  4. Proposer une modification de l'ordre des demandes de ressources qui élimine tout risque d'interblocage, et justifier.

Résoudre

Routage : RIP et OSPF

Un paquet envoyé de Lyon vers Nantes traverse plusieurs routeurs. Chaque routeur possède une table de routage : pour chaque destination, elle indique le prochain routeur à qui transmettre le paquet. Le réseau est modélisé par un graphe : les routeurs sont les sommets, les liaisons sont les arêtes.

Deux protocoles choisissent la route :

  • RIP minimise le nombre de sauts (nombre de liaisons traversées) ;

  • OSPF minimise le coût total, somme des coûts des liaisons. Le coût d'une liaison dépend de son débit : plus le débit est élevé, plus le coût est faible. Avec une valeur de référence de $10^9$ bit/s :

$$\text{coût} = \frac{10^{9}}{\text{débit en bit/s}}.$$

Par exemple, 1 Gbit/s donne un coût de 1, 100 Mbit/s donne 10, et 10 Mbit/s donne 100.

Réseau de quatre routeurs A, B, C, D avec le coût OSPF de chaque liaison 1 4 2 6 3 A B C D

Pour aller de A à C : RIP choisit la liaison directe A–C (1 saut, mais coût 4). OSPF choisit A–B–C (2 sauts, coût $1+2=3$). Les deux protocoles ne donnent pas toujours la même route.

Trouver le plus court chemin

Pour OSPF, on cherche le chemin de coût minimal avec l'algorithme de Dijkstra, qui est le même que celui des plus courts chemins dans un graphe pondéré :

  1. On donne la distance 0 au routeur de départ et $+\infty$ aux autres.

  2. On retient le routeur non encore retenu de plus petite distance provisoire.

  3. Pour chacun de ses voisins, on regarde si passer par lui donne une distance plus petite ; si oui, on met à jour la distance et on note le prédécesseur.

  4. On recommence jusqu'à avoir retenu tous les routeurs.

Entraîne-toi★☆☆Pas commencé
Cinq routeurs R1, R2, R3, R4 et R5 sont reliés par les liaisons suivantes : R1–R2, R2–R3, R3–R4, R1–R5 et R5–R4. Le protocole de routage utilisé est RIP, qui minimise le…

Cinq routeurs R1, R2, R3, R4 et R5 sont reliés par les liaisons suivantes : R1–R2, R2–R3, R3–R4, R1–R5 et R5–R4. Le protocole de routage utilisé est RIP, qui minimise le nombre de sauts.

  1. Donner le chemin choisi par RIP pour aller de R1 à R4 et le nombre de sauts correspondant.

  2. Donner la table de routage de R1 sous la forme d'un tableau à trois colonnes : destination, prochain routeur, nombre de sauts. Les destinations sont R2, R3, R4 et R5.

  3. La liaison R1–R5 tombe en panne. Donner le nouveau chemin de R1 à R4 et le nombre de sauts.

Résoudre
Entraîne-toi★★☆Pas commencé
Cinq routeurs sont reliés par les liaisons suivantes. Dans le protocole OSPF, le coût d'une liaison est égal à $10^9$ divisé par son débit en bits par seconde. | Liaison…

Cinq routeurs sont reliés par les liaisons suivantes. Dans le protocole OSPF, le coût d'une liaison est égal à $10^9$ divisé par son débit en bits par seconde.

Liaison Débit
R1–R2 1 Gbit/s
R2–R3 100 Mbit/s
R1–R3 10 Mbit/s
R2–R4 1 Gbit/s
R4–R3 1 Gbit/s
R3–R5 100 Mbit/s
R4–R5 10 Mbit/s
  1. Calculer le coût de chacune des liaisons.

  2. Donner la route choisie par RIP de R1 vers R5 et son coût total au sens d'OSPF.

  3. Donner la route choisie par OSPF de R1 vers R5 et son coût total. Justifier en comparant avec au moins trois autres routes.

  4. Expliquer pourquoi ce problème de routage est un problème de recherche d'un chemin de poids minimal dans un graphe pondéré.

Résoudre
Entraîne-toi★★★Pas commencé
Un réseau est constitué de cinq routeurs A, B, C, D et E. Les coûts OSPF des liaisons sont donnés par le dictionnaire suivant. 1. Dérouler à la main l'algorithme de…

Un réseau est constitué de cinq routeurs A, B, C, D et E. Les coûts OSPF des liaisons sont donnés par le dictionnaire suivant.

reseau = {

    "A": {"B": 2, "C": 1},

    "B": {"A": 2, "C": 2, "D": 5, "E": 10},

    "C": {"A": 1, "B": 2, "D": 8},

    "D": {"B": 5, "C": 8, "E": 3},

    "E": {"B": 10, "D": 3},

}
  1. Dérouler à la main l'algorithme de recherche de plus court chemin depuis A en présentant, à chaque étape, le routeur retenu et les distances provisoires mises à jour.

  2. En déduire la table de routage de A : pour chaque destination, le coût total et le prochain routeur.

  3. La liaison A–B tombe en panne. Recalculer la table de routage de A.

  4. Comparer les coûts de A vers E avant et après la panne, et conclure sur la nécessité, pour OSPF, de recalculer les routes en cas de modification du réseau.

Résoudre

Chiffrement et HTTPS

Pour protéger un message, on le chiffre : on le transforme avec une clef pour qu'il devienne illisible. Seul le destinataire autorisé peut le déchiffrer. On dit « chiffrer » et « déchiffrer » ; « décrypter » désigne le fait de lire un message sans connaître la clef (casser le chiffrement).

Chiffrement symétrique

La même clef (une clef partagée) sert à chiffrer et à déchiffrer. Il est rapide, mais il pose un problème : comment transmettre la clef à son correspondant sans que quelqu'un l'intercepte ?

Exemple simple, le chiffrement de César avec la clef 3 : on décale chaque lettre de 3 positions dans l'alphabet, en revenant au début après Z.

Ce chiffrement est très faible : il n'existe que 25 clefs non triviales (de 1 à 25) et on peut toutes les essayer en un instant. C'est une attaque par force brute.

Autre exemple : le XOR

On chiffre un octet bit à bit avec le ou exclusif (XOR, noté $\oplus$) : $a \oplus b$ vaut 1 si $a$ et $b$ sont différents, 0 sinon. En Python : ^.

La propriété clef est $(a \oplus b) \oplus b = a$. Si $b=0$, on ne change rien deux fois. Si $b=1$, on inverse $a$ puis on l'inverse encore : on retrouve $a$. Donc chiffrer et déchiffrer sont la même opération avec la même clef.

Chiffrement asymétrique

Chaque personne possède deux clefs liées : une clef publique, que tout le monde peut connaître, et une clef privée, qu'elle garde secrète.

  • On chiffre avec la clef publique du destinataire.

  • Seul le destinataire déchiffre avec sa clef privée.

Le problème de la transmission de la clef disparaît : la clef publique n'a pas besoin d'être cachée. En contrepartie, le chiffrement asymétrique est bien plus lent que le symétrique.

Les deux ensemble : HTTPS

Le protocole HTTPS combine les deux. On utilise l'asymétrique, lent, pour s'échanger une clef, puis le symétrique, rapide, pour tout le reste. On simplifie ici la négociation (que le programme n'étudie pas en détail) :

  1. Le serveur envoie sa clef publique au navigateur.

  2. Le navigateur génère une clef symétrique aléatoire.

  3. Le navigateur la chiffre avec la clef publique du serveur et l'envoie.

  4. Le serveur la déchiffre avec sa clef privée. Lui seul le peut.

  5. Les échanges suivants sont chiffrés avec la clef symétrique partagée.

Retour au début : quand Léa se connecte à sa banque, son navigateur et le serveur s'échangent une clef symétrique grâce à la clef publique du serveur ; ensuite tout est chiffré par cette clef partagée, et un espion qui capte les paquets ne lit rien.

Entraîne-toi★☆☆Pas commencé
On utilise le chiffrement de César avec la clef 3 : chaque lettre est remplacée par la lettre située 3 positions plus loin dans l'alphabet, en revenant au début après Z.…

On utilise le chiffrement de César avec la clef 3 : chaque lettre est remplacée par la lettre située 3 positions plus loin dans l'alphabet, en revenant au début après Z.

  1. Chiffrer le mot « NSI ».

  2. Déchiffrer le message « HQJLQH ».

  3. Indiquer si ce chiffrement est symétrique ou asymétrique et justifier la réponse.

  4. Expliquer pourquoi ce chiffrement est facile à casser en essayant toutes les clefs possibles. Donner le nombre de clefs non triviales à essayer.

Résoudre
Entraîne-toi★★☆Pas commencé
Léa se connecte au site de sa banque en ligne par le protocole HTTPS. On décrit de façon simplifiée l'établissement de la communication. 1. Rappeler la différence entre…

Léa se connecte au site de sa banque en ligne par le protocole HTTPS. On décrit de façon simplifiée l'établissement de la communication.

  1. Rappeler la différence entre un chiffrement symétrique et un chiffrement asymétrique, en précisant dans chaque cas quelle clef sert à chiffrer et quelle clef sert à déchiffrer.

  2. Ordonner les étapes suivantes.

    a) Le navigateur de Léa chiffre une clef symétrique avec la clef publique du serveur.

    b) Une fois la clef publique du serveur reçue, le navigateur de Léa génère une clef symétrique aléatoire.

    c) Les échanges suivants sont chiffrés avec la clef symétrique.

    d) Le serveur déchiffre la clef symétrique reçue avec sa clef privée.

    e) Le navigateur de Léa obtient la clef publique du serveur.

  3. Expliquer pourquoi une personne qui intercepte la clef publique du serveur et la clef symétrique chiffrée ne peut pas retrouver la clef symétrique.

  4. Expliquer pourquoi on utilise ensuite un chiffrement symétrique plutôt que de continuer avec le chiffrement asymétrique.

  5. Dix personnes veulent pouvoir communiquer deux à deux de façon confidentielle avec un chiffrement symétrique, chaque paire disposant de sa propre clef. Calculer le nombre de clefs nécessaires. Comparer avec le nombre de paires de clefs nécessaires avec un chiffrement asymétrique, chaque personne disposant d'une paire (clef publique, clef privée).

Résoudre
Entraîne-toi★★★Pas commencé
On illustre le chiffrement symétrique par un chiffrement « ou exclusif » (XOR) avec une clef partagée. Pour deux bits $a$ et $b$, $a \oplus b$ vaut 1 si $a$ et $b$ sont…

On illustre le chiffrement symétrique par un chiffrement « ou exclusif » (XOR) avec une clef partagée. Pour deux bits $a$ et $b$, $a \oplus b$ vaut 1 si $a$ et $b$ sont différents et 0 sinon. L'opération s'applique bit à bit à des octets. En Python, l'opérateur correspondant est ^.

  1. On considère le message $m = 01101001$ et la clef $k = 10110010$. Calculer $c = m \oplus k$, puis $c \oplus k$ et comparer avec $m$.

  2. Justifier que, pour tous bits $a$ et $b$, $(a \oplus b) \oplus b = a$. En déduire que le même procédé permet de chiffrer et de déchiffrer.

  3. On considère la fonction suivante.

def chiffre(texte, cle):

    return [ord(c) ^ cle for c in texte]
a) Donner le résultat de `chiffre("NSI", 42)`. On rappelle que `ord("N")` vaut 78, `ord("S")` vaut 83 et `ord("I")` vaut 73.

b) Écrire une fonction `dechiffre(liste, cle)` qui renvoie le texte d'origine.
  1. La clef est un entier compris entre 0 et 255. Donner le nombre de clefs possibles et expliquer pourquoi ce chiffrement est vulnérable à une attaque par force brute.

  2. Pour une clef de 128 bits, donner le nombre de clefs possibles sous la forme d'une puissance de 2.

  3. Expliquer pourquoi la clef partagée pose un problème de transmission entre les deux interlocuteurs, et décrire comment un chiffrement asymétrique permet de le résoudre dans le cadre d'une communication HTTPS.

Résoudre

L'essentiel

Voir tous les exercices de cette partie