TCP, ou comment notre ordinateur joue au puzzle sans qu’on le sache

Le réseau internet est grand, les routes possibles sont très nombreuses et le nombre de messages qui circulent est gigantesque. Si on veut se faire une idée, il s’échange dans le monde l’équivalent de 2000 films, des vrais, de bonne qualité comme au cinéma… par seconde. Du coup il peut arriver que des messages se perdent. Par exemple si un routeur reçoit trop de messages et n’a plus de place dans sa mémoire pour les stocker avant de les renvoyer, les messages vont être perdus. Et si j’envoie mon message par un chemin et qu’un des routeurs sur ce chemin est indisponible il peut ne pas arriver à destination. Du coup, pour ne pas que plein de messages perdus ou trop vieux/devenus inutiles circulent sur le réseau en augmentant les embouteillages, on autorise à chaque message un nombre maximum de passages par les routeurs, par exemple 30. C’est comme si notre message avait 30 tickets, et à chaque passage dans un routeur il doit donner un ticket. Si a un moment il n’a plus de ticket, c’est qu’il a pris un mauvais chemin et s’est perdu. Et pour ne pas encombrer le réseau les routeurs le font disparaître.

Mais alors, vu qu’un message peut se perdre ou être jeté par un routeur, comment faire pour être sûre que mes messages arrivent bien à destination ? Il y a une solution toute simple : quand un ordinateur reçoit un message, il répond à celui qui a envoyé le message que c’est bon, le message est bien arrivé. En informatique cela s’appelle un acquittement. C’est un peu comme les accusés de réception sur le courrier. Pour une lettre très importante on peut demander (en payant un peu plus cher) de recevoir un papier qui nous dit quand notre lettre a été donnée au destinataire. Une fois qu’on a reçu l’acquittement on est sûr que tout s’est bien passé.

Et si on ne reçoit pas l’acquittement, on ne sait pas si c’est notre message qui s’est perdu ou juste l’acquittement. Mais dans le doute on renvoie le message, pour être sûr. Bon ça ça marche mieux avec un ordinateur, parce que renvoyer un message c’est facile et ça ne coûte pas grand chose. Par contre si notre lettre contenait tout un dossier avec des documents (pour l’inscription au collège par exemple) si on doit la renvoyer il faut remplir de nouveau le dossier, payer un nouvel envoi, et perdre encore un jour ou deux.

Et si on veut envoyer non plus une lettre mais une grande armoire, comment on fait ? Dans la vraie vie en général on démonte l’armoire, on met les morceaux dans différents colis (pour que ça ne fasse pas un colis trop lourd), on numérote les colis (pour vérifier qu’on a tout à l’arrivée) et on les envoie. Celle qui reçoit les colis vérifie qu’elle a bien tout reçu en regardant les numéros des colis, regarde si les paquets ne sont pas abîmés puis signe le papier de livraison pour dire que tout va bien.

Et bien en informatique c’est pareil. Il y a ce qu’on appelle le Protocole de Contrôle de Transport (TCP en anglais) qui va permettre de s’assurer que j’ai bien tout reçu et de mettre les choses dans l’ordre.

Mettons que j’essaie de récupérer une grande photo sur un site web. Cette image est trop grande pour être envoyée en une fois. Ça occuperait le câble pendant trop longtemps, les routeurs sur le chemin devraient utiliser beaucoup de mémoire pour stocker ces gros messages, et au moindre problème il faudrait recommencer l’envoi de toute la photo.

C’est donc un ordinateur, celui qui stocke l’image, qui va la découper en petits morceaux, écrire sur chacun son numéro, la destination et notre adresse, puis envoyer. En informatique on n’a pas de camions de livraison, et donc chaque morceau que l’on appelle un paquet va partir séparément, voyager dans le réseau en suivant les tables de routage et arriver à destination.
Notre ordinateur qui reçoit les messages va recevoir et vérifier les morceaux, envoyer des acquittements pour les morceaux qu’il a bien reçu. Par exemple il va dire quelque chose qui ressemble à :
« J’ai bien tout jusqu’au morceau numéro 12, j’attends le 13. »
et un peu plus tard
« Maintenant j’ai tout jusqu’au 15, j’attends le 16. »

Le site web va envoyer les paquets les uns après autres, et si au bout d’un moment il n’a pas reçu la confirmation que nous avons bien reçu un paquet il le renvoie. Quand notre ordinateur a tout reçu, il va remettre les morceaux ensemble dans le bon ordre et pouvoir nous afficher l’image totalement reconstituée.

En fait, sans qu’on s’en rende compte, notre ordinateur passe son temps à faire et défaire des puzzles. Mais bon un puzzle avec les pièces numérotées pour pouvoir facilement les remettre dans l’ordre c’est tout de suite beaucoup moins difficile.

Retour : Le routage, ou comment les messages arrivent à destination

La suite : Les adresses IP, et les annuaires du net