La chronique de Ben


Comment fonctionne l'internet?

L'internet est désormais à la portée de tous, plus besoin d'être informaticien pour s'y promener. A voir la vitesse à laquelle nos petites têtes blondes apprennent à s'en servir on serait même tenté de dire que l'internet est un vrai jeu d'enfant. Mais si l'utilisation d'internet est relativement simple, son fonctionnement est moins évident.

Le premier problème qui se pose est de savoir comment il est possible de transmettre des données d'un ordinateur à un autre. Par analogie, imaginons deux personnes qui se parlent. Pour que la voix parvienne de l'une a l'autre il faut un canal de transmission, en l'occurrence il s'agit de l'air. Dans le cas de l'ordinateur il s'agit généralement d'un câble de type coaxial ou torsadé. La bouche et les oreilles de l'ordinateur sont émulées par la carte réseau et sa voix est un signal électrique.

Un réseau local est comparable à une foule, quand un ordinateur veut parler à un autre il crie. Tous les ordinateurs du réseau entendent ce qu'il dit, mais seul celui ou ceux à qui est destiné le message l'écoutent (cette nuance entre entendre et écouter est importante). D'un point de vue plus terre à terre, tous les ordinateurs sont raccordés par le même câble, donc lorsqu'on envoie le signal électrique ils le reçoivent tous en même temps, la carte réseau traite le signal et l'ordinateur détermine si le message lui est destiné, si ce n'est pas le cas il l'ignore tout simplement.

Bien sûr, si toute la foule se met à crier dans tous les sens au même moment, plus personne ne comprends rien. Il en est de même pour les ordinateurs, si plusieurs d'entre eux tentent de parler en même temps, le signal électrique est faussé. C'est ce que l'on appelle une collision. Pour parer à ce problème, ils peuvent éviter les collisions en parlant chacun à leur tour pendant un certain temps, ou recommencer à transmettre à chaque fois qu'ils détectent une collision (après avoir attendu un délai aléatoire, histoire d'éviter de se couper à nouveau la parole).

Si l'un des protagonistes a l'intention de faire un long discours, il risque de monopoliser le canal et d'empêcher les autres de parler. De plus, si le destinataire n'a pas bien compris une partie du message, et qu'il demande à l'émetteur de le répéter, cela risque de s'éterniser. On a donc décidé de découper le message en paquets plus ou moins longs selon l'usage que l'on en fait. Ces paquets sont comparables à des enveloppes postales et contiennent l'adresse de l'envoyeur, celle du destinataire, quelques données administratives et le message en lui-même (mais pas de timbre ;o). Si le destinataire a bien reçu le paquet, il envoie une brève réponse à l'envoyeur. Si l'envoyeur ne reçoit pas ce paquet-réponse, il supposera que le paquet qu'il avait envoyé s'est perdu ou n'a pas été compris et recommencera à transmettre quand il en aura la possibilité.

Les adresses identifiant les connexions au réseau sont des numéros, stockés sur 32 bits et symboliquement découpés en quatre. Cela donne une suite de quatre nombres de 0 à 255, par exemple "193.168.74.130". Elles sont utilisées dans le cadre du protocole IP (Internet Protocol) et sont donc communément appelées "adresses IP". Ces adresses peuvent être utilisées librement sur un réseau local, mais leur utilisation est régulée par des organismes internationaux lorsqu'on les utilise sur le réseau mondial internet (afin que plusieurs machines dans le monde n'utilisent jamais la même adresse au même moment). Lorsque vous vous connectez via un fournisseur d'accès, c'est ce fournisseur qui vous attribue une adresse parmi celles qui lui sont réservées.

Evidemment, dans le cas d'une transmission distante passant par l'internet, on ne peut pas simplement crier le message à tous les ordinateurs connectés dans le monde entier, comme on le ferait sur un réseau local. Mais alors, demanderez-vous, comment la voix de l'ordinateur trouve-t-elle son chemin à travers le monde pour arriver précisément jusqu'à son correspondant ? C'est là que les routeurs interviennent. Comme leur nom l'indique, les routeurs sont des machines qui permettent de trouver des chemins entre deux points. A cette fin, ils possèdent des tables dans lesquelles ils font correspondre des classes d'adresses IP avec les réseaux vers lesquels ils doivent faire suivre les paquets. On peut imaginer par exemple que tous les paquets qui vont vers une adresse IP débutant par 193 soient envoyés vers un réseau précis (ou vers un autre routeur), et ainsi de suite. Les routeurs construisent et mettent continuell ement à jour ces tables en discutant entre-eux. Chaque routeur signale aux routeurs les plus proches vers quels endroits il peut envoyer les paquets, et en combien de temps, afin que les autres puissent déterminer quel est le chemin le plus rapide. Mais comme la rapidité fluctuera en fonction de l'utilisation de la ligne, il est tout à fait possible que deux paquets successifs ayant la même destination prennent des chemins totalement différents. Il est également courant qu'ils n'arrivent pas à destination dans le bon ordre, c'est pourquoi ils sont numérotés. Le destinataire reconstruit le message intégral au fur et à mesure de l'arrivée des paquets et envoie des paquets-réponse à l'envoyeur pour qu'il sache si les paquets ont bien été reçus.

Ce n'est pas le tout de recevoir et d'envoyer des messages mais encore faut-il savoir quel programme doit les traiter car, comme nous l'avions vu dans l'article "Comment fonctionne un programme sous Windows ?", il est tout à fait possible que plusieurs programmes fonctionnent au même moment sur une machine. On utilise donc des "ports", qui ne sont en fait que des nombres qui identifient des programmes. Certains de ces programmes sont devenus des classiques et leurs ports sont devenus des standards, le nombre est donc toujours le même. Les autres programmes peuvent utiliser n'importe quel autre nombre. Parmi les classiques on retrouve tous les programmes qui utilisent les protocoles HTTP (transmission de pages web), SMTP (envoi et transfert de courrier électronique), POP (demande et réception de courrier électronique), ICMP (test et gestion de la ligne), FTP (transfert de fichiers), etc... (Un protocole est un ensemble de règles qui détermine le comporteme nt, les usages et le vocabulaire à adopter pendant la transaction)

Nous pouvons maintenant faire une petite synthèse de ce que nous venons de voir à l'aide d'un exemple simple. Que s'est-il donc passé lorsque vous êtes arrivé sur cette page ? L'adresse internet de la page est "https://www.liensutiles.org/archben02.htm", ce qui signifie que le protocole utilisé est HTTP, que le nom DNS du serveur est www.liensutiles.org et que l'on demande le fichier "/archben02.htm". Première chose, il fallait connaître l'adresse IP du serveur auquel on devait demander la page, pour pouvoir lui envoyer les paquets. Pour obtenir cette adresse, votre ordinateur a fait une demande au serveur DNS (dont l'adresse est donnée par le fournisseur d'accès internet). Ce serveur a regardé dans ses tables et trouvé l'adresse IP qui corresponds à la machine identifiée par "www.liensutiles.org". Votre ordinateur a ensuite créé et envoyé un paquet contenant un message suivant le protocole ICM P pour demander si le serveur est accessible. S'il n'avait reçu aucune réponse, au bout d'un certain temps il aurait affiché un message d'erreur. Le serveur "www.liensutiles.org" a répondu à ce message et votre navigateur a alors envoyé une requête HTTP demandant la page "/archben02.htm". Le serveur a envoyé la page, probablement en utilisant plusieurs paquets, qui auront sans doute pris des chemins differents et que votre navigateur a du remettre dans l'ordre. Pour chaque paquet arrivé, le navigateur a envoyé un avis de réception et les paquets perdus ou mal compris ont été retransmis. Une fois la page arrivée, le navigateur l'a analysée pour y trouver des marqueurs HTML représentant des images, il a donc utilisé l'adresse internet de ces images pour demander au serveur de les lui transmettre selon le même principe, après quoi il les a affichées.

Pour tout commentaire, Benoit Fries
© Ben (Benoit Fries) 2000.