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:

A faire dans le cahier.

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

On considère les 3 documents ci-dessous :

Charles Oyster écrit une lettre à son amie Carla Lobster. À l’aide des documents proposés, répondre aux questions suivantes.

  1. Indiquer quels sont les éléments qui sont précisés sur l’enveloppe de la lettre. A quoi servent-ils?
  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. Mentionner les informations dont a besoin le centre de tri de Paris pour acheminer la lettre.
  5. Mentionner les informations dont a besoin le postier pour acheminer la lettre.
  6. 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:

A faire dans le cahier.

Votre adresse IP est : 216.73.216.154

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. Si vous avez un smartphone, sortez-le puis :

    1. Ouvrez un navigateur (Firefox, Chrome, Safari..).
    2. Mettez-vous en navigation privée.
    3. Allez sur cette page.

    Voit-on l'adresse IP de votre smartphone?

4. Réseaux et sous-réseaux

A copier dans le cahier.

En IPv4, une adresse se compose de deux parties : la partie réseau et la partie machine. Le masque indique combien de bits servent à identifier le réseau (ou le sous-réseau).

Exemple :

L’adresse du réseau (ou du sous-réseau) se termine toujours par 0. Par exemple : 192.168.2.0 pour le sous-réseau 192.168.2.0/24.

5. Exemple d'un réseau :

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

En partant du principe que le masque sous-réseau est 255.255.255.0, 192.168.0.10 sait qu'il doit passer par la passerelle 192.168.0.1 pour accéder à un autre sous-réseau car il ne peut atteindre directement 192.168.4.12.

6. Exercice:

A faire dans le cahier.

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

Vous pouvez d'ailleurs ouvrir ce fichier à l'aide du logiciel filius.

Pour l'ensemble de ces réseaux, le masque de réseau est 255.255.255.0.

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

7. Exercice :

Sur Internet, les routeurs sont des « carrefours » qui font circuler les paquets d’information. Chaque lien entre deux routeurs a un coût (ici un temps de traversée / une latence en millisecondes). Trouver le plus court chemin, c’est choisir la succession de routeurs qui minimise ce coût total, pour que l’information arrive le plus vite possible.

En vous aidant du schéma ci-dessus, déterminez « à la main » le plus court chemin (suites de lettres) et son coût total pour les trois paires suivantes :

  1. a → p
  2. g → m
  3. t → ab

Heureusement, les points choisis précédemment sont proches. Il serait beaucoup plus long de trouver le chemin le plus court entre deux points très éloignés.

L'informatique est justement apparu pour répondre rapidement à ce genre de problème.

Plus bas, un script Python (déjà écrit) crée le graphe et implémente une version simple de l’algorithme de Dijkstra.

Lisez rapidement le code, puis répondez aux questions suivantes :

  1. Comment les arêtes sont-elles ajoutées ?

    Pourquoi voit-on un ajout dans les deux sens (u→v et v→u) aux lignes 14 et 15 ?

En bas de page, vous trouverez le code Python déjà prêt à être exécuté. La dernière ligne lance une recherche :

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

Travail demandé :

  1. Exécutez le programme tel quel. Notez le chemin et la distance totale affichés.

    Comparez avec votre raisonnement « à la main » pour a→p.

  2. Modifiez uniquement la dernière ligne pour répondre aux trois questions suivantes :
    • Quel est le plus court chemin du route "a" au routeur "af"?
    • Quel est le plus court chemin du route "ac" au routeur "m"?
    • Quel est le plus court chemin du route "b" au routeur "aa"?
  3. Observez les étapes affichées précédemment et expliquez en 2–3 phrases comment l’algorithme progresse vers l’optimum.
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")

Tests :

# Tests

Affichage :

Console:



    
>>>

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 contient 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 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

TCP (Transmission Control Protocol) est un protocole de communication qui permet d’échanger des données de manière fiable sur Internet.

Ses principales caractéristiques :

Exemples d’applications utilisant 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.

10. Une vidéo pour démarrer la compréhension du TCP:

11. Activité:

A faire dans le cahier.

Dans votre cahier, classer les différentes connexions permettant la transmission d'informations (4g,adsl etc.) dans le tableau ci-dessous :

Connexion filaire Connexion non filaire




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é:

A 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 Etats-Unis, par exemple celle du Washington Post.

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

14. Le DNS

A copier dans le cahier.

Le DNS (Domain Name System) est un service qui fait la correspondance entre une adresse lisible par l’humain (un nom de domaine) et une adresse IP utilisée par les machines.

Par exemple :

Sans le DNS, il faudrait retenir les adresses IP de tous les sites. Grâce à lui, on peut utiliser des noms simples, comme pour un annuaire téléphonique qui relie un nom à un numéro.

En résumé, le DNS est l’« annuaire d’Internet » qui traduit les noms de domaine en adresses IP.

15. Exercice :

A 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?

16. 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.