Chapitre 4: Réseaux
Dans ce chapitre, nous allons voir comment les ordinateurs peuvent communiquer entre eux sur internet grâce aux protocoles de communication.
1 Rappels de SNT: Les protocoles TCP/IP
Afin de transmettre un message d’une machine à une autre sur un réseau, celui-ci est découpé en plusieurs paquets transmis séparément. Article paquet sur Wikipédia
On a vu en seconde les deux protocoles fondamentaux d’internet:
- Le protocole IP: qui permet d’attribuer à chaque machine une adresse IP unique pour l’identifier sur le réseau.
- Le protocole TCP: qui permet d’assurer la communication de l’information en la découpant en paquets, et en s’assurant que tous les paquets sont reçus et conformes à l’information envoyée.
Chaque protocole ajoute des en-têtes aux paquets, sortes d’enveloppes cachant le contenu des paquets et permettant de leur ajouter des métadonnées.
Voici par exemple la structure d’un paquet ipV6 avec ses en-têtes.
2 Structures des réseaux
3 Le modèle en couche OSI
Le modèle OSI (Open System Interconnection) est un modèle en couche dans lequel chaque couche a un rôle particulier dans la communication.
Il contient 7 couches alors que le modèle TCP/IP vu en seconde n’en contient que 4.
3.1 Encapsulation des données
Lorsque la couche application envoie les données aux couches inférieures, elle y ajoute des métadonnées appelées «en-tête» ou «en-queue» destinées à la couche application de l’autre machine distante.
Chaque couche ajoute ses propres en-têtes à l’émission lorsque les données de l’application descendent les couches. Et ainsi la trame d’informations circulant sur la couche liaison est “surchargée des métadonnées” de chacune des couches supérieures.
À la réception, chaque couche récupère et détache les métadonnées qui lui sont destinées et transmet le message sans ces métadonnées à la couche supérieure.
3.2 La couche application
Les applications:
- web(HTTP) échangent des pages web, des données de formulaire, de session…
- mail(SMTP) échangent des emails, les stockent, permettent leur lecture…
- SSH, FTP, …
3.3 La couche transport
On découpe le message en segments et on y ajoute un numéro de port qui correspond à l’application qui l’utilise:
- HTTP: 80
- HTTPS: 443
- SMTP: 25
L’état de la connexion est vérifié, si tous les segments sont bien reçus et conformes grâce au calcul d’une somme de contrôle.
La couche transport propose deux principaux protocoles pour le transfert de données vers une machine distante:
- le protocole TCP(Transmission Control Protocol) pour un transfert connecté et fiable,
- le protocole UDP(User Datagram Protocol) pour un transfert déconnecté et non fiable.
Chaque protocole est utilisé dans des applications différentes: temps réel pour l’UDP, non-temps réel, mais sensible à la perte au réordonnancement pour le TCP.
3.4 La couche réseau/internet
On ajoute les adresses IP de la source et du destinataire, la longueur du paquet, sa durée de vie pour former ce que l’on appelle un paquet IP.
3.5 La couche liaison
Le paquet et encapsulé dans une trame qui contient l’adresse unique de la machine dans le réseau local.
Puis la trame va transiter à travers le réseau physique: Ondes radio, fibre optique, câbles RJ45… jusqu’à atteindre le réseau local de la machine destinataire ou chaque couche va utiliser les en-têtes fournis par la même couche que la machine source.
4 Le protocole du bit alterné
Le protocole du bit alterné est un protocole de réseau simple fonctionnant au niveau de la couche liaison de données (couche OSI 2) qui retransmet les messages perdus ou corrompus.
Il était utilisé dans le réseau ARPANET, l’ancêtre d’internet.
4.1 Fonctionnement
Alice veut envoyer à Bob un message M, qu’elle a prédécoupé en sous-messages M0, M1, M2,…
Nous sommes à la couche 2, on souhaite une solution légère qui assure que tous les paquets sont reçus dans l’ordre(pas comme en TCP couche 4).
On va simplement utiliser un en-tête à un bit.
Lorsque Alice envoie un message, elle le renvoie en continu, avec le même bit d’en-tête, jusqu’à ce qu’il reçoive un accusé de réception de B contenant le même bit d’en-tête. Lorsque cela se produit, A inverse le bit d’en-tête et commence à transmettre le message suivant.
Lorsque Bob reçoit un message qui n’est pas corrompu et a le bit d’en-tête 0, il commence à envoyer ACK0
(Accusé de réception de 0 aknowledgement en anglais) et continue à le faire jusqu’à ce qu’il reçoive un message valide avec le numéro 1. Puis il commence à envoyer ACK1
, etc.
Cela signifie qu’Alice peut toujours recevoir ACK0
alors qu’elle transmet déjà des messages avec le bit d’en-tête un. (Et vice versa.) Elle traite ces messages comme des codes d’acquittement négatif (NAK). Le comportement le plus simple est de les ignorer tous et de continuer à transmettre.
4.2 Illustrations
Cas où le sous-message est perdu
Cas où le ACK est perdu
Le protocole a bien détecté le doublon du sous-message M1.
Cas où un sous-message est en retard
Le protocole a bien détecté le doublon du sous-message M1… mais que se passerait-il si notre premier sous-message M1 était encore plus en retard ?