Ce billet fait suite au deux billets précédents.
Après avoir compris que tout est un ordinateur et que tout est un logiciel, j’ai compris une dernière chose qui a bien changé ma vision d’internet et que je vais vous expliquer dans cet article.
Communiquer à distance Link to heading
De tout temps, l’Homme… a cherché à automatiser des tâches. Il s’agit même sûrement d’un des buts fondamentaux de la technologie. C’est alors sans surprise que dans les domaines où il est nécessaire de réaliser beaucoup d’opérations mathématiques comme des multiplications ou des divisions, les humains aient plutôt bien accueilli des technologies capables de réaliser ces tâches à leur place.
La technologie ultime pour ces tâches-là, c’est bel et bien l’ordinateur. En implémentant des algorithmes et en exécutant des programmes, un ordinateur peut calculer quasiment n’importe quoi, donner la réponse beaucoup plus vite et d’une bien meilleure fiabilité.
Après avoir vu que les ordinateurs pouvaient très bien calculer, les humains se sont rendus compte qu’ils pouvaient permettre un très grand nombre de tâches supplémentaires comme afficher du texte, des images, des interfaces graphiques, ils pouvaient retenir une grande quantité de données d’une manière organisée, facilement accessible et faire plein d’opérations dessus rapidement.
Bien utiles ces ordinateurs. Un beau jour, quelqu’un en avait marre de trimbaler des disques durs d’un ordinateur à un autre, et s’est demandé s’il n’y avait pas moyen de leur permettre de communiquer entre eux directement.
Le Far West Link to heading
« Comment ? » me demanderiez-vous, eh bien on peut se baser sur les manières rudimentaires de communiquer des gens à l’époque. L’imaginaire autour du Far West est bien utile pour illustrer ça.
Il y avait les communications écrites, comme les lettres manuscrites ou imprimées qu’on transportait d’un endroit à un autre. Il y avait aussi les peuples autochtones, qui communiquaient sur de longues distances en allumant des feux et en créant des nuages de fumée.
Et puis il y avait les colons étasuniens, qui disposaient d’une bonne avance technologique et qui pouvaient communiquer avec le télégraphe. Ils plantaient des câbles électriques tout au long de leur trajet et branchaient un outil qui pouvait générer un courant électrique sur la ligne et un autre qui faisait un “beeeep” quand il percevait un courant électrique.
Cette dernière méthode est vachement intéressante puisqu’elle implique de l’électricité, et les ordinateurs marchent bien avec l’électricité, on va alors se concentrer dessus !
Alors on peut donc faire “beeeeper” un appareil à plusieurs kilomètres de distance, super mais comment fait-on passer un message comme « Bonjour » par exemple ?
Ce problème est en fait similaire pour les nuages de fumée, Et c’est là que vous allez penser au code morse bien sûr ! On envoie des longs beeeep et des courts beep. À chaque lettre de l’alphabet et à chaque chiffre correspond une suite différente de longs beeeep et courts beep. On sépare chaque caractère par une pause, et voilà le travail !
En ayant pour seul outil un pauvre beep, on peut en fait communiquer des messages très complexes.
Maintenant, il est facile d’imaginer qu’au lieu d’un appareil qui fait beep beep, un ordinateur soit équipé d’un composant qui perçoit un courant électrique et qui détecte les longs et courts beep et décode directement le code morse envoyé par un autre ordinateur, qui lui serait branché à un appareil qui émet un signal électrique.
Une fois qu’on a fait un setup comme ça, un ordinateur peut alors facilement envoyer un message à un autre ordinateur. Ils pourraient même facilement s’envoyer des messages comme dans une application de messagerie, les possibilités sont infinies !
Méthodes modernes Link to heading
Maintenant qu’on a vu cet exemple, il faut bien dire qu’aujourd’hui les méthodes pour envoyer une information d’un ordinateur à un autre sont beaucoup plus complexes et efficaces.
Méthodes filaires Link to heading
Comme à l’époque, on utilise encore beaucoup des fils ou des câbles pour transporter l’information. Seulement, ça n’est plus simplement des beeeep qu’on transporte maintenant !
Là où le télégraphe Morse transmettait de l’information grâce à un courant électrique qui passait dans un haut-parleur, aujourd’hui l’information réside dans une onde électromagnétique qui se déplace dans les fils électriques et qui peut-être perçue grâce à des voltmètres qui mesurent la valeur de la tension électrique. Une « onde électromagnétique » c’est en gros de la lumière ! Mais en l’occurrence pas visible à l’oeil nu.
Il existe tout un tas de techniques pour faire transiter de l’information avec une onde, en changeant son intensité, sa phase ou sa fréquence et c’est un champ de recherche très riche et plutôt passionnant. Pour aller plus loin, je vous conseille les ressources de Deus Ex Silicium, qui pour ce que j’en ai vues ont l’air très bien.
Voici un exemple de comment on peut passer faire 2 bits d’information en changeant la phase d’une onde :

On avance d'1/2 phase, puis on recule d'1/4, puis on avance d'1/4
Ces techniques-là se retrouvent dans la technologie de l’ADSL, des câbles ethernet, des câbles HDMI, USB etc. De manière générale, quand vous branchez un câble entre deux appareils pour les faire “communiquer”, eh bien c’est de cette manière qu’ils communiquent.
Il y a aussi la technologie de la fibre optique qui fait transiter une onde électromagnétique très similaire à la lumière visible, et au lieu de la faire voyager dans des fils de métal, on la fait voyager dans une « fibre optique » justement, qui est en gros un fil de verre. L’intérêt est que l’onde est beaucoup moins atténuée et perturbée quand elle voyage dans un milieu comme ça et on peut donc augmenter le débit.
L’inconvénient, c’est que ça coûte plus cher, c’est pour ça qu’il n’y en a pas partout.
Méthodes sans-fils Link to heading
Maintenant qu’on a vu les méthodes filaires, vous allez vous demander à propos du sans-fil.
Vous utilisez sûrement les technologies Wi-Fi (Wireless Fidelity), 4G ou 5G. Celles-là font aussi voyager des ondes électromagnétiques mais non pas dans un câble électrique ou dans une fibre optique mais dans l’atmosphère… Tout simplement ! L’onde voyage d’une antenne à une autre.
Ça peut paraître bizarre que ça puisse être possible, et vous pourriez vous poser la question « Pourquoi donc s’embêter avec des câbles si on peut juste les émettre comme ça ? » et la réponse est que dans l’atmosphère, les ondes électromagnétiques sont énormément perturbées et s’atténuent rapidement, et c’est pourquoi on choisit encore des câbles dans beaucoup de cas.
D’ailleurs, je dis « dans l’atmosphère », mais les ondes électromagnétiques voyagent également très bien dans l’espace, comme le montre les sondes spatiales, les satellites GPS etc… Et donc ça peut paraître encore plus bizarre, mais contrairement à une onde sonore qui correspond à un déplacement de molécule et donc s’inscrit dans un milieu matériel, les ondes électromagnétiques à la perturbation d’un champ électrique et d’un champ magnétique qui s’auto-entretien et se propage dans l’espace, pas dans un milieu spécifique.
Une antenne, c’est concrètement une barre d’un métal conducteur reliée à un fil électrique. Je sais que cela peut paraître assez étonnant de simplicité, et expliquer en détail pourquoi cela marcherait rendrait ce billet de blog un peu trop long, mais je vous recommande chaleureusement les vidéos de la chaîne ScienceClic : Le champ électromagnétique et Les ondes électromagnétiques si vous voulez comprendre plus en détail.
Ce qu’il faut comprendre, c’est que le signal électrique (qui est sous la forme d’une onde) sera traduit par l’antenne en une onde électromagnétique équivalente qui va se propager dans toutes les directions.
Vous pouvez aller jouer avec cette simulation d’ondes radio que je trouve amusante et qui vous permettra peut-être d’avoir une meilleure image mentale de ce qui se passe.
À retenir Link to heading
Résumons ce qu’on a dit plus haut :
-
Comme le télégraphe à l’époque du Far West, on peut faire beeeeper un appareil en faisant transiter un signal électrique (une variation de tension électrique) au travers d’un fil conducteur.
-
À partir d’un simple beeeep, selon qu’on peut le faire plus long ou plus court, on peut se mettre d’accord sur une correspondance entre les beeps courts et les beeeeps longs et l’alphabet, et alors on peut transmettre concrètement des phrases complètes.
-
Aujourd’hui, au lieu des beeps, ce sont des ondes électromagnétiques dont on change la fréquence, la phase ou l’intensité pour transmettre l’information. Ces ondes électromagnétiques peuvent voyager dans des fils de cuivre (ADSL, HDMI, USB, Ethernet etc…), des fibres optiques, ou simplement dans l’espace, très pratique mais débit un peu limité à grande distance.
-
Les ordinateurs peuvent percevoir tous ces signaux et être programmés pour les recevoir, les interpréter et les émettre.
Formation d’un réseau Link to heading
Analogie de la poste Link to heading
Peut-être êtes vous trop jeune pour avoir vraiment utilisé les services de La Poste. Je sais que pour ma part, je n’ai jamais fait grand chose d’autre qu’envoyer des cartes postales ou des documents administratifs. Mais une analogie avec La Poste (et ses homologues dans d’autres pays) nous aidera à avoir une intuition de comment l’information est véhiculée au sein des réseaux informatiques.
On va prendre l’exemple d’une lettre adressée au président de la république française depuis la France, car grâce à la franchise postale, on aura pas besoin de la payer !
Vous allez alors écrire votre lettre au président, puis la plier et la mettre dans une enveloppe. Ensuite, d’après ce site web vous devrez indiquer le destinataire et son adresse (l’Elysée donc) de la sorte :
Monsieur le président de la République
Palais de l’Élysée
55 rue du Faubourg-Saint-Honoré
75008 Paris
Et vous mettrez le tout dans une boîte aux lettres.
J’aimerais vous faire comprendre 2 concepts : le concept de protocole et le concept de hiérarchie.
Voyez, ci-dessous, le trajet étape par étape de votre lettre lorsqu’elle est envoyée de Marseille pour arriver à Paris :
Hiérarchie Link to heading
La manière dont j’ai organisé le schéma fait que ça saute aux yeux, mais on distingue bien 4 niveaux de livraison de lettres, le niveau local, départemental, régional et national. Ces niveaux ne représentent pas la réalité du circuit postier en France, il s’agit juste d’une manière logique et intuitive de comment construire un tel circuit, et ça nous sera bien utile pour notre analogie ;)
Il y a donc le haut de la hiérarchie, à savoir le niveau national (si on voulait imaginer le système postier de la Terre entière, on pourrait même imaginer le niveau international, mais on va rester sur la France). À partir du niveau national, on peut zoomer sur n’importe quelle région, puis n’importe quel département de cette région, puis n’importe quel ville ou village de ce département, puis n’importe quelle adresse ou rue de cette ville/village.
Chaque niveau supérieur englobe tous les niveaux inférieurs, et on en parle en termes de niveau pour simplifier le traitement. Il y a à peu près le même nombre d’entités à gérer à chaque niveau : le niveau national gère ~18 régions, chaque régions gère ~6 départements (car il y a 101 départements en tout), chaque département gère ~346 villes/communes ainsi de suite. On a ça au lieu d’avoir le niveau national qui doit gérer des dizaines de milliers de villes.
On remarque aussi que l’adressage sur notre lettre désigne justement ces différents niveaux :
| Lettre | niveau |
|---|---|
| Monsieur le président de la République | Personnel |
| Palais de l’Élysée | Local |
| 55 rue du Faubourg-Saint-Honoré | Local |
| 75008 Paris | Local et départemental |
Voici la liste des quelques premières villes de France par ordre alphabétique :
On voit qu’il existe des villes avec le même nom qu’on peut alors différencier par leur département ou région, donc aux niveaux supérieurs. De la même manière, il y a des villes dans le même département mais avec des noms différents.
Protocole Link to heading
À chaque niveau, on a donc une poste ou un centre postier qui est chargé de lire l’adresse sur la lettre et de se poser la question suivante : « La destination finale est-elle au niveau inférieur au mien ? »
- Si la réponse est non, la poste l’enverra simplement au niveau suivant sans se poser de question. Par exemple, la poste des Bouches-Du-Rhône qui reçoit une lettre destinée à une adresse en Bretagne, en Occitanie, ou en Normandie n’a pas besoin de connaître l’adresse avec plus de précision pour savoir qu’elle ne pourra pas la livrer, elle l’envoie donc immédiatement à la poste nationale.
- Si la réponse est oui, la poste devra orienter la lettre vers la poste la plus pertinente du niveau inférieur. Si la poste des Bouches-Du-Rhône reçoit une lettre destinée à une adresse dans la ville d’Aix-En-Provence (à côté de Marseille), alors elle devra l’envoyer à la poste locale d’Aix-En-Provence.
Continuons sur l’exemple que j’ai donné.
On impose à tous les envoyeurs de courriers d’indiquer sur leur enveloppe :
Adresse:
Niveau 0: <rue>
Niveau 1: <ville>
Niveau 2: <département>
Niveau 3: <région>
Niveau 4: <pays>
Imaginons une poste de niveau 2 soit départementale (disons des Bouches-du-Rhône). Elle peut envoyer une lettre aux postes de toutes les villes en son sein listées dans la variable liste_villes, et elle peut envoyer une lettre à la poste de la région, poste_région dans laquelle elle se situe. Quand elle reçoit une lettre, elle réalise le travail suivant :
Poste_Régionale = 'POSTE_PACA'
Postes_Locales = ['Aix-en-Provence', 'Allauch', 'Alleins', ...]
Lire niveau1
SI:
Niveau1 EST DANS Postes_Locales:
ENVOYER À Niveau1
SINON:
ENVOYER À Poste_Régionale
L’exemple de programme vaut pour tous les autres départements, mais également pour les postes au niveau régional.
Et voilà le travail, on vient de définir des entités, les envoyeurs et les postes, des conditions à remplir pour les envoyeurs et des programmes à effectuer pour les postes. Eh bien on appelle ce genre de système : un protocole.
Alors on pourrait améliorer notre protocole, comme par exemple en rajoutant des entités comme des destinataires, des postiers, des lettres recommandées etc. Avec pour chacun des programmes à effectuer et des conditions à remplir. On pourrait aussi rajouter des cas spécifiques : que faire quand un niveau d’une adresse n’est pas rempli ? Que faire si la rue n’existe pas ou plus ? Que faire si la lettre a été perdue en chemin ?
Et on rajoute tous ces cas spéciaux dans le programme des entités de notre protocole.
Toutes les télécommunications reposent sur des protocoles, par exemple le protocole HTTP que vous utilisez pour naviguer sur un site web. Le protocole HTTPS qui a été construit sur le protocole HTTP mais qui rajoute du chiffrement pour plus de sécurité. Le protocole WiFi ou Bluetooth, ainsi que 3G, 4G, 5G etc…
Retour à l’informatique Link to heading
Il s’avère que notre analogie avec la poste est très proche de ce qu’il se passe avec des ordinateurs.
Tout d’abord, le transfert physique de la lettre par le personnel de la poste correspond au transferts physiques de données par des câbles ou par des ondes radios, comme je l’ai expliqué plus haut.
Ensuite, d’un point de vue du transfert de donnée d’un endroit à un autre, les ordinateurs sont hiérarchisés à l’instar des postes de départements ou de régions. Le téléphone ou l’ordinateur portable que vous avez dans les mains est au plus bas dans la hiérarchie (sauf si vous l’avez configuré d’une manière particulière), votre box internet est au niveau juste au-dessus, ensuite il y a bien d’autres routeurs à plus haut niveau qui peuvent parler à toutes les box internet d’un quartier, puis d’une ville, puis d’un département… et ainsi de suite. On parle en général de réseaux et de sous-réseaux.
Chacun de ces ordinateurs à plus haut niveau, qu’on appelle en général des routeurs, sont programmés pour respecter le protocole d’internet qu’on appelle le protocol TCP/IP : Transmission Control Protocol/Internet Protocol.
Chaque ordinateur dispose d’une adresse, qui l’identifie par rapport à tous les autres du réseau. C’est la fameuse adresse IP. À l’instar des villes de France, certains ordinateurs ont les mêmes adresses, mais pas dans les mêmes sous-réseaux, ce qui fait qu’on peut quand même les différencier. Certains sont dans les mêmes sous-réseaux mais avec des adresses différentes etc… Chaque ordinateur a, sinon une adresse unique, un ensemble unique d’adresses.
Anatomie d’un réseau local Link to heading
Sans rentrer dans des détails infinis, on peut disséquer rapidement mon réseau local, celui dont j’ai déjà parlé dans Mon Setup.
On peut constater qu’il y a donc ma Freebox Pop (qui est un ordinateur qui agit comme un routeur) branchée par fibre optique et qu’elle est reliée par un câble à mon ordinateur (mon homelab) et par des ondes électromagnétique suivant le protocole WiFi à plusieurs autres appareils.
Comme vous vous en doutez sûrement, ma freebox est donc reliée par fibre optique au routeur de mon quartier, qui est donc hiérarchiquement au-dessus.
Quand on regarde la configuration de ces appareils, on constate qu’ils ont tous une adresse IP, d’ailleurs on voit que ces adresses IP commencent toutes par 192.168. C’est en fait le préfix pour de nombreux sous-réseaux, que ce soit chez moi ou chez vous ;)
Analysons une transmission d’un appareil sur mon réseau à un autre. La transmission d’information sera ce qu’on appelle un ping ou plus techniquement, une requête ICMP. L’ICMP est un protocole très simple, il permet aux ordinateurs qui le suivent de vérifier simplement et rapidement qu’ils sont connectés. C’est Un peu comme si un ordinateur disait « Hey, tu es là ? » et l’autre répondait « Oui je suis là ! » et voilà c’est tout.
Voilà ce que je peux voir sur le logiciel Wireshark qui permet d’analyser les échanges d’information sur un réseau lorsque j’utilise mon ordinateur pour pinger l’appareil iPad :
À l’aide de ce logiciel, on voit quelles bits mon ordinateur reçoit et comment il les interprète.
Si on analyse une de ces transmissions, on voit qu’elles sont faites de 0 et de 1, comme on l’a toujours dit !
Et on voit que ces 0 et ces 1 correspondent à des informations utiles, par exemple, certains bits indiquent le type ou la version du protocole, d’autres indiquent l’adresse, d’autres (comme les checksums) indiquent que l’information n’a pas été altérée pendant l’envoi etc…
Conclusion Link to heading
Voilà c’est tout pour aujourd’hui ! J’espère qu’en lisant cet article vous avez compris que :
- Internet, c’est des ordinateurs qui se transfèrent des données ;
- Ces transferts de données, ce sont des ondes électromagnétiques qui voyagent dans des fils ou dans l’espace ;
- Grâce à ces transferts de données, on peut envoyer directement une information d’un ordinateur à un autre ;
- En organisant plusieurs ordinateurs en réseau, on peut envoyer une information de n’importe lequel de ces ordinateurs à n’importe quel autre peu importe la distance, en faisant transiter l’information par des ordinateurs intermédiaires qu’on appelle des routeurs ;
- Ces routeurs sont organisés hiérarchiquement pour maximiser l’efficacité du transfert, en termes de vitesse et de fiabilité ;
- Tous les ordinateurs du réseau suivent le même protocole, qui est un ensemble de contrainte sur les messages à envoyer, et un ensemble d’opération à exécuter en fonction des messages reçus ;
- Pour reboucler, Internet, c’est tous les ordinateurs du monde qui se transfèrent des données entre eux grâce à des ondes électromagnétiques et des protocoles réseaux communs qui maximisent l’efficacité et la rapidité du transfert !
Si vous avez bien compris tout ça, c’est super ! Vous pouvez affiner votre compréhension en trifouillant vos propres ordinateurs ou en vous demandant comment votre ordinateur ou téléphone envoie ou reçoit des données actuellement, le WiFi ? La 4/5G ? Un câble ? À votre avis, par combien d’ordinateurs transite le message que vous envoyez ? Le protocole est-il le même tout du long de la chaîne ?
Ça m’a pris une éternité de finir d’écrire cet article, je suis bien content d’y être arrivé ! Sauf qu’en fait il reste encore une partie que je vais essayer de prendre moins de temps à publier x) allez salut !