Soyons honnêtes, nous ne sommes pas très calés sur le sujet évoqué et ce chapitre contient certainement beaucoup d’approximations. Tout retour permettant d’améliorer ce contenu est le bienvenu sur le sujet du forum.
Il fallait bien que ça arrive un jour : nous arrivons à la couche physique. Elle est très particulière, car ce n’est plus vraiment du réseau. On touche à une autre discipline qui est celle des télécommunications. Si on creuse encore plus, ça relève de l’électronique, et si on va toujours plus loin, de la physique.
Pour rester dans notre domaine des réseaux informatiques, nous n’introduirons que quelques notions élémentaires d’électronique. Cela devrait permettre à tous de suivre ce chapitre, qui s’axe autour de trois aspects des transmissions : l’accès au support physique, la synchronisation et la représentation des valeurs.
Attention à la trame !
Tout au long de ce cours, nous avons mentionné différents types de matériel, de liaisons, de câbles, etc. Voyons maintenant ce qui passe au travers de ces éléments, et plus particulièrement celui que nous avons certainement le plus évoqué : le câble Ethernet.
La transmission dans les grandes lignes
Ce type de câble dispose de deux connecteurs, un à chaque extrémité. Le but de ces connecteurs est d’établir un contact physique avec les cartes réseaux. Entre eux, il y a 8 fils de cuivre. Ils sont enroulés entre eux, deux par deux, formant 4 paires torsadées. Deux de ces paires servent à la transmission des données jusqu’à 100 Mb/s : une pour émettre, une pour recevoir. Au-delà, les 4 paires sont utilisées. Les données sont physiquement représentées par des signaux électriques.
Mais ça, on en reçoit en permanence pour tout un tas de raisons. L’alimentation d’un ordinateur ou de n’importe quel appareil électrique génère un rayonnement électromagnétique, autrement dit, des ondes, qui sont elles-mêmes des signaux électriques. Un fil de cuivre a tendance à tellement bien conduire l’électricité qu’il absorbe toutes ces ondes qui l’entourent ! Ces parasites peuvent créer des interférences, c’est-à-dire des perturbations dans les signaux de transmission de données. Différentes solutions existent pour les éviter ou les gérer. Physiquement, il existe le blindage, qui consiste à envelopper les fils dans de l’aluminium, qui repousse les ondes. Mais il y a aussi un procédé logique que nous avons déjà vu : les sommes de contrôle ! Eh oui, en cas d’interférence qui viendrait altérer une donnée, la checksum peut nous avertir d’une erreur de transmission.
Quels signaux ?
Pour donner une valeur logique à un signal électrique, on joue généralement sur sa tension. On peut décider arbitrairement qu’une tension de 5 volts correspond à un bit allumé, et une tension de 0 volt à un bit éteint. Seulement, un problème va vite s’imposer avec un tel système : dès qu’on veut transmettre deux 1 ou deux 0 consécutifs, on ne va pas savoir les repérer ! Un autre paramètre rentre alors en jeu : l’horloge.
Pour pouvoir savoir exactement quand il faut prendre en considération le signal électrique, on introduit la notion de synchronisation. Cela consiste à s’accorder entre les deux cartes réseaux pour se dire, par exemple, qu’une valeur est transmise chaque microseconde.
Nous disons bien une valeur, et non un bit. Comme on peut théoriquement fixer la correspondance qu’on veut entre tension et valeur logique, on pourrait très bien décider qu’un signal représente 2 bits : 0 volt pour 00, 5 volts pour 01, 10 volts pour 10, 15 volts pour 11. On parle alors de bauds. Dans ce dernier exemple, 1 baud vaut 2 bits. Mais dans le premier exemple, avec seulement deux valeurs, 1 baud vaut 1 bit.
Pour se synchroniser, les cartes réseaux doivent respecter la même norme. Elles savent donc dès le départ à quelle fréquence elles doivent regarder l’état du signal électrique qu’elles reçoivent. Cela peut être toutes les microsecondes, toutes les nanosecondes, … Elles disposent d’une horloge qui doit être la plus précise possible. Malheureusement, il peut arriver qu’une perturbation quelconque vienne désynchroniser une horloge et qu’une information soit perdue ou mal interprétée. Nous verrons dans la section suivante comment des codages peuvent éviter cela.
Et avec d’autres supports ?
Les principes évoqués ici sont applicables pour les supports à base de fils de cuivre. Ils peuvent être adaptés dans une certaine mesure à d’autres moyens de transmission, comme la fibre optique qui exploite des signaux lumineux, ou le Wi-Fi qui envoie ses ondes dans l’air sans support physique. Pour aller plus loin, voici quelques pistes qui vous orienteront vers des explications plus précises.
- How Does an Optical Fiber Transmit Light? par Craig Freudenrich (en anglais). Ce court document donne une première approche sur le fonctionnement des transmissions par fibre optique.
- WiFi - Le Standard 802.11 - Couche physique et couche MAC, par Michel Terré, Conservatoire National des Arts et Métiers. La couche physique du Wi-Fi y est expliquée à partir de la page 8. Cela demande quelques notions de base de télécommunications.
Fais le baud
Nous avons vu qu’un signal électrique peut représenter une valeur en fonction de sa tension. La définition de cette équivalence, c’est ce qu’on appelle un codage. Il en existe un paquet ! Focalisons-nous sur 3 d’entre eux, pour pouvoir comprendre pourquoi il n’y en a pas de parfait.
Le plus simple : NRZ
NRZ, pour Non Return to Zero (pas de retour à zéro), est probablement le plus simple des codages. On choisit une tension, par exemple 12 volts. Si on veut transmettre la valeur 1, on envoie un signal à +12 volts. Si on veut transmettre la valeur 0, on envoie un signal à -12 volts. On peut aussi inverser les valeurs, ça ne change rien. Le hic, c’est qu’à aucun moment, la tension ne revient à zéro, c’est même pour ça que ce codage porte ce nom… Bon courage pour s’y retrouver lors d’une suite de 0 ou de 1 ! L’horloge, d’un côté comme de l’autre, n’a pas le droit au moindre petit écart. La moindre perturbation peut corrompre la communication.
Ce codage n’est pas adapté aux réseaux d’aujourd’hui. Il était utilisé à la fin du XXème siècle dans les liaisons séries, qui sont en quelque sorte l’ancêtre des liaisons USB.
MLT-3
MLT signifie Multi Level Transmit, soit transmission multi-niveaux. Le 3 indique que 3 niveaux sont utilisés. Avec ce codage, on prend une tension de référence, 12 volts pour ne pas changer. Il y a alors trois possibilités de signaux : +12 volts, 0 volt et -12 volts. On part de la tension négative. Pour transmettre la valeur 1, on fait varier le signal. Mais attention ! La variation ne peut avoir lieu que dans l’ordre suivant :
-12 V > 0 V > +12 V > 0 V > -12 V > 0 V > +12 V > 0 V > etc.
Et pour transmettre la valeur zéro… on ne change rien. Cela donne des variations comme sur l’image ci-dessous.
Ce codage présente l’avantage de bien gérer les suites de 1. La variation régulière peut permettre aux horloges de bien se calibrer et conserver la synchronisation. A contrario, pour une suite de 0…
On se retrouve avec le même problème que NRZ. On ne peut donc pas l’utiliser avec un protocole qui va générer de longues suites de 0… À moins d’utiliser une astuce qu’on garde pour la fin.
Ce codage est utilisé notamment dans la norme 100BASE-TX, qui définit les transmissions à 100 Mb/s en Ethernet.
Manchester
Le codage Manchester présente une particularité : il embarque le signal d’horloge. Concrètement, il y a au moins une variation de la tension à la fréquence de la synchronisation. Attention, c’est plus complexe que les précédents.
Il y a deux états de tension possibles. Pour rester sur la même lignée, on va prendre pour exemple +12 volts et -12 volts. Il faut aussi prendre en compte la fréquence de l’horloge. Considérons que la période de synchronisation soit d’une microseconde. Lorsqu’on veut transmettre la valeur 1, il faut qu’au début de la période, la tension soit basse (-12 V), puis qu’elle passe haute (+12 V) à la mi-temps. Ainsi, si on avait transmis un autre 1 juste avant, la tension serait haute à la fin de la période précédente. Elle doit alors passer basse au début de la nouvelle période.
Pour transmettre la valeur 0, c’est l’inverse. La tension doit être haute en début de période et passer basse à la mi-temps. Si on transmet un 0 puis un 1, la tension va rester basse à la fin de la première période et en début de seconde période.
Historiquement, c’est dans l’autre sens. Le 0 allait de bas en haut et le 1 de haut en bas. Par la suite, et notamment pour Ethernet, cela a été inversé.
Comme la tension varie avec une fréquence au moins équivalente à l’horloge, on évite le risque de désynchronisation. Par contre, on transmet deux fois plus de signaux, ce qui réduit fatalement le débit du support.
Ce codage est utilisé dans la norme 10BASE-T, servant aux transmissions à 10 Mb/s en Ethernet. Ça parait ridicule mais c’était très courant à la fin du XXème siècle ! Bon, il faut dire que Manchester n’est pas non plus tout jeune : il est utilisé depuis… les années 1940.
Et maintenant, une astuce
Nous avons soulevé un problème de certains codages qui est l’absence de variation en cas de suite de valeurs identiques. Pour le pallier, il existe une astuce qui consiste à substituer une suite par une autre.
L’exemple le plus simple est celui utilisé par l’entreprise Oregon Scientific pour ses stations météo. Comme décrit dans ce papier, il consiste à envoyer, après chaque bit, son complément… c’est-à-dire son contraire. Pour envoyer la valeur 1, on envoie 10, et inversement. Ainsi, la suite 00000000 devient 0101010101010101 ! Ça prend deux fois plus de temps à transmettre mais ça fonctionne.
Plus économique en place, d’autres systèmes existent, comme le 4B5B. Le principe consiste à remplacer une suite de 4 bits par une autre suite de 5 bits avec le moins de valeurs identiques qui se suivent. Ainsi, on remplace 0000 par 11110, 0001 devient 01001, etc. Vous retrouverez la liste complète ici. Cela permet aussi d’identifier des erreurs de transmission, car certaines combinaisons sont impossibles. C’est moins lourd que le système précédent, car cela n’augmente le nombre de transmission que de 25%. Dans la même veine, il existe aussi le 8B10B.
Il existe bien d’autres codages mais aucun n’est parfait. Ceux que nous avons passé en revue doivent vous permettre de comprendre les principes de base.
Il est loin, le temps où André demandait à Jean de transmettre un livre à Pierre ! Maintenant, vous en êtes à vous interroger sur la cadence des variations de tension dans un fil électrique ! Que de chemin parcouru… Que diriez-vous d’un récapitulatif global ? Dans le prochain chapitre, on remonte les couches une par une et on révise les principales notions étudiées tout au long du cours.