Chapitre 2 : Internet.

🕐 Historique :

Période Événements Clés
Années 1960
  • Le concept d'un réseau de communication mondial est proposé.
  • La première idée d'un réseau ARPANET (Advanced Research Projects Agency Network) a été développée.
1969 ARPANET devient opérationnel, reliant les universités et centres de recherche.
Années 1970
  • Le courrier électronique (e-mail) est inventé.
  • Le protocole TCP (Transmission Control Protocol) est développé formant la base du TCP/IP.
1983
  • Le TCP/IP devient le protocole standard d'Internet.
  • Le domaine ".com" est introduit.
Années 1990 Le World Wide Web (WWW) est inventé par Tim Berners-Lee au CERN 🇪🇺.
1993
  • L'Internet Society (ISOC) est créée pour promouvoir le développement ouvert d'Internet.
  • Le premier navigateur Web graphique, Mosaic, est lancé.

1. Exercice : analogie entre routage postal et Internet.

À faire dans le cahier.

L'activité porte sur le routage postal. Ceci afin d'amener à une réflexion concernant le réseau internet.

On considère les 3 documents ci-dessous :

Charles Oyster cherche à rentrer en communication pour la première fois avec Carla Lobster. Ils ne se connaissaient pas auparavant.

À l’aide des documents proposés, répondre aux questions suivantes :

  1. Pourquoi Charles Oyster a mis sa propre adresse au dos de la lettre ?
  2. Lister les différents moyens d'acheminements de la lettre.
  3. Mentionner les informations dont a besoin le centre de tri de Washington pour acheminer la lettre.
  4. Selon vous, sur internet, qu'est ce qui joue le rôle des centres de tri ? Des adresses postales ?

2. Comprendre les Adresses IP

3. Exercice : identifier votre adresse IP.

À faire dans le cahier.

Votre adresse IP est : 216.73.217.31

Vous pouvez constater que cette page affiche votre adresse IP (pour de vrai...) !

  1. Pensez-vous que c'est illégal ?
  2. Comment est-ce possible ?
  3. En salle informatique, il y a la même adresse IP sur tous les postes. Pourquoi selon vous ?

4. Réseaux et sous-réseaux

Un réseau est un ensemble de machines qui peuvent communiquer entre elles. Internet est le réseau qui relie tous ces réseaux entre eux.

Un réseau un peu grand (celui d'un lycée, d'une entreprise…) est découpé en sous-réseaux : par exemple un par bâtiment ou par service. Les machines d'un même sous-réseau communiquent directement entre elles ; pour joindre une machine d'un autre sous-réseau, il faut passer par un routeur.

En IPv4, une adresse se compose de deux parties : la partie réseau et la partie machine. Le masque de sous-réseau indique combien de bits forment la partie réseau : ce sont ces bits qui identifient le sous-réseau auquel appartient la machine.

Exemple :

Chaque sous-réseau est identifié par son adresse réseau : celle dont tous les bits de la partie machine valent 0. Avec un masque /24, elle se termine donc par .0 : l'adresse réseau du sous-réseau 192.168.2.0/24 est 192.168.2.0. Elle ne peut être attribuée à aucune machine.

5. Exemple d'un réseau découpé en sous-réseaux

Dans cet exemple, l'ordinateur 192.168.0.10 veut communiquer avec 192.168.4.12.

En partant du principe que le masque de sous-réseau est 255.255.255.0, les deux machines n'ont pas la même partie réseau : 192.168.0.10 est dans le sous-réseau 192.168.0.0/24 et 192.168.4.12 dans le sous-réseau 192.168.4.0/24. 192.168.0.10 ne peut donc pas atteindre directement 192.168.4.12 : il sait qu'il doit passer par la passerelle 192.168.0.1 pour sortir de son sous-réseau.

6. Exercice : adresses de sous-réseaux.

À faire dans le cahier.

On considère le réseau ci-dessous :

Survole (ou touche) un appareil ou une adresse pour l'afficher en grand.

192.168.0.10 192.168.0.11 Switch / WiFi Routeur 1 Switch / WiFi 192.168.1.10 192.168.1.11 Routeur 2 172.1.3.1 Switch / WiFi 172.1.4.1 172.1.4.2 192.168.0.254 192.168.1.254 192.168.3.10 192.168.3.11 172.1.3.2 172.1.4.5

Pour l'ensemble de ce réseau, le masque de sous-réseau est 255.255.255.0.

  1. Combien compte-t-on de sous-réseaux différents ?
  2. Donner l'adresse réseau de chacun de ces sous-réseaux.

7. Exercice : plus court chemin avec l'algorithme de Dijkstra.

Sur Internet, les routeurs sont des « carrefours » qui font circuler les paquets d'information. Chaque lien entre deux routeurs a un coût (ici une latence en millisecondes). Trouver le plus court chemin, c'est choisir la suite de routeurs qui minimise ce coût total.

a b 7 h 20 i 33 c 14 17 d 26 j 18 e 12 k 21 l 14 f 3 g 17 m 9 n 16 21 t 17 u 19 5 o 13 23 6 p 16 19 q 14 6 r 22 6 14 s 12 v 10 4 3 9 w 23 16 x 12 y 15 22 z 18 13 aa 9 ab 20 15 ac 16 20 ad 11 9 ae 24 18 af 14 12 ag 22 23 ah 13 14 10 19 24 11

Chercher ce chemin « à la main » devient vite très long dès que les points sont éloignés : c'est justement pour ce genre de problème que l'informatique est utile.

Bonne nouvelle : le programme Python, plus bas, contient déjà une fonction toute prête, plus_court_chemin, qui applique l'algorithme de Dijkstra. Tu n'as pas à la réécrire : ton travail est d'appeler cette fonction et de l'exécuter.

En Python, on utilise une fonction en écrivant son nom, suivi de ses arguments entre parenthèses. La toute dernière ligne du programme fait exactement cet appel :

plus_court_chemin(graphe, "a", "p")

On demande ici le plus court chemin du routeur "a" vers le routeur "p".

Travail demandé :

  1. Exécute le programme tel quel, avec le bouton « ▶ Exécuter ».

    Relève le chemin et la distance totale affichés.

  2. Modifie uniquement la dernière ligne pour appeler la fonction avec d'autres routeurs, puis exécute de nouveau à chaque fois :

    • de "a" à "af"
    • de "ac" à "m"
    • de "b" à "aa"

    Note à chaque fois le chemin et la distance obtenus.

import math class Graphe: def __init__(self): self.adjacences = {} def _assure_sommet(self, s): if s not in self.adjacences: self.adjacences[s] = {} def ajout_arete(self, u, v, poids): self._assure_sommet(u) self._assure_sommet(v) self.adjacences[u][v] = poids self.adjacences[v][u] = poids def sommets(self): return list(self.adjacences.keys()) def sommets_adjacents(self, s): return list(self.adjacences[s].keys()) def distance_deux_sommets(self, u, v): if u == v: return 0 return self.adjacences[u][v] graphe = Graphe() # --- Arêtes du graphe --- graphe.ajout_arete("a","b",7) graphe.ajout_arete("b","c",14) graphe.ajout_arete("c","d",26) graphe.ajout_arete("d","l",14) graphe.ajout_arete("l","e",6) graphe.ajout_arete("e","f",3) graphe.ajout_arete("f","m",9) graphe.ajout_arete("a","i",33) graphe.ajout_arete("h","i",5) graphe.ajout_arete("h","o",13) graphe.ajout_arete("p","o",4) graphe.ajout_arete("i","c",23) graphe.ajout_arete("i","j",6) graphe.ajout_arete("i","p",16) graphe.ajout_arete("p","q",3) graphe.ajout_arete("p","v",9) graphe.ajout_arete("k","l",6) graphe.ajout_arete("d","e",12) graphe.ajout_arete("f","g",17) graphe.ajout_arete("j","k",19) graphe.ajout_arete("l","m",14) graphe.ajout_arete("m","n",21) graphe.ajout_arete("q","r",16) graphe.ajout_arete("s","t",22) graphe.ajout_arete("t","u",13) graphe.ajout_arete("v","w",15) graphe.ajout_arete("w","x",20) graphe.ajout_arete("x","y",9) graphe.ajout_arete("y","z",18) graphe.ajout_arete("z","aa",12) graphe.ajout_arete("aa","ab",23) graphe.ajout_arete("ac","ad",14) graphe.ajout_arete("ad","ae",10) graphe.ajout_arete("ae","af",19) graphe.ajout_arete("af","ag",24) graphe.ajout_arete("ag","ah",11) graphe.ajout_arete("a","h",20) graphe.ajout_arete("b","i",17) graphe.ajout_arete("c","j",18) graphe.ajout_arete("d","k",21) graphe.ajout_arete("g","n",16) graphe.ajout_arete("j","q",14) graphe.ajout_arete("k","r",22) graphe.ajout_arete("l","s",12) graphe.ajout_arete("m","t",17) graphe.ajout_arete("n","u",19) graphe.ajout_arete("o","v",10) graphe.ajout_arete("p","w",23) graphe.ajout_arete("q","x",12) graphe.ajout_arete("r","y",15) graphe.ajout_arete("s","z",18) graphe.ajout_arete("t","aa",9) graphe.ajout_arete("u","ab",20) graphe.ajout_arete("v","ac",16) graphe.ajout_arete("w","ad",11) graphe.ajout_arete("x","ae",24) graphe.ajout_arete("y","af",14) graphe.ajout_arete("z","ag",22) graphe.ajout_arete("aa","ah",13) def plus_court_chemin(graphe, point_depart, point_arrive): """ Retourne une chaîne "u-v-w-..." correspondant au plus court chemin. Affiche pas à pas les actions de l'algorithme. """ # Vérifications if point_depart not in graphe.adjacences or point_arrive not in graphe.adjacences: print(f"[ERREUR] Sommet absent: depart={point_depart!r} ou arrive={point_arrive!r}") return "" if point_depart == point_arrive: print(f"[INFO] Départ = Arrivée = {point_depart}. Chemin trivial.") return str(point_depart) # Initialisation dist = {s: math.inf for s in graphe.sommets()} pred = {s: None for s in graphe.sommets()} dist[point_depart] = 0 visites = set() print("=== Dijkstra (version simple sans heap) ===") print(f"Départ = {point_depart}, Arrivée = {point_arrive}") print("Distances initiales :", dist) print("===========================================") while len(visites) < len(graphe.sommets()): # choisir le sommet non visité avec la plus petite distance u = None min_dist = math.inf for s in graphe.sommets(): if s not in visites and dist[s] < min_dist: min_dist = dist[s] u = s if u is None: # plus de sommets atteignables break print(f"\n[Étape] On choisit '{u}' (distance = {dist[u]})") visites.add(u) if u == point_arrive: print("[Arrêt] Arrivée atteinte, on reconstruit le chemin.") break # mise à jour des distances des voisins for v in graphe.sommets_adjacents(u): if v in visites: print(f" - voisin '{v}' déjà visité, ignoré") continue w = graphe.adjacences[u][v] new_d = dist[u] + w print(f" - arête {u}--{v} (poids={w}), dist[{v}] actuelle={dist[v]}, nouvelle={new_d}") if new_d < dist[v]: dist[v] = new_d pred[v] = u print(f" -> amélioration: dist[{v}] = {new_d}, préd[{v}] = {u}") else: print(f" -> pas d'amélioration pour {v}") # Reconstruction du chemin if dist[point_arrive] == math.inf: print(f"\n[Aucun chemin] Impossible d'atteindre {point_arrive} depuis {point_depart}.") return "" chemin = [] cur = point_arrive while cur is not None: chemin.append(cur) cur = pred[cur] chemin.reverse() print("\n=== Résultat ===") print(f"Distance totale: {dist[point_arrive]}") print(f"Chemin: {'-'.join(chemin)}") print("================") print("-".join(chemin)) return "-".join(chemin) plus_court_chemin(graphe, "a", "p")


    
>>>

8. Activité : Les petits papiers en classe

À faire dans le cahier.

Pendant un cours de SNT, deux élèves veulent s’échanger un message en cachette. Mais il y a plusieurs problèmes :

Questions :

  1. Comment l’élève expéditeur peut-il envoyer un message malgré que celui-ci contienne plusieurs mots ?
  2. Comment s'organiser pour que le destinataire puisse remettre les papiers dans le bon ordre ?
  3. Comment l'élève expéditeur peut-il savoir que le destinataire a bien reçu chaque mot ?
  4. Comment le destinataire peut-il savoir qu’il a bien reçu tout le message et qu’il ne manque pas de mots ?
  5. Que doit faire l’expéditeur si le destinataire n'envoie pas la bonne réception d'un paquet ?

Ce scénario illustre les mêmes difficultés qu’Internet : découper les données, numéroter les paquets, vérifier qu’ils arrivent tous, et renvoyer ceux qui se sont perdus. C’est exactement ce que fait le protocole TCP.

9. Le protocole TCP

Sur Internet, une donnée (une image, un message, une page web…) est souvent trop grosse pour être envoyée d'un seul coup. On la découpe donc en petits morceaux appelés paquets, qui voyagent chacun de son côté à travers le réseau.

Ce découpage pose deux problèmes : un paquet peut se perdre en route, et les paquets peuvent arriver dans le désordre (le morceau n°5 avant le n°3, par exemple). Si on ne fait rien, le message reçu sera incomplet ou incompréhensible.

C'est justement le rôle de TCP (Transmission Control Protocol) : c'est un ensemble de règles qui permet d'échanger des données de manière fiable. Voici comment il s'y prend :

  • Connexion : avant d'échanger quoi que ce soit, les deux machines se « mettent d'accord » et établissent une connexion, un peu comme on dit « Allô ? » avant de commencer une conversation au téléphone.
  • Fiabilité : pour chaque paquet reçu, la machine renvoie un accusé de réception (« bien reçu ! »). Si l'expéditeur ne reçoit pas cette confirmation, il comprend que le paquet s'est perdu et il le renvoie.
  • Remise en ordre : les paquets sont numérotés. Même s'ils arrivent dans le désordre, TCP les replace dans le bon ordre avant de reconstituer le message d'origine.

Beaucoup de services utilisent TCP : le Web (HTTP/HTTPS), l'e-mail (SMTP, IMAP, POP) ou le transfert de fichiers (FTP).

En résumé : TCP garantit que les données envoyées arrivent complètes, fiables et bien ordonnées.

💻 Ordinateur A Serveur B 🖥️
Chez A : à envoyer
Chez B : reçu

connexion paquet accusé de réception paquet perdu

L'animation démarre dès qu'elle apparaît à l'écran.

10. QCM : as-tu bien compris le protocole TCP ?

À faire dans le cahier.

Tu noteras dans ton cahier les questions et les bonnes réponses associées.

Réponds à ces questions pour vérifier ce que tu retiens sur TCP, puis clique sur le bouton pour connaître ton score.

  1. À quoi sert le protocole TCP ?
    1. À échanger des données de façon fiable sur Internet.
    2. À fabriquer des mots de passe.
    3. À dessiner l'apparence des pages web.
    4. À recharger la batterie de l'ordinateur.
  2. Avant d'échanger des données avec TCP, que font les deux machines ?
    1. Elles établissent d'abord une connexion.
    2. Elles s'éteignent complètement.
    3. Elles suppriment tous leurs fichiers.
    4. Rien, elles envoient tout au hasard.
  3. Avec TCP, que se passe-t-il si un paquet de données se perd en route ?
    1. Toute la communication est annulée.
    2. Le paquet perdu est renvoyé.
    3. On l'oublie et tant pis pour le message.
    4. L'ordinateur plante aussitôt.
  4. Les paquets arrivent parfois dans le désordre. Que fait TCP ?
    1. Il laisse le message en désordre.
    2. Il remet les paquets dans le bon ordre avant de reconstituer le message.
    3. Il jette les paquets qui arrivent trop tard.
    4. Il demande à l'utilisateur de les trier lui-même.
  5. Parmi ces usages, lequel s'appuie sur TCP ?
    1. Le Web (HTTP/HTTPS), l'e-mail ou le transfert de fichiers.
    2. Allumer une lampe de bureau.
    3. Faire chauffer un plat au micro-ondes.
    4. Régler l'heure d'un réveil mécanique.

11. Activité : connexions filaires et non filaires.

À faire dans le cahier.

Voici une liste de connexions qui peuvent être utilisées pour transmettre de l'information sur le réseau internet :

Dans votre cahier, recopier le tableau ci-dessous puis placer chaque connexion dans la colonne correspondante : indiquer son nom dans la colonne « Connexion » et sa portée approximative dans la colonne « Portée ». Dans chaque partie du tableau, les connexions seront classées par ordre décroissant de portée.

Connexion filaire Connexion non filaire
ConnexionPortéeConnexionPortée
... ...
... ...
... ...
...
...

12. Fibre optique sous-marine :

La majeure partie du trafic internet international passe par des câbles de fibre optique déposés au fond de l'océan.

13. Activité : trajet d'une page web par fibre optique.

À faire dans le cahier.

On imagine un élève se baladant dans la rue et regardant sur son smartphone une page web située aux États-Unis, par exemple celle du Washington Post.

Refaire dans votre cahier le schéma suivant et le compléter.

14. Le DNS

Sur Internet, chaque machine (chaque site web) est identifiée par une adresse IP : une suite de chiffres, par exemple 93.184.216.34. C'est cette adresse que les ordinateurs utilisent réellement pour se retrouver. Le problème, c'est que ces suites de chiffres sont impossibles à retenir pour nous !

Pour nous simplifier la vie, on a inventé les noms de domaine : des adresses écrites avec des mots, faciles à lire et à mémoriser, comme www.example.com.

Mais alors, comment la machine sait-elle que le nom www.example.com correspond à l'adresse 93.184.216.34 ? C'est le rôle du DNS (Domain Name System, en français « système de noms de domaine »). Le DNS est un service qui fait la correspondance entre un nom de domaine et son adresse IP :

Que se passe-t-il quand tu tapes une adresse dans ton navigateur ?

  1. Tu écris www.example.com et tu valides.
  2. Ton ordinateur demande au DNS : « Quelle est l'adresse IP de ce nom ? »
  3. Le DNS répond : 93.184.216.34.
  4. Ton ordinateur peut enfin contacter le site à cette adresse, et la page s'affiche.

Une bonne image : le DNS fonctionne comme un annuaire téléphonique. Dans un annuaire, tu connais le nom d'une personne et tu cherches son numéro. Avec le DNS, tu connais le nom du site et il te donne son adresse IP. Sans lui, il faudrait retenir par cœur les chiffres de tous les sites que tu visites !

En résumé : le DNS est l'« annuaire d'Internet » qui traduit les noms de domaine (pour les humains) en adresses IP (pour les machines).

15. QCM : as-tu bien compris le DNS ?

À faire dans le cahier.

Tu noteras dans ton cahier les questions et les bonnes réponses associées.

Réponds à ces questions pour vérifier ce que tu retiens sur le DNS, puis clique sur le bouton pour connaître ton score.

  1. À quoi sert le DNS ?
    1. À fabriquer des adresses IP au hasard.
    2. À traduire un nom de domaine (comme www.example.com) en adresse IP.
    3. À protéger ton ordinateur contre les virus.
    4. À rendre ta connexion Wi-Fi plus rapide.
  2. À quoi peut-on comparer le DNS pour bien le comprendre ?
    1. À un annuaire qui relie un nom à un numéro.
    2. À un antivirus qui bloque les pirates.
    3. À une imprimante qui sort des documents.
    4. À une clé USB qui stocke des fichiers.
  3. Quand tu tapes www.example.com dans ton navigateur, que se passe-t-il d'abord ?
    1. Le site s'affiche directement, sans rien demander à personne.
    2. Ton ordinateur demande au DNS l'adresse IP qui correspond à ce nom.
    3. Ton ordinateur envoie un e-mail au site.
    4. Ton ordinateur redémarre tout seul.
  4. Qu'utilisent réellement les machines pour se retrouver sur Internet ?
    1. Les noms de domaine écrits en toutes lettres.
    2. Les adresses IP, c'est-à-dire des suites de chiffres.
    3. Uniquement des mots en français.
    4. Des codes-barres à scanner.
  5. Sans le DNS, que devrais-tu faire pour visiter un site ?
    1. Rien du tout, ce serait exactement pareil.
    2. Retenir par cœur l'adresse IP (les chiffres) de chaque site.
    3. Demander l'autorisation à ton opérateur à chaque visite.
    4. Débrancher puis rebrancher ta box.

16. Exercice : repérer un message frauduleux (hameçonnage).

À faire dans le cahier.

Votre professeur de SNT a réellement reçu ce message au mois d'août 2023 :

  1. Comment être certain que ce message n'est pas véritablement envoyé par l'administration française sans même avoir besoin de cliquer sur le lien ?
  2. Quel est le but cherché par les arnaqueurs avec ce genre de messages ?

17. Les réseaux pair à pair (P2P)

Dans un réseau pair à pair (ou P2P), chaque ordinateur peut être à la fois client et serveur. Cela signifie qu’il peut recevoir des données mais aussi en envoyer directement aux autres.

Exemple : dans un partage de fichiers en P2P, chaque utilisateur télécharge des morceaux d’un fichier depuis plusieurs ordinateurs, et envoie en même temps d’autres morceaux aux autres.

Avantage : pas besoin d’un serveur central unique, ce qui rend le système plus robuste et répartit la charge. Inconvénient : il peut être plus difficile à contrôler ou sécuriser.