Réseaux, routage et systèmes
Léa ouvre l'application de sa banque sur son ordinateur. En quelques millisecondes, son système d'exploitation répartit le processeur entre ses programmes, ses paquets traversent plusieurs routeurs, et son mot de passe voyage chiffré. Comment tout cela fonctionne-t-il, et pourquoi le cadenas du navigateur est-il rassurant ? Ce sont des questions classiques de l'épreuve de spécialité NSI. Tu as besoin ici de savoir décrire, dérouler à la main et justifier.
Processus et ordonnancement
Un processus est un programme en cours d'exécution. Comme il n'y a que quelques cœurs pour de nombreux processus, le système d'exploitation décide qui utilise le processeur et quand : c'est l'ordonnancement.
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é (ou « en attente ») : il attend un événement (une lecture sur le disque, une ressource, une saisie au clavier).
Un processus prêt devient élu quand l'ordonnanceur le choisit. Un processus élu devient bloqué s'il attend un événement. Il redevient prêt quand l'événement a lieu, ou quand son temps d'utilisation est écoulé.
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 (en tourniquet, on additionne toutes ses attentes : fin − arrivée − durée d'exécution).
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 |
-
Donner, pour chaque processus, l'intervalle de temps pendant lequel il s'exécute.
-
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.
-
Citer les trois états classiques d'un processus et préciser, à l'instant 3 s, l'état de chacun des trois processus.
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 |
-
Construire le diagramme de Gantt de l'exécution, sous la forme d'une suite d'intervalles de temps associés aux processus.
-
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.
-
Mener la même étude avec la règle « premier arrivé, premier servi » sans interruption.
-
Comparer les temps de séjour moyens obtenus et citer un avantage du tourniquet pour un système interactif.
Interblocage
Plusieurs processus se partagent des ressources (fichier, imprimante, capteur…) qu'un seul processus peut utiliser à la fois. Si chacun garde une ressource en attendant celle de l'autre, plus personne n'avance : c'est l'interblocage (deadlock).
Exemple : Lucas et Emma ont chacun un processus. Le processus de Lucas demande d'abord le fichier F, puis l'imprimante I. Celui d'Emma demande d'abord I, puis F.
Entrelacement fatal :
-
le processus de Lucas obtient F ;
-
le processus d'Emma obtient I ;
-
Lucas demande I : occupée, il attend ;
-
Emma demande F : occupé, elle attend.
Chacun détient une ressource et attend celle de l'autre, indéfiniment.
Trait plein : « détient ». Pointillé : « attend ». Le graphe forme un cycle : c'est le signe de l'interblocage.
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.
-
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.
-
Décrire un entrelacement des exécutions qui se termine normalement.
-
Expliquer pourquoi, dans la situation de la question 1, aucun des deux processus ne pourra progresser.
-
Proposer une modification de l'ordre des demandes de ressources qui élimine tout risque d'interblocage, et justifier.
Routage : RIP et OSPF
Un message traverse Internet en paquets. Chaque routeur consulte sa table de routage, qui indique, pour chaque destination, le prochain routeur vers lequel envoyer le paquet. Les routeurs construisent leurs tables avec un protocole de routage. Le réseau est un graphe : routeurs = sommets, liaisons = arêtes.
-
RIP minimise le nombre de sauts (nombre de liaisons traversées).
-
OSPF minimise le coût total. Le coût d'une liaison dépend de son débit : $\text{coût} = \dfrac{10^9}{\text{débit en bit/s}}$.
| Débit | Calcul | Coût |
|---|---|---|
| 1 Gbit/s | $10^9 / 10^9$ | 1 |
| 100 Mbit/s | $10^9 / (100 \times 10^6)$ | 10 |
| 10 Mbit/s | $10^9 / (10 \times 10^6)$ | 100 |
Plus le débit est grand, plus le coût est faible.
Trouver le plus court chemin à la main
Pour OSPF, on utilise l'algorithme de recherche de plus court chemin (de Dijkstra) : on retient à chaque étape le sommet non encore retenu dont la distance provisoire est la plus petite, puis on met à jour ses voisins.
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.
-
Donner le chemin choisi par RIP pour aller de R1 à R4 et le nombre de sauts correspondant.
-
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.
-
La liaison R1–R5 tombe en panne. Donner le nouveau chemin de R1 à R4 et le nombre de sauts.
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 |
-
Calculer le coût de chacune des liaisons.
-
Donner la route choisie par RIP de R1 vers R5 et son coût total au sens d'OSPF.
-
Donner la route choisie par OSPF de R1 vers R5 et son coût total. Justifier en comparant avec au moins trois autres routes.
-
Expliquer pourquoi ce problème de routage est un problème de recherche d'un chemin de poids minimal dans un graphe pondéré.
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},
}
-
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.
-
En déduire la table de routage de A : pour chaque destination, le coût total et le prochain routeur.
-
La liaison A–B tombe en panne. Recalculer la table de routage de A.
-
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.
Chiffrement et HTTPS
Le chiffrement transforme un message en clair en un message illisible sans la clef. Le déchiffrement fait l'opération inverse.
Chiffrement de César, clef $k$ : on décale chaque lettre de $k$ positions dans l'alphabet (en revenant à A après Z). Avec $k = 5$ : LYCEE → QDHJJ (Y devient D car on revient au début). Pour déchiffrer, on décale de $-5$. C'est un chiffrement symétrique : même clef dans les deux sens. Il n'y a que 25 clefs non triviales (de 1 à 25) : en les essayant toutes, on le casse vite.
Le « ou exclusif » (XOR)
Pour deux bits, $a \oplus b$ vaut 1 si $a \neq b$, sinon 0. Avec $m = 0110$ et la clef $k = 1010$ : $m \oplus k = 1100$, puis $1100 \oplus 1010 = 0110 = m$. Appliquer deux fois la même clef redonne le message : $(a \oplus b) \oplus b = a$. En Python, 0b0110 ^ 0b1010 donne 0b1100.
HTTPS : combiner les deux
Chiffrer tout avec une paire de clefs asymétrique serait lent, mais échanger une clef symétrique en clair serait dangereux. Donc on utilise l'asymétrique uniquement pour échanger une clef symétrique.
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.
-
Chiffrer le mot « NSI ».
-
Déchiffrer le message « HQJLQH ».
-
Indiquer si ce chiffrement est symétrique ou asymétrique et justifier la réponse.
-
Expliquer pourquoi ce chiffrement est facile à casser en essayant toutes les clefs possibles. Donner le nombre de clefs non triviales à essayer.
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.
-
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.
-
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.
-
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.
-
Expliquer pourquoi on utilise ensuite un chiffrement symétrique plutôt que de continuer avec le chiffrement asymétrique.
-
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).
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 ^.
-
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$.
-
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.
-
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.
-
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.
-
Pour une clef de 128 bits, donner le nombre de clefs possibles sous la forme d'une puissance de 2.
-
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.
Retour au début : quand Léa se connecte à sa banque, son navigateur et le serveur se mettent d'accord sur une clef symétrique grâce au chiffrement asymétrique. Ensuite, tout ce qui circule est chiffré, et les paquets passent par les routes calculées par les routeurs.
L'essentiel
-
Un processus est prêt, élu ou bloqué. L'ordonnanceur choisit : en FCFS, par ordre d'arrivée ; en tourniquet, chacun son quantum, puis fin de file.
-
Temps d'attente en FCFS : début − arrivée ; en tourniquet : fin − arrivée − durée.
-
Interblocage : attente circulaire de ressources détenues. On l'évite en demandant les ressources dans le même ordre.
-
RIP minimise le nombre de sauts ; OSPF minimise le coût $10^9 / \text{débit}$. Le plus court chemin se cherche à la main en retenant à chaque étape le sommet de distance provisoire minimale.
-
Chiffrement symétrique : une clef partagée. Asymétrique : clef publique pour chiffrer, clef privée pour déchiffrer.
-
HTTPS : échange d'une clef symétrique par chiffrement asymétrique, puis échanges chiffrés avec cette clef symétrique.