Skip to content

Niveau 8 · Chapitre 8.7

Des modems à Ethernet : envoyer des bits sur un fil

Comment les bits deviennent des signaux : la modulation et la QAM avec une constellation détaillée, les bauds face aux bit/s, le RTC, le DSL, le câble et la fibre, les codes en ligne jusqu’au PAM4, la trame Ethernet et son CRC calculé en direct, et le débit Wi-Fi de ce Mac retrouvé à partir des principes de base.

À l’intérieur d’un ordinateur, un bit est une tension sur un fil long de quelques millimètres ou centimètres. Entre ordinateurs, le fil est une ligne téléphonique, un câble coaxial, une paire torsadée, une fibre optique ou l’air libre, long de quelques mètres à des milliers de kilomètres, et un simple signal « haut pour 1, bas pour 0 » ne survit pas au voyage. Ce chapitre montre comment les bits sont transformés en signaux qui y survivent : la modulation, les codes en ligne et les trames. La raison pour laquelle les signaux s’affaiblissent et se déforment le long d’un fil relève de Signaux dans les fils et les fibres, au niveau de la physique ; les protocoles au-dessus de la trame appartiennent aux réseaux, hors du champ de ce livre.

Pourquoi ne pas envoyer simplement les tensions

Un canal réel ne transporte qu’une plage limitée de fréquences : sa bande passante (bandwidth). Une ligne téléphonique a été conçue pour la voix humaine et, une fois passée par le réseau téléphonique, ne transporte qu’environ 300 à 3 400 Hz. Un signal carré de 0 et de 1 est fait de nombreuses fréquences (ses fronts raides sont des composantes de haute fréquence), et un canal qui en supprime une partie étale les fronts jusqu’à ce que les 0 et les 1 se confondent. Une longue suite de bits identiques pose aussi problème : beaucoup de canaux, comme une ligne téléphonique, ne laissent pas passer du tout une tension constante.

Au lieu d’envoyer les bits eux-mêmes, un émetteur envoie donc une porteuse (carrier), une sinusoïde à une fréquence que le canal transporte bien, et la fait varier selon les données. C’est la modulation ; un appareil qui module et démodule est un modem.

Amplitude, fréquence, phase

Une sinusoïde a trois grandeurs que l’on peut faire varier :

ModulationCe qui changeUn 1 peut être…Un 0 peut être…
d’amplitude (ASK)la hauteur de l’ondeune onde forteune onde faible (ou absente)
de fréquence (FSK)sa hauteur tonaleune note plus aiguëune note plus grave
de phase (PSK)l’endroit de son cycle où elle commencedécalée de 180°non décalée

Les premiers modems utilisaient la modulation par déplacement de fréquence : les modems à 300 bit/s des années 1960-1970 envoyaient deux tonalités dans chaque sens, qu’on pouvait entendre. Chaque intervalle de temps de durée fixe pendant lequel l’émetteur envoie un état du signal est un symbole. Le nombre de symboles par seconde est la rapidité de modulation, en bauds (baud rate) ; le nombre de bits par seconde est le débit binaire (bit rate). Les deux ne sont égaux que si chaque symbole transporte exactement un bit. Tanenbaum insiste sur la différence, et on les confond encore.

Avec 4 phases possibles (45°, 135°, 225°, 315°), chaque symbole transporte 2 bits — le « codage de phase par dibits » de Tanenbaum, qu’on appelle aujourd’hui QPSK. En général, un symbole choisi parmi M possibilités transporte log₂ M bits.

La QAM : amplitude et phase ensemble

La modulation d’amplitude en quadrature (QAM) fait varier à la fois l’amplitude et la phase. La façon élégante de la voir : toute sinusoïde à la fréquence de la porteuse est la somme d’un cosinus d’amplitude I et d’un sinus d’amplitude Q. Choisissez I et Q dans un petit ensemble de niveaux, et chaque symbole est un point du plan (I, Q) : une constellation.

La 16-QAM utilise quatre niveaux sur chaque axe, −3, −1, +1 et +3, soit 16 points et 4 bits par symbole. Les deux premiers bits choisissent I, les deux derniers Q, selon un code de Gray, pour que deux niveaux voisins ne diffèrent que d’un bit : 00 → −3, 01 → −1, 11 → +1, 10 → +3.

            Q
   0010   0110 | 1110   1010      +3
                |
   0011   0111 | 1111   1011      +1
  --------------+--------------  I
   0001   0101 | 1101   1001      -1
                |
   0000   0100 | 1100   1000      -3
    -3     -1       +1     +3

Pour envoyer 1011, l’émetteur envoie un symbole avec I = +3 (bits 10) et Q = +1 (bits 11). Le récepteur mesure I et Q, que le bruit a un peu déplacés, et choisit le point le plus proche. Grâce au code de Gray, l’erreur la plus probable — choisir un point voisin — n’altère qu’un bit, que les codes correcteurs d’erreurs corrigent ensuite.

Plus de points, c’est plus de bits par symbole, mais des points plus rapprochés, donc moins de bruit suffit à les confondre. La 64-QAM transporte 6 bits par symbole, la 256-QAM 8, la 1024-QAM 10, la 4096-QAM 12. Le nombre qu’un canal peut utiliser dépend de son rapport signal sur bruit, et les systèmes choisissent la constellation la plus dense que le canal supporte, en l’ajustant en permanence. La limite est donnée par la formule de Shannon, C = B · log₂(1 + S/N) : un canal téléphonique d’environ 3 000 Hz, avec un signal 35 dB (3 162 fois) au-dessus du bruit, peut transporter au plus environ 35 000 bit/s, quelle que soit la modulation. Le chapitre de physique Signaux dans les fils et les fibres explique d’où vient cette formule.

RTC, DSL, câble et fibre

Voilà pourquoi les modems téléphoniques (dial-up) se sont arrêtés là où ils se sont arrêtés. Avec une QAM toujours plus élaborée, la norme V.34 a atteint 33 600 bit/s, près de la limite de Shannon pour un canal téléphonique analogique. La dernière étape, 56 kbit/s (V.90), ne fonctionnait que dans le sens descendant, et seulement parce que l’extrémité du fournisseur était reliée en numérique au réseau téléphonique, ce qui supprimait une conversion vers l’analogique et son bruit. Tanenbaum qualifie les modems à 56 kbit/s de « modernes » ; l’accès par modem téléphonique appartient désormais à l’histoire, et presque plus personne ne l’utilise.

Le DSL est sorti du canal vocal en utilisant le fil téléphonique lui-même, qui peut transporter des fréquences bien plus élevées que le réseau vocal. La description de l’ADSL dans le livre est exacte : le spectre jusqu’à environ 1,1 MHz est découpé en 256 canaux larges de 4 312,5 Hz, et chaque canal a sa propre QAM, avec autant de bits par symbole que son bruit le permet — jusqu’à 15. Son exemple de 224 canaux descendants × 15 bits × 4 000 symboles/s = 13,44 Mbit/s est juste ; c’est de l’OFDM (multiplexage par répartition orthogonale de la fréquence), qui s’appelle DMT dans sa forme DSL. La même idée — de nombreuses porteuses étroites, chacune avec sa propre QAM — fait aujourd’hui tourner le Wi-Fi, la 4G et la 5G, la télévision numérique et le câble.

Les réseaux câblés, dans le livre, utilisent la 64-QAM dans le sens descendant. La norme actuelle, DOCSIS 3.1, est passée à l’OFDM avec jusqu’à de la 4096-QAM. La légende du livre dit que la QAM-64 « permet 6 bits/Hz » ; à strictement parler, elle transporte 6 bits par symbole. Le nombre de bits par hertz qui en résulte dépend du nombre de symboles par seconde qui tiennent dans chaque hertz.

Tous deux sont en train d’être remplacés par la fibre jusqu’au domicile (FTTH). Un PON (réseau optique passif) partage une fibre venant du fournisseur entre de nombreux foyers grâce à des coupleurs optiques passifs : le GPON transporte 2,5 Gbit/s dans le sens descendant, le XGS-PON 10 Gbit/s dans les deux sens. Dans une fibre, les bits sont des impulsions de lumière infrarouge, et le lien transporte bien plus qu’aucune ligne en cuivre ne le pourrait.

Les codes en ligne : quand le fil est à vous

Sur un câble court que vous maîtrisez, comme un câble réseau entre un ordinateur et un commutateur, on peut finalement envoyer les bits sous forme de niveaux de tension — mais pas naïvement. Un code en ligne (line code) associe les bits à des niveaux de signal de façon que le récepteur puisse retrouver l’horloge (il faut assez de transitions), que le signal ait une moyenne nulle (il peut alors traverser les transformateurs qui isolent chaque extrémité) et qu’il tienne dans la bande passante du câble.

CodePrincipeUtilisé dans
NRZ (non-retour à zéro)1 = haut, 0 = basles liaisons série simples, beaucoup de voies rapides une fois embrouillées
Manchesterchaque bit a une transition en son milieu : bas→haut pour 1, haut→bas pour 0l’Ethernet à 10 Mbit/s (10BASE-T)
4B5B + MLT-34 bits envoyés sur 5 avec des transitions garanties, puis parcourus sur trois niveaux en cyclel’Ethernet à 100 Mbit/s (100BASE-TX), 125 Mbauds
PAM-5cinq niveaux de tension, 2 bits par symbole et par pairel’Ethernet à 1 Gbit/s (1000BASE-T)
PAM4quatre niveaux, 2 bits par symboleles voies Ethernet à 50, 100 et 200 Gbit/s, le PCI Express 6.0

Le Manchester rend la récupération de l’horloge triviale, mais il demande deux changements de signal par bit : l’Ethernet à 10 Mbit/s a une rapidité de modulation de 20 millions de bauds. Les liens plus rapides ne peuvent pas se le permettre. L’Ethernet gigabit sur câble en cuivre ordinaire utilise les quatre paires torsadées à la fois, dans les deux sens simultanément, chacune transportant 125 millions de symboles par seconde, avec 2 bits de données chacun : 4 × 125 × 2 = 1 000 Mbit/s. Et les liens les plus rapides sont passés de deux niveaux à quatre : le PAM4 double le nombre de bits par symbole au prix d’un écart plus faible entre les niveaux, et demande donc une correction d’erreurs puissante. Comme la QAM, il échange de la marge de bruit contre des bits.

La trame Ethernet

Des bits sur un fil ont besoin d’une structure : où un message commence-t-il et finit-il, à qui est-il destiné, est-il arrivé intact ? Ethernet envoie des trames (frames) :

ChampOctetsRôle
préambule + délimiteur de début de trame7 + 1des 1 et des 0 alternés pour que le récepteur cale son horloge, puis un marqueur
adresse de destination6l’adresse MAC de 48 bits du destinataire
adresse source6l’adresse MAC de l’émetteur
EtherType2la nature de la charge utile : 0x0800 pour IPv4, 0x86DD pour IPv6
charge utile46–1 500les données, complétées jusqu’à au moins 46 octets
séquence de contrôle de trame (FCS)4un CRC-32 de la trame

Elle est suivie d’un intervalle d’au moins 12 temps d’octet avant la trame suivante. Une trame pleine, avec 1 500 octets de charge utile, occupe 1 538 temps d’octet sur le fil, soit une efficacité de 97,5 %. La trame la plus courte, 64 octets de la destination au CRC, en occupe 84 ; à 1 Gbit/s, cela fait au plus 1 488 095 trames par seconde, un chiffre sur lequel on évalue les équipements réseau.

Chaque interface réseau a sa propre adresse MAC, gravée par son fabricant. Sur le Mac sur lequel ce chapitre a été écrit, networksetup -listallhardwareports liste 15 ports matériels — le port Ethernet intégré, le Wi-Fi, six ports Thunderbolt capables de transporter du réseau, un pont Thunderbolt et six autres adaptateurs Ethernet —, chacun avec sa propre adresse (les trois derniers octets sont masqués ici) :

Hardware Port: Ethernet
Device: en0
Ethernet Address: a4:fc:14:xx:xx:xx

Hardware Port: Wi-Fi
Device: en1
Ethernet Address: a4:fc:14:xx:xx:xx

Le CRC-32 placé à la fin détecte les erreurs de transmission. Il traite les bits de la trame comme un énorme polynôme, le divise par un polynôme fixe de 33 bits et envoie le reste. La division n’est faite que de décalages et de OU exclusifs, ce qui explique que le matériel la calcule au débit de la ligne. La voici en C, bit par bit, sur la chaîne de test standard — puis de nouveau avec un seul bit inversé :

Live · CRC-32, la séquence de contrôle de la trame Ethernet

À essayer : Appuyez sur Step pour exécuter une instruction, Run pour animer ou Continue pour aller au bout ; les boutons L2 à L7 changent de niveau, vers le bas ou le haut.

C source — click a line number for a breakpoint
  1. unsigned int crc32(char *p, int n) {
  2. unsigned int crc = 0xFFFFFFFF;
  3. for (int i = 0; i < n; i++) {
  4. crc = crc ^ (p[i] & 0xFF);
  5. for (int k = 0; k < 8; k++) {
  6. if (crc & 1) crc = (crc >> 1) ^ 0xEDB88320;
  7. else crc = crc >> 1;
  8. }
  9. }
  10. return ~crc;
  11. }
  12. int main() {
  13. char msg[] = "123456789";
  14. unsigned int c = crc32(msg, 9);
  15. printf("%08x\n", c);
  16. msg[3] = msg[3] ^ 1; /* flip one bit on the wire */
  17. printf("%08x\n", crc32(msg, 9));
  18. return 0;
  19. }
step 0
Loading emulator…
Your program as you wrote it: the current line, its variables by name, and its output.

Le programme affiche cbf43926, la valeur de contrôle publiée de ce CRC — la même que zlib.crc32(b"123456789") en Python —, puis 00a8ea83 pour le message altéré : une valeur complètement différente, donc le récepteur rejette la trame. Le CRC-32 détecte toutes les erreurs portant sur un seul bit, toutes les rafales d’au plus 32 bits, et toutes les altérations aléatoires sauf environ une sur quatre milliards. Il ne fait que détecter : récupérer la trame est laissé aux couches supérieures, qui la renvoient.

L’Ethernet de Tanenbaum était un câble partagé sur lequel chaque ordinateur écoutait et attendait le silence avant d’émettre. L’Ethernet d’aujourd’hui est commuté : chaque appareil a son propre câble en duplex intégral vers un port de commutateur, qui ne transmet chaque trame que vers son adresse de destination. Il n’y a plus de collisions à gérer.

Le Wi-Fi : la QAM dans les airs

Le Wi-Fi transporte des trames de type Ethernet par radio, avec de l’OFDM : le canal est découpé en centaines ou en milliers de sous-porteuses (subcarriers) étroites, chacune transportant des symboles QAM. system_profiler SPAirPortDataType indique le lien actuel de ce Mac :

PHY Mode: 802.11ax
Channel: 85 (6GHz, 160MHz)
Signal / Noise: -59 dBm / -93 dBm
Transmit Rate: 1441
MCS Index: 7

C’est du Wi-Fi 6E, dans la bande des 6 GHz, sur un canal de 160 MHz, avec un rapport signal sur bruit de −59 − (−93) = 34 dB. Le débit du lien, 1 441 Mbit/s, se reconstitue à partir des paramètres de la norme :

ParamètreValeur
sous-porteuses de données dans un canal 802.11ax de 160 MHz1 960
MCS 764-QAM (6 bits) avec un code correcteur de rendement 5/6 : 5 bits de données par sous-porteuse
durée d’un symbole12,8 µs + 0,8 µs d’intervalle de garde = 13,6 µs
par flux spatial1 960 × 5 / 13,6 µs = 720,6 Mbit/s
deux flux spatiaux (deux antennes de chaque côté)1 441 Mbit/s

Le débit annoncé correspond exactement. Avec un meilleur signal, le lien monterait jusqu’au MCS 11 — de la 1024-QAM, 2 402 Mbit/s avec deux flux —, et le Wi-Fi 7 ajoute la 4096-QAM et des canaux de 320 MHz. Comme pour les modems, la constellation est choisie en fonction du bruit.

Combien de temps dure le voyage

Le débit du lien dit à quelle vitesse les bits partent ; la latence dit combien de temps ils mettent à arriver. Cinq pings de ce Mac vers 1.1.1.1 (un serveur DNS public) ont pris 63, 6,3, 6,5, 8,2 et 5,8 ms. Le premier a été lent — sans doute la radio Wi-Fi qui sortait de son mode d’économie d’énergie —, et les autres montrent un aller-retour d’environ 6 ms. Un curl de https://example.com, lancé trois fois, a établi la connexion TCP au bout de 8 à 10 ms, terminé la négociation TLS au bout de 18 à 21 ms, et s’est achevé au bout de 30 à 124 ms. Chacune de ces étapes représente un ou plusieurs allers-retours ; pour une page aussi petite, la bande passante ne compte presque pas.

Dans une fibre, la lumière se propage à environ deux tiers de sa vitesse dans le vide, 200 000 km/s, donc un aller-retour de 6 ms signifie que le serveur est au plus à environ 600 km le long du câble, et en pratique bien plus près, puisque les routeurs et le saut Wi-Fi ajoutent du délai. Les bits sont devenus bon marché et abondants ; la distance coûte toujours du temps.

À retenir

  • Les canaux ne laissent passer que des fréquences limitées, donc les bits sont envoyés en modulant l’amplitude, la fréquence ou la phase d’une porteuse. Les bauds comptent les symboles par seconde ; bits par seconde = bauds × bits par symbole.
  • La QAM choisit chaque symbole comme un point du plan (I, Q) : la 16-QAM transporte 4 bits par symbole, avec un code de Gray pour qu’une erreur de peu ne coûte qu’un bit. Le rapport signal sur bruit du canal fixe la densité possible de la constellation ; la formule de Shannon fixe le plafond.
  • Les modems téléphoniques se sont arrêtés à 33,6 kbit/s (56k seulement dans le sens descendant) — c’est de l’histoire. L’ADSL et le câble ont utilisé l’OFDM, de nombreuses porteuses chacune avec sa propre QAM ; la fibre jusqu’au domicile les remplace tous les deux.
  • Les codes en ligne préservent l’horloge et l’équilibre sur les câbles : Manchester pour l’Ethernet à 10 Mbit/s, PAM-5 sur quatre paires pour le gigabit, PAM4 pour les voies les plus rapides.
  • Une trame Ethernet transporte des adresses MAC, un EtherType, jusqu’à 1 500 octets et un CRC-32, calculé ici : cbf43926 pour « 123456789 ». L’Ethernet moderne est commuté et en duplex intégral.
  • Le lien Wi-Fi 6E de ce Mac, 1 441 Mbit/s, vaut exactement 1 960 sous-porteuses × 5 bits / 13,6 µs × 2 flux ; un aller-retour vers 1.1.1.1 prend environ 6 ms.

Dans ce niveau

  1. 8.1Le transistor comme interrupteur
  2. 8.2Construire des portes en CMOS
  3. 8.3Du sable à la puce
  4. 8.4Disques durs, SSD et RAID
  5. 8.5Disques optiques et bandes
  6. 8.6Claviers, écrans, imprimantes et caméras
  7. 8.7Des modems à Ethernet : envoyer des bits sur un fil