Vous êtes sur la page 1sur 193

Informatique Industrielle

Module S3 et S3’

2017-2018

Les réseaux
en Informatique Industrielle

Date de Modif. Rédacteur Polycopié Version

28/08/2017 H. Angelis CM 2017-2018

Document publié sous licence Créative Commons v3.0

BY : By (citation obligatoire de l’auteur, valable y compris pour des extraits)


NC : Non Commercial (aucune utilisation commerciale, vente ou publication payante)
SA : Share Alike (Modifications autorisées sous réserve de publication sous les mêmes conditions)
IUT de CACHAN Les réseaux en Page 2 sur 193
H. Angelis Informatique Industrielle Version 2017

Avant-propos
Ce document est la cinquième version du polycopié sur les réseaux locaux industriels que j'ai
commencé à l'IUT de VELIZY et poursuivi à l'IUT de CACHAN. Il a été réalisé pour me servir de support
de cours pour les étudiants du département génie électrique et informatique industrielle.
Cette nouvelle mouture est basée sur une vision personnelle de l'enseignement des techniques
industrielles. En particulier, l’absence des réseaux d’automates PROFIBUS, MODBUS ou Devicenet,
peut sembler incongru quand on tente de concevoir un cours de réseaux locaux. J’assume ce choix, il
existe tellement de bons cours sur ces deux réseaux pour que je n’en rajoute pas une couche (la couche
8 ?) supplémentaire.
Je préfère donc me concentrer sur des réseaux comme CAN, I2C et Ethernet et les aborder
sous l’angle de l’informatique industrielle, sous le signe de l’embarqué.
Reste que le monde des réseaux a beaucoup évolué depuis la rédaction de la première version
de ce document, on peut donc se demander où sont MOST et Flexray ? Ils arriveront peut-être un jour,
mais je préfère encore une fois parler de IPv6 ou de TTEthernet…
De plus je n’aborde pas non plus la supervision, ce qui pour le coup est cohérent lorsqu’on
n’aborde pas les réseaux d’automaticiens. Je me réserve à cette vision Informatique Industrielle qui
est à la fois mon but et mon goût.

Historique
On peut considérer que les réseaux locaux sont apparus il y a environ 80 ans. Dès l’origine,
deux familles de réseaux coexistaient, d’un côté, les réseaux de données, qui avaient pour but le
transfert de flux importants de données, sans soucis de latence, et de l’autre les réseaux de terrain
pour qui la latence avait de l’importance mais pas forcément le débit.
Aujourd'hui, les réseaux sont des éléments courants de l’informatique. ETHERNET est le réseau
local le plus utilisé au monde, mais ETHERNET, bien que de plus en plus présent dans le monde des RLI,
n’est pas toujours adapté aux besoins de communication (en particulier entre des capteurs et des
automates). C’est ici qu’apparaissent les réseaux locaux industriels.
On cherche en général, lors de l’utilisation d’un réseau, une approche simple et transparente
des communications, une réduction des coûts de fabrication (dans la mesure où le câblage diminue et
les coûts de développement sont souvent réduits) et surtout un standard, disponible pour toutes les
applications industrielles de fabrication.
Les 20 dernières années ont vu la montée en flèche des réseaux dans l’industrie (automobile
dans les années 1990, Internet haut débit dans les années 2000 et haut débit sans fil dans les années
2010), ce qui a entrainé un changement radical dans le monde de l’embarqué (certaines voitures ont
plus de 100 calculateurs à bord) et l’apparition des véhicules électriques pousse encore à
l’augmentation des calculateurs et donc à la montée des débits. Le multimédia prend aussi de la place
dans l’embarqué (MOST), mais le prochain défit consistera à remplacer le bus CAN par une nouvelle
technologie, Flexray semble ne pas avoir réussi à s’implanter, qui sera le suivant ?
L'avenir n'est donc pas clair quant au nom des futurs réseaux, mais une chose est sure, des
réseaux, il y en aura de plus en plus, de plus en plus puissants, de plus en plus interconnectés et dans
des domaines de plus en plus vastes (immotique, réseaux intelligents).
Page 3 sur 193 Les réseaux IUT de CACHAN
Version 2017 en Informatique Industrielle H. Angelis

Table des matières


Physique des réseaux - 12
La vitesse de propagation ................................................................................................12
Déphasage et atténuation ...............................................................................................13
Modèle du télégraphiste ............................................................................................................. 13
Impédance caractéristique .......................................................................................................... 14
Réflexion dans les lignes ..................................................................................................14
Mise en équation......................................................................................................................... 14
Effet des réflexions ...................................................................................................................... 14
Exemple de ligne terminée par une charge adaptée ....................................................................................... 16
Exemple de ligne terminée par un circuit ouvert ............................................................................................ 16

Bruit dans les lignes .........................................................................................................18

Technologie des réseaux - 20


Interconnexion de machines ............................................................................................20
Connexions asymétriques............................................................................................................ 20
Connexions composant à composant.......................................................................................... 21
Connexions symétriques .............................................................................................................. 21
Codage de l’information ..................................................................................................22
Le code unipolaire NRZ ................................................................................................................ 22
Le code bipolaire NRZ .................................................................................................................. 23
Les codes RZ ................................................................................................................................ 24
Unipolaire RZ ................................................................................................................................................... 24
Bipolaire RZ ..................................................................................................................................................... 24
Les codes biphasés (code Manchester). ...................................................................................... 25
Le code AMI (Alternate Mark Inversion) ..................................................................................... 25
Densité spectrales des codes ....................................................................................................... 26

Emetteurs et récepteurs - 27
Sérialisation.....................................................................................................................27
Ordre des bits .............................................................................................................................. 27
Le récepteur.....................................................................................................................27
Transmission synchrone .............................................................................................................. 28
Transmission asynchrone ............................................................................................................ 29
Bit Stuffing................................................................................................................................... 30
Le bit stuffing additif ....................................................................................................................................... 31
Les code de blocs ............................................................................................................................................. 31
Le bit stuffing substitutif ................................................................................................................................. 32
IUT de CACHAN Les réseaux en Page 4 sur 193
H. Angelis Informatique Industrielle Version 2017

Détection d'erreurs - 33
La répétition de code .......................................................................................................33
Rendements .................................................................................................................................................... 33

Le contrôle de parité ........................................................................................................34


Les Checksums .................................................................................................................35
La somme modulaire ................................................................................................................... 36
Les codes à redondance cyclique (CRC) ....................................................................................... 37
Calcul d'un CRC ................................................................................................................................................ 37
Réalisation d'un CRC ........................................................................................................................................ 39
Normalisation des CRC .................................................................................................................................... 40

Codes correcteurs d'erreurs ..............................................................................................40


Les codes de Hamming ................................................................................................................ 41
Autres codes correcteurs ............................................................................................................. 43
Reed-Solomon ................................................................................................................................................. 43
Les codes BCH.................................................................................................................................................. 43
Les codes convolutifs ....................................................................................................................................... 43

Multiplexage - 44
Vocabulaire - 46
Normalisation OSI - 47
Les 7 couches de la norme OSI ..........................................................................................47
La couche physique ..................................................................................................................... 48
La couche de liaison .................................................................................................................... 48
La couche réseau ......................................................................................................................... 48
La couche de transport................................................................................................................ 48
La couche de session ................................................................................................................... 48
La couche de présentation .......................................................................................................... 48
La couche d'application ............................................................................................................... 48
La norme OSI et les réseaux .............................................................................................49
L'encapsulation des données. ...........................................................................................49
Page 5 sur 193 Les réseaux IUT de CACHAN
Version 2017 en Informatique Industrielle H. Angelis

La couche physique - 50
La topologie d'un réseau ..................................................................................................50
L'anneau ...................................................................................................................................... 50
L'étoile ......................................................................................................................................... 50
Le bus .......................................................................................................................................... 50
Le Back Bone ............................................................................................................................... 51
L'arborescence............................................................................................................................. 51
Les hubs ........................................................................................................................................................... 51
Les switchs ....................................................................................................................................................... 51
Les routeurs ..................................................................................................................................................... 52
Le réseau maillé........................................................................................................................... 52
Le medium .......................................................................................................................53
Les paires Torsadées ................................................................................................................... 53
Paramètre nombre de paire ............................................................................................................................ 53
Paramètre de section de conducteur .............................................................................................................. 53
Norme par fréquences .................................................................................................................................... 54
Diaphonies ....................................................................................................................................................... 55
Norme par protection ..................................................................................................................................... 56
Les fibres optiques ....................................................................................................................... 57
Choix des longueurs d'ondes ........................................................................................................................... 58
Sources de lumière .......................................................................................................................................... 59
La fibre multimode à saut d'indices ................................................................................................................. 60
La fibre multimode à gradient d'indice............................................................................................................ 61
La fibre monomode ......................................................................................................................................... 62

Le bus SPI - 64
Protocole SPI ...................................................................................................................64
Signaux ........................................................................................................................................ 64
Chronogrammes .......................................................................................................................... 64
Adressage .................................................................................................................................... 65
Le SPI du 9S12 ..................................................................................................................66
Génération d'horloge .................................................................................................................. 66
Choix du mode ............................................................................................................................. 66
Les registres du SPI ..........................................................................................................67
SPICR1 (SPI Control Register 1) ........................................................................................................................ 67
SPICR2 (SPI Control Register 2) ........................................................................................................................ 68
SPIBR (SPI Baud Rate Register) ........................................................................................................................ 69
SPISR (SPI Status Register) ............................................................................................................................... 69
SPIDRH (SPI Data Register High) ...................................................................................................................... 70
SPIDRL (SPI Data Register Low)........................................................................................................................ 70

Fonctionnement du SPI ....................................................................................................70


Détection d'erreur ....................................................................................................................... 70
Mode half-duplex ........................................................................................................................ 70
Réception, transmission et interruption. ..................................................................................... 71
Le bus SPI de la X12 .........................................................................................................72
AD5300. ....................................................................................................................................... 72
W5100 ......................................................................................................................................... 72
IUT de CACHAN Les réseaux en Page 6 sur 193
H. Angelis Informatique Industrielle Version 2017

Le bus I2C - 73
Fonctionnement du bus I2C ..............................................................................................73
Start et Stop ................................................................................................................................ 73
Acquittement............................................................................................................................... 73
Trame élémentaire ...................................................................................................................... 74
Limites du bus I2C........................................................................................................................ 74
Concept du bus I2C...........................................................................................................75
Maître – Esclave et Consommateur – Producteur ...................................................................... 75
Synchronisation des échanges .................................................................................................... 75
Arbitrage ..................................................................................................................................... 76
Protocole .........................................................................................................................76
Adressage 7 bits .......................................................................................................................... 76
Transmission des données par paquets ...................................................................................... 77
Modes de transmissions. ..................................................................................................77
Transmission en Mode Simple..................................................................................................... 77
Mode combiné ............................................................................................................................ 78
I2C sur la X12 ...................................................................................................................78
Fonctions enterrées ..................................................................................................................... 78
Fonctions complètes.................................................................................................................... 79
Cible I2C ....................................................................................................................................... 79

Le bus CAN - 80
Le protocole CSMA/NBA ..................................................................................................80
Les trames CAN ................................................................................................................81
La trame de données CAN 2.0A ................................................................................................... 81
Le délimiteur de début .................................................................................................................................... 81
L'index ou l'identifiant ..................................................................................................................................... 81
Le bit RTR ......................................................................................................................................................... 82
La zone d'arbitrage .......................................................................................................................................... 82
Le bit IDE.......................................................................................................................................................... 83
Le bit R ............................................................................................................................................................. 83
Le DLC .............................................................................................................................................................. 83
Le champ de données ...................................................................................................................................... 83
Le CRC .............................................................................................................................................................. 84
La zone de bit stuffing ..................................................................................................................................... 84
Le bit CRC DEL.................................................................................................................................................. 84
Le bit ACK SLOT................................................................................................................................................ 85
Le bit ACK DEL.................................................................................................................................................. 85
Le Stop ............................................................................................................................................................. 85
L'inter-trame ................................................................................................................................................... 85
Les trames de requête ................................................................................................................. 85
Les trames CAN 2.0B ................................................................................................................... 86
Champs des trames CAN 2.0A ..................................................................................................... 86
Les trames d'erreurs .................................................................................................................... 86
Les trames de surcharge ............................................................................................................. 87
Page 7 sur 193 Les réseaux IUT de CACHAN
Version 2017 en Informatique Industrielle H. Angelis

Gestion des erreurs ..........................................................................................................87


Les erreurs ................................................................................................................................... 87
Les états ...................................................................................................................................... 87
Les trames d'erreur ..................................................................................................................... 87
Les compteurs d'erreur ................................................................................................................ 88
Règle de comptage de l'émetteur ................................................................................................................... 88
Règle de comptage du récepteur .................................................................................................................... 88
Processus de traitement des erreurs de réception ...................................................................... 89
Empilement des trames d'erreur actives......................................................................................................... 89
Gestion des compteurs d'erreur ...................................................................................................................... 89
Etat passif ........................................................................................................................................................ 90
Evolution des nœuds ....................................................................................................................................... 91
Processus de traitement des erreurs de transmission ................................................................. 92
Erreurs de CRC ................................................................................................................................................. 92
Erreurs de forme ............................................................................................................................................. 94
Conclusion ................................................................................................................................... 95
Synchronisation des échanges. .........................................................................................96
Décomposition d'un bit en segments. ......................................................................................... 96
Prédiviseur d'horloge................................................................................................................... 96
Réglage des segments ................................................................................................................. 96
Synchro Jump Width.................................................................................................................... 97
Exemple de calcul ........................................................................................................................ 97
Rappel des règles de calcul ......................................................................................................... 98
Définition du temps de propagation ........................................................................................... 98
Les registres du MSCAN ...................................................................................................99
CANCTL0 (MSCAN Control Register 0) ............................................................................................................. 99
CANCTL1 (MSCAN control Register 1) ........................................................................................................... 100
CANBTR0 (MSCAN Bus Timing Register 0) ..................................................................................................... 101
CANBTR1 (MSCAN Bus Timing Register 1) ..................................................................................................... 101
CANRFLG (MSCAN Receiver Flag Register) .................................................................................................... 102
CANRIER (MSCAN Receiver Interrupt Enable Register) ................................................................................. 103
CANTFLG (MSCAN Transmitter Flag Register) ............................................................................................... 104
CANTIER (MSCAN Transmitter Interrupt Enable Register) ............................................................................ 104
CANTARQ (MSCAN Transmitter Message Abort Control) .............................................................................. 104
CANTAAK (MSCAN Transmitter Message Abort Control) .............................................................................. 105
CANTBSEL (MSCAN Transmitter Buffer Selection)......................................................................................... 105
CANIDAC (MSCAN Identifier Acceptance Control Register) .......................................................................... 105
CANMISC (MSCAN Miscellaneous Register) .................................................................................................. 106
CANRXERR (MSCAN Receive Error Counter Register) .................................................................................... 106
CANTXERR (MSCAN Transmit Error Counter Register) .................................................................................. 106
CANIDARX (MSCAN Identifier Acceptance Registers) .................................................................................... 107
CANIDMRX (MSCAN Identifier Mask Registers)............................................................................................. 108

Buffer de transmission ou de réception .......................................................................... 109


L’identificateur .......................................................................................................................... 109
Le champ de longueur des données .......................................................................................... 110
DLCR (Data Length Code Register) ................................................................................................................ 110
Les registres optionnels ............................................................................................................. 110
TBPR (Transmit Buffer Priority Register) ....................................................................................................... 110
TSRH (Time Stamp Register High) .................................................................................................................. 110
TSRL (Time Stamp Register Low) ................................................................................................................... 110
Gestion des buffers d'émission et réception ............................................................................. 110
IUT de CACHAN Les réseaux en Page 8 sur 193
H. Angelis Informatique Industrielle Version 2017

Filtrage des messages .................................................................................................... 112


Principe du filtrage .................................................................................................................... 112
Organisation des filtres ............................................................................................................. 113
Filtres de 32 bits avec des index étendus (29 bits) ........................................................................................ 113
Organisation des filtres de 16 bits avec un index 11 bits .............................................................................. 114
Organisation des filtres de 8 bits avec un index standard (11 bits) ............................................................... 114
Exemple de filtre ........................................................................................................................................... 115

Le Mode INIT ................................................................................................................. 116


Le Mode SLEEP ............................................................................................................... 117
Etats du MSCAN............................................................................................................. 118
Les interruptions du MSCAN ........................................................................................... 118
Procédure de mise en route du MSCAN. ......................................................................... 119
Le choix de la vitesse. ................................................................................................................ 119
Choix des filtres ......................................................................................................................... 119
Initialisation du MSCAN. ........................................................................................................... 120
Exemple de la transmission d'un message. ............................................................................... 121
L'identificateur : ............................................................................................................................................ 121
Les données : ................................................................................................................................................. 121
La longueur du champ de données : ............................................................................................................. 122
La priorité : .................................................................................................................................................... 122
Exemple de réception d'un message. ........................................................................................ 122

Ethernet - 123
Evolution technologique ................................................................................................ 123
Premiers prototypes .................................................................................................................. 123
10 Base 5 ................................................................................................................................... 124
10 BASE 2 .................................................................................................................................. 124
10 Base T ................................................................................................................................... 124
10 BASE FL ................................................................................................................................. 125
100 Mbit/s ................................................................................................................................. 125
Auto-négociation....................................................................................................................... 126
1 Gbit/s ...................................................................................................................................... 126
10 Gbit/s .................................................................................................................................... 127
Power over Ethernet (PoE) ........................................................................................................ 127
40 Gbit/s, 100 Gbit/s et plus ..................................................................................................... 127
Le protocole CSMA/CD ................................................................................................... 127
Exemple ..................................................................................................................................... 128
Analyse ...................................................................................................................................... 129
La trame Ethernet .......................................................................................................... 130
Le préambule............................................................................................................................. 130
Le Start Frame Delimiter ........................................................................................................... 130
Les adresses de destination et de source. ................................................................................. 130
Le bit U/L ....................................................................................................................................................... 131
Le bit I/G ........................................................................................................................................................ 131
Le type ....................................................................................................................................... 131
Le champ de donnée. ................................................................................................................ 131
Le FCS. ....................................................................................................................................... 131
Intertrame ................................................................................................................................. 132
Page 9 sur 193 Les réseaux IUT de CACHAN
Version 2017 en Informatique Industrielle H. Angelis

TCP/IP - 133
Le protocole IP ............................................................................................................... 140
L'entête IP ..................................................................................................................... 140
Les champs de l'entête IP .......................................................................................................... 140
Version .......................................................................................................................................................... 140
IHL ................................................................................................................................................................. 140
Services.......................................................................................................................................................... 140
Total Length................................................................................................................................................... 140
Identification ................................................................................................................................................. 140
Flags............................................................................................................................................................... 141
Offset ............................................................................................................................................................. 141
TTL ................................................................................................................................................................. 141
Protocol ......................................................................................................................................................... 141
Header Checksum .......................................................................................................................................... 141
Source address .............................................................................................................................................. 141
Destination address ....................................................................................................................................... 141
Options .......................................................................................................................................................... 141
Adresse IPv4 .............................................................................................................................. 142
Fragmentation .......................................................................................................................... 144
Options ...................................................................................................................................... 149
Ethernet et IP................................................................................................................. 150
Protocole ARP ............................................................................................................................ 150
Entête ARP ..................................................................................................................................................... 151
Les champs de la trame ARP.......................................................................................................................... 151
Exemple de communication locale ................................................................................................................ 152
Exemple de communication au travers d'un routeur .................................................................................... 153

Routage......................................................................................................................... 155
RIP v2......................................................................................................................................... 155
Limitations et gestion des liens rompus ........................................................................................................ 157
Les autres protocoles de routage .............................................................................................. 159
IGP, EGP et AS................................................................................................................................................ 159

Gestion des erreurs de routage sous IP. .......................................................................... 159


Le protocole ICMP ..................................................................................................................... 160
La commande PING. ...................................................................................................................................... 161
La commande TRACEROUTE. ......................................................................................................................... 161

IPv6 ............................................................................................................................... 162


L’adresse IPv6 ............................................................................................................................ 162
Le préfixe ....................................................................................................................................................... 163
L’interface...................................................................................................................................................... 164
Les adresses réservées .................................................................................................................................. 164
Entête IPv6 ................................................................................................................................ 164
IUT de CACHAN Les réseaux en Page 10 sur 193
H. Angelis Informatique Industrielle Version 2017

TCP et UDP - 165


Les Ports ........................................................................................................................ 165
Client – Serveur.............................................................................................................. 166
Rôles .......................................................................................................................................... 166
Les Sockets ................................................................................................................................ 166
UDP. .............................................................................................................................. 168
Le pseudo entête UDP ............................................................................................................... 168
IP Source Address .......................................................................................................................................... 168
IP Destination Address .................................................................................................................................. 168
Zero ............................................................................................................................................................... 168
Proto .............................................................................................................................................................. 168
UDP Length .................................................................................................................................................... 168
L'entête UDP.............................................................................................................................. 169
Source Port .................................................................................................................................................... 169
Destination Port ............................................................................................................................................ 169
Length ............................................................................................................................................................ 169
Checksum ...................................................................................................................................................... 169
Domaine d'application d'UDP ................................................................................................... 169
TCP ................................................................................................................................ 170
Mode connecté.......................................................................................................................... 170
Acquittements ............................................................................................................................................... 170
Fragmentation ............................................................................................................................................... 170
Entête TCP ................................................................................................................................. 171
Source Port et Destination Port ..................................................................................................................... 171
Sequence Number ......................................................................................................................................... 171
Acknowledgement Number .......................................................................................................................... 171
Offset ............................................................................................................................................................. 171
Les Flags......................................................................................................................................................... 171
Window ......................................................................................................................................................... 172
Checksum ...................................................................................................................................................... 172
Urgent Pointer ............................................................................................................................................... 173
Les Options .................................................................................................................................................... 173
Fonctionnement de TCP. ........................................................................................................... 174
Initialisation de la connexion ......................................................................................................................... 174
Dialogue ........................................................................................................................................................ 174
Fenêtre glissante ........................................................................................................................................... 176
Erreurs de transmission ................................................................................................................................. 177
Clôture de connexion .................................................................................................................................... 178
L’automate TCP ............................................................................................................................................. 179
Page 11 sur 193 Les réseaux IUT de CACHAN
Version 2017 en Informatique Industrielle H. Angelis

DHCP - 180
L'entête...................................................................................................................................... 180
Les options. ................................................................................................................... 181
Format d'option............................................................................................................................................. 181
Codes d'option .............................................................................................................................................. 181

Dialogue ........................................................................................................................ 182


DHCP DISCOVER ........................................................................................................................ 182
DHCP Offer ................................................................................................................................ 183
DHCP Request............................................................................................................................ 184
DHCP Ack ................................................................................................................................... 184
Timing DHCP.................................................................................................................. 185

DNS - 186
Organisation du DNS ..................................................................................................... 186
Règles de dénomination ................................................................................................ 188
Fonctionnement du DNS ................................................................................................ 189
Délégation d’autorité ................................................................................................................ 189
Résolution DNS .......................................................................................................................... 189
Phase récursive.............................................................................................................................................. 189
Phase itérative ............................................................................................................................................... 190
Le résolveur ................................................................................................................................................... 191
Glue Records.............................................................................................................................. 191
Structure du DNS ........................................................................................................... 191
Le serveur racine ....................................................................................................................... 191
Les TLDs ..................................................................................................................................... 192
Les serveurs de noms................................................................................................................. 192
Gestion du domaine ...................................................................................................................................... 192
Enregistrements ............................................................................................................................................ 193
IUT de CACHAN Les réseaux en Page 12 sur 193
H. Angelis Informatique Industrielle Version 2017

Physique des réseaux


Avant d'aborder l’aspect technologique des réseaux, je vais passer en revue les principaux
phénomènes physiques rencontrés dans les réseaux. Ces phénomènes ne sont pas propres aux
réseaux, mais ils impliquent des effets sur l’électronique ou la conception des réseaux.

La vitesse de propagation
Lorsque l'on transmet un signal, quel que soit le support de l'information (son, lumière, onde
électromagnétique), la transmission met un certain temps à se propager entre sa source et sa
destination. Ce temps dépend de la distance qui les sépare et des milieux dans lequel il évolue.
Par exemple, tout le monde connaît la vitesse de propagation du son dans l'air, puisqu'elle est
de 1224 km/h (Mach 1), mais peu de monde sait qu'elle est très différente dans l'eau puisqu'elle est
alors de 5300 km/h (environ Mach 4).
Dans le cas des ondes électromagnétiques, ce phénomène, connu sous le nom de propagation
dans les milieux isotropes, a été théorisé par le physicien écossais MAXWELL au 19ème siècle. Les
équations de MAXWELL sont assez complexes, mais elles unifient les lois de l’électromagnétisme (ce
qui a fait leur succès).
Dans un câble électrique, il existe 2 vitesses de propagation pour un signal. On trouve, d'une
part, la vitesse de phase (V) qui représente la vitesse de propagation d'une onde monochromatique
(une seule fréquence) et d'autre part, la vitesse de groupe (Vg) qui définit la variation de vitesse d'un
paquet d'ondes dans un milieu dispersif.
La vitesse de phase dépend exclusivement du milieu dans lequel l'onde se propage :
1
𝑉𝜑 =
√𝜀𝜇
Où ε est la permittivité du milieu et μ sa perméabilité magnétique.
1
Or dans le vide, où ε = ε0 (permittivité du vide = 36𝜋 × 10−9 F/m) et µ = µ0 (perméabilité
magnétique du vide = 4π × 10-7 H/m), une onde monochromatique se propage à la vitesse de la
lumière (c≈ 2,99 × 108 m/s), donc, relativement au vide, 𝜀 = 𝜀0 𝜀𝑟 et 𝜇 = 𝜇0 𝜇𝑟 , où εr et μr sont les
permittivités et perméabilités relatives du milieu par rapport au vide.
1 1 1 1 𝑐 𝑐
𝑉𝜑 = = = = =
√𝜀𝜇 √𝜀0 𝜀𝑟 𝜇0 𝜇𝑟 √𝜀0 𝜇0 √𝜀𝑟 𝜇𝑟 √𝜀𝑟 𝜇𝑟 𝑛
Où n est l'indice du milieu : 𝑛 = √𝜀𝑟 𝜇𝑟 .
La vitesse de groupe est liée à une formule un peu plus compliquée qui dépend de la fréquence
𝑑𝜔 𝜔
du signal 𝑉𝑔 = , où ω est la pulsation du signal (en rad/s) et k est le nombre d'onde (𝑘 = ).
𝑑𝑘 𝑉𝜑

Ces deux vitesses permettent de connaître la vitesse de propagation de l'information, qui est
égale à la plus petite des deux. En général, pour un signal à basse fréquence monochromatique, on
considère que Vg = Vϕ, donc l'information se propage à Vϕ (valable uniquement pour un signal
monochromatique).
A partir de la vitesse de phase on va définir un autre élément important, la longueur d'onde :
𝑉𝜑
𝜆= 𝑓
où f est la fréquence du signal.
Page 13 sur 193 Les réseaux IUT de CACHAN
Version 2017 en Informatique Industrielle H. Angelis

Déphasage et atténuation
On a vu dans le chapitre précédent qu'un signal se propage dans une ligne de transmission à
une vitesse qui dépend uniquement du milieu (Vϕ). A cette vitesse, on en associe une deuxième, la
vitesse de groupe (Vg), qui est liée à la distribution de fréquence (série de fourrier) du signal transporté.
Tous les signaux ne se propagent donc pas à la même vitesse, ce qui implique l'apparition d'un
retard entre les sinusoïdes qui composent le signal. On cumule donc un retard variable selon la
fréquence, à celui de la transmission (qui lui ne dépend que de la matière dans laquelle le signal se
propage). S’il n’y a pas d’atténuation, alors les sinusoïdes qui composent le signal à l'arrivée sont
simplement retardées les unes par rapport aux autres, ce qui se traduit par un déphasage.
A ce déphasage, s'ajoute de plus une atténuation liée aux pertes de la ligne. Cette atténuation
dépend à la fois de la fréquence, du diamètre des conducteurs et de la longueur de la ligne.

L'ensemble de ces phénomènes s'ajoute les uns aux autres et conduit à une modification de
l’amplitude et de la phase de chaque sinusoïde du signal, un peu comme dans un filtre passe bas :

Cette déformation est théorisée par un modèle célèbre, le modèle du télégraphiste.

Modèle du télégraphiste

Dans le modèle du télégraphiste, on représente une unité de longueur de ligne par un schéma
équivalent représentant un filtre passe bas du deuxième ordre.
Ce schéma comprenant une inductance série (L) qui modélise les effets d'inductifs de la ligne
(exprimée en H/m), une résistance série (R) qui modélise la résistivité de la ligne (exprimée en Ω/m),
IUT de CACHAN Les réseaux en Page 14 sur 193
H. Angelis Informatique Industrielle Version 2017

une résistance parallèle (G) qui modélise les fuites de la ligne (traité comme une admittance, exprimée
en S/m ou en Ω-1/m) et une capacité parallèle (C) qui modélise le couplage de la ligne (exprimée en
F/m).
Le tour de force du modèle du télégraphiste (inventé par Oliver Heaviside dans les années
1880), c'est d'unifier dans un modèle unique : le phénomène physique (L et R représentent les pertes
du conducteur, tandis que G et C représentent les pertes du diélectrique), les phénomènes
d'atténuation et de déphasage (il suffit de traiter ce segment de ligne comme un quadripôle), mais il
1
modélise aussi les phénomènes de propagation 𝑉𝜑 = 𝐿𝐶 ou encore l'impédance caractéristique de la

𝐿
ligne : 𝑍0 = √ .
𝐶

Impédance caractéristique
L'impédance caractéristique d'une ligne est un paramètre fondamental qui permet de prendre
en compte les phénomènes de réflexion dans les lignes. Ce phénomène est clairement visible lorsque
L (la longueur de la ligne) est plus grand que λ (la longueur d'onde). Ce phénomène existe aussi à basse
fréquence (λ grand) ou pour des longueurs courtes (L petit), mais il est difficilement visible. Quand L
<< λ, on aura tendance à parler d'adaptation d'impédance, sans voir le rôle de la ligne.

Réflexion dans les lignes


A haute fréquence (ou lorsque la ligne de transmission est longue), les phénomènes de
réflexion dans les lignes apparaissent (en fait ils existent à toutes les fréquences mais sont presque
invisibles dans les lignes courtes ou à basse fréquence). Ces réflexions sont liées aux changements de
milieux.
On peut faire une analogie avec la lumière qui se réfléchit quand elle rencontre un changement
de milieux (air – mur, air – sol, etc.). La caractéristique du milieu dans le cas de la lumière est traduite
par un nombre, l'indice de réfraction, mais dans les câbles électriques, il s'agit cette fois d'onde
électromagnétique, et c'est alors l'impédance caractéristique que l'on utilise pour définir le milieu.
On a donc des phénomènes de réflexion des signaux dans une ligne lorsqu'on rencontre une
discontinuité d'impédance dans la ligne de transmission.

Mise en équation
Le coefficient de réflexion définit la part d'une onde qui est réfléchie par le changement
d'impédance. Il existe un coefficient de réflexion en courant (ρI) et un autre en tension (ρV) :
𝐼𝑅 𝑍0 −𝑍𝐶 𝑉𝑅 𝑍𝐶 −𝑍0
𝜌𝐼 = = 𝜌𝑉 = =
𝐼𝐼 𝑍0 +𝑍𝐶 𝑉𝐼 𝑍0 +𝑍𝑐

𝜌𝐼 = −𝜌𝑉

Où Z0 est l'impédance caractéristique, ZC, l'impédance de la charge, IR et VR les ondes (respectivement de


courant et de tension) réfléchie et II et VI, les ondes (respectivement de courant et de tension) incidentes.
On associe un autre paramètre au coefficient de réflexion, le coefficient de transmission qui
définit la part de l'onde qui est transmise à la charge. Là encore, il y a, comme pour les réflexions, deux
coefficients, un pour le courant et un pour la tension.
𝜏𝑉 = 1 + 𝜌𝑉 et 𝜏𝐼 = 1 + 𝜌𝐼

Effet des réflexions


En ne gardant que la partie réelle des nombres complexes (donc en ne considérant que des
charges résistives), dans une ligne, à chacune de ses extrémités, on aura un phénomène de réflexion.
Page 15 sur 193 Les réseaux IUT de CACHAN
Version 2017 en Informatique Industrielle H. Angelis

Il circule alors dans la ligne des ondes incidentes (OI) et réfléchies (OR) qui se propagent et s'ajoutent
les unes aux autres.

L'onde OI (en courant et en tension) part de A et se propage vers B, elle avance à une vitesse
Vϕ sur une longueur L, ce qui représente un temps T pour aller de A à B.
Arrivée en B (au bout d'un temps T), la discontinuité de l'impédance entre Z0 (l'impédance de
la ligne) et RC (l'impédance de la charge) fait se réfléchir une partie de l'onde qui retourne en A. Cette
onde réfléchie OR se propage vers A, en se superposant à l'onde OI.
Arrivée en A (au bout d'un temps T par rapport à la précédente réflexion), l'onde OR est là
encore partiellement réfléchie par la discontinuité d'impédance entre Z0 et Rg (l'impédance du
générateur), l'onde réfléchie en A s'ajoute à l'onde OI et repart vers B et ainsi de suite, jusqu'à
stabilisation.
Les réflexions ne sont pas des phénomènes recherchés dans les transmissions, elles sont même
à éviter au maximum. Lorsqu'une onde se propage de B vers A, elle se superpose à l'onde qui l'a créée.
Cela modifie à la fois la forme et l'amplitude des signaux.

On cherche donc à ne pas avoir de réflexion, ce qui revient à dire que l'on cherche à adapter
l'impédance de la charge et du générateur à celle de la ligne. Mathématiquement si on souhaite qu'il
n'y ait pas de réflexion, cela signifie que 𝜌 = 0 ce qui se traduit par 𝑍𝐶 = 𝑍0 .
Lorsque 𝜌 = 0, cela signifie aussi qu'on a 𝜏 = 1 donc que l'on transmet à la charge l'intégralité
de l'onde circulant dans la ligne.
IUT de CACHAN Les réseaux en Page 16 sur 193
H. Angelis Informatique Industrielle Version 2017

Exemple de ligne terminée par une charge adaptée

Dans un circuit dont les 2 extrémités sont adaptées, le coefficient de réflexion en B se calcule
avec ZC = Z0, soit :
𝑍𝐶 −𝑍0 0 𝑍0 −𝑍𝐶 0
𝜌𝑉𝐵 = = = 0 et 𝜌𝐼𝐵 = = =0
𝑍𝐶 +𝑍0 2𝑍𝐶 𝑍𝐶 +𝑍0 2𝑍𝐶

𝜏𝑉𝐵 = 1 + 𝜌𝑉𝐵 = 1 et 𝜏𝐼𝐵 = 1 + 𝜌𝐼𝐵 = 1


Lorsque l'onde arrive en B, elle ne se réfléchit pas mais est intégralement transmise à la charge,
tant en courant qu'en tension. Comme il n'y a pas de réflexion, le signal n'évolue plus. On arrive au
chronogramme suivant :

La valeur de Ve se calcule en prenant en compte les valeurs de E, Rg et celle de Z0. On a 𝑉𝑒 =


𝑍 𝐸
𝐸 0 . On a donc dans notre cas, si Rg = Z0, 𝑉𝑒 = . En utilisant le même montage, mais sans la ligne,
𝑅𝑔 +𝑍0 2
𝐸
on aurait obtenu la même tension ( ) sur Rc.
2

Exemple de ligne terminée par un circuit ouvert

Dans un circuit dont on a laissé l'extrémité B en l'air, le coefficient de réflexion en B de la ligne


se calcule avec ZC = ∞, soit :
𝑍𝐶 −𝑍0 𝑍𝐶 𝑍0 −𝑍𝐶 −𝑍𝐶
𝜌𝑉𝐵 = ≈ = 1 et 𝜌𝐼𝐵 = ≈ = −1
𝑍𝐶 +𝑍0 𝑍𝐶 𝑍𝐶 +𝑍0 𝑍𝐶

𝜏𝑉𝐵 = 1 + 𝜌𝑉𝐵 = 2 et 𝜏𝐼𝐵 = 1 + 𝜌𝐼𝐵 = 0

Une onde de tension qui arrive en B est donc intégralement réfléchie vers A tandis que l'onde
de courant, elle se réfléchit négativement. On transmet alors à la charge une tension Vs = 2 Ve et un
courant Is = 0. Ce dernier point est cohérent puisque la ligne est en l'air, on peut s'interroger sur la
tension Vs = 2 Ve, mais comme Ve = E/2, alors 2Ve = E, ce qui est cohérent avec le montage étudié sans
sa ligne de transmission.
Page 17 sur 193 Les réseaux IUT de CACHAN
Version 2017 en Informatique Industrielle H. Angelis

Au bout d'un temps 2T par rapport au début de la transmission, l'onde réfléchie en B revient
en A. Si on a un générateur adapté à la ligne (ce qui est généralement le cas, ou du moins, ce que l'on
recherche), on a Rg = Z0, les coefficients en A sont alors :
𝑅𝑔 −𝑍0 𝑍0 −𝑅𝑔
𝜌𝑉𝐴 = = 0 et 𝜌𝐼𝐴 = = 0 donc 𝜏𝑉𝐴 = 1 et 𝜏𝐼𝐴 = 1
𝑅𝑔 +𝑍0 𝑅𝑔 +𝑍0

Ce qui se traduit par une transmission intégrale de l'onde réfléchie au générateur et par
extension une absence de réflexion dans la ligne. On arrive alors aux chronogrammes suivants :

Si l'extrémité A n'est pas adaptée, il y a alors une réflexion sur l'entrée qui renvoie à nouveau
une onde vers l'extrémité B. Par exemple, si en A on a Rg = 2 Z0, on a alors
𝑅𝑔 −𝑍0 1 𝑍0 −𝑅𝑔 1 4 2 𝐸
𝜌𝑉𝐴 = = et 𝜌𝐼𝐴 = =− donc 𝜏𝑉𝐴 = et 𝜏𝐼𝐴 = avec 𝑉𝑒 =
𝑅𝑔 +𝑍0 3 𝑅𝑔 +𝑍0 3 3 3 3

On peut décrire le comportement du système par le tracé suivant :

2 2 2,889
La tension en B après 5 T est donc 𝑉𝑠 = 2𝑉𝑒 + 3 𝑉𝑒 + 9 𝑉𝑒 = 2,889 𝑉𝑒 = 3 𝐸. On voit bien
que la tension Vs tend vers E, qu'elle atteindra au bout d'un certain temps. Ce résultat correspond à
celui que l'on aurait obtenu sans la ligne. En A, là aussi au bout d'un certain temps, la tension Ve
atteindra E.
IUT de CACHAN Les réseaux en Page 18 sur 193
H. Angelis Informatique Industrielle Version 2017

Bruit dans les lignes


Le bruit électronique est un phénomène universel et particulièrement contraignant dans le
domaine des transmissions. On appelle bruit tout signal perturbant celui en cours de transmission.
Le bruit a des origines diverses, sa première est liée au dispositif lui-même qui génère son
propre bruit, mais la seconde origine est liée à la captation malencontreuse d'autres signaux. Le but
de tout système (ou presque) est de maintenir un niveau de signal significativement supérieur à celui
du bruit.
On classe les bruits en fonction de leurs densités spectrales, en faisant des analogies avec le
spectre des couleurs :
• Le plus connu des bruits est le bruit blanc (le blanc étant la couleur obtenu par un
mélange égal de toutes les longueurs d'ondes lumineuses), il se caractérise donc par
une densité spectrale de puissance constante sur tout la gamme de fréquence. Il a
plusieurs origines, la principale étant le bruit thermique dans les résistances, qui est
lié à l'agitation des électrons (qui augmente avec la température). On lui connait aussi
une origine cosmologique (le Big Bang), mais sa puissance est trop faible pour être
perceptible dans le domaine des réseaux.
• Un autre bruit électronique connu est le bruit en 1/f ou bruit rose (le rose étant une
prédominance du rouge, donc un bruit plus fort aux basses fréquences qu'aux hautes
fréquences), il se caractérise par une densité spectrale de puissance en 1/f, autrement
dit plus la fréquence augmente, plus la puissance du bruit diminue. Ce bruit est
perceptible en électronique surtout à basse fréquence (en dessous du KHz).

Indépendamment de ces deux familles de bruits (il y en a d'autres, comme les bruits bleus ou
gris, mais ils ne sont pas associés à des phénomènes électroniques), on a beaucoup de bruits liés aux
composants électroniques, comme :
• Les bruits de grenaille (liés au passage aléatoire d'électrons dans une jonction, les
électrons ne se suivant pas comme les wagons d'un train, mais arrivant comme des
voitures sur une autoroute à plusieurs voies).
• Les bruits de scintillation (ou flicker), un bruit rose lié à la création (et à la disparition)
de paires trou-électron dans les composants électroniques, en particulier dans les
semi-conducteurs.
Avec là encore plein d'autres formes de bruits (comme les bruits en créneaux ou le bruit
d'avalanche). Mais globalement ces bruits sont de très faibles puissances et ne touchent donc pas les
transmissions numériques.
La principale source de bruits pour les transmissions est l'activité humaine (transmission
hertzienne, arc électriques volontaires ou involontaires et bien sûr le rayonnement du réseau de
distribution électrique), ainsi que les bruits associés à des phénomènes naturels (rayonnement solaire,
orage).
La puissance de ces bruits est sans commune mesure avec les bruits dans les composants
électroniques (quelques Watt pour les activités humaines, contre quelques µW, ou moins pour les
bruits créés par les composants électroniques).
Page 19 sur 193 Les réseaux IUT de CACHAN
Version 2017 en Informatique Industrielle H. Angelis

Dans les réseaux ce qui compte ce n'est donc pas l'origine ou la forme du bruit mais bien plus
son effet sur le signal, avec le fameux rapport signal sur bruit, qui définit la capacité de détecter le
signal dans le bruit. Le but d’une transmission étant de minimiser le risque d’erreur lié à des
perturbations (ou bruits), on va alors jouer sur un ensemble de paramètres pour garantir la qualité de
la transmission.
Dans une transmission on utilisera un signal dont
l’amplitude est supérieure au bruit d’au moins une certaine
marge, cette marge permet d’assurer au récepteur une bonne
identification des seuils qui définissent les états du signal. Tant
que le bruit n’atteint pas le seuil fixé, la transmission est
possible.
Par exemple dans un composant numérique, la marge est la différence entre VIH et VIL. Dans
un réseau, la marge est souvent définie par la probabilité d’erreur qu’elle implique (appelée BER pour
Bit Error Rate).
En l’absence de marge, l’amplitude maximum du bruit se calcule à partir de l’amplitude du
signal. Le bruit doit toujours avoir une amplitude inférieure à la moitié de l’amplitude du signal
(atténuation de plus de 6 dB), sinon la combinaison du signal et du bruit ne permet plus de distinguer
le ‘1’ du ‘0’.

Pour garantir la qualité des transmissions, on se doit de respecter une règle (théorème de
Shannon-Hartley) :
𝑆
𝐷 ≤ 𝐵 ∙ 𝑙𝑜𝑔2 (1 + )
𝑁
Où D est le débit en bit/s, B est la bande passante du signal et S/N est le rapport signal sur bruit recherché.
Pour pouvoir augmenter le débit, il faut donc augmenter la bande passante du canal (donc
jouer sur la ligne par elle-même) et chercher à augmenter le rapport signal sur bruit :
• En augmentant l’amplitude ou la puissance du signal (par exemple dans une liaison
série on utilise des tensions de +/- 10V pour coder les niveaux, respectivement 10V
pour ‘0’ et -10V pour le ‘1’).
• En diminuant le bruit (en jouant sur le câblage, comme on le verra dans le chapitre
suivant).

Augmentation
du niveau
du signal
IUT de CACHAN Les réseaux en Page 20 sur 193
H. Angelis Informatique Industrielle Version 2017

Technologie des réseaux


Interconnexion de machines
En général, la première idée venant à l'esprit lorsqu’on essaye
d’interconnecter deux machines entre elles (ou plutôt deux nœuds, pour
reprendre un vocabulaire réseau), consiste à utiliser deux conducteurs entre
l’émetteur et le récepteur, l’un transportant le signal de données et l’autre
une référence de tension. On parle alors de liaison bifilaire asymétrique (les
deux conducteurs ne transmettant pas la même information).

Connexions asymétriques
Ce type de liaison présente deux défauts importants, d’une part, les conducteurs ne sont pas
couplés l’un à l’autre, autrement dit, ils subissent individuellement les effets des perturbations, et cela
d’autant plus qu’ils sont éloignés l’un de l’autre.
En effet, si une source de bruit de puissance P se situe à une distance d1 du premier conducteur,
la puissance reçue sur ce conducteur est liée à la surface de la sphère, tangente au fil et dont le centre
est la source d'émission (si on considère une émission isotopique). Cette surface vaut 𝑆1 = 4𝜋𝑑12 , donc
𝑃
la puissance reçue sera 𝑃1 = 𝑆 , tandis que sur le second conducteur, la puissance reçue sera 𝑃2 =
1
𝑃 𝑃
𝑆2
= 4𝜋𝑑22
. Donc si d1 ≠ d2, l'effet du bruit sur chaque ligne n'aura pas la même puissance donc pas la
même amplitude. On peut facilement réduire ce problème en les rapprochant l’un de l’autre (en les
torsadant ou en utilisant un câble coaxial).
D’autre part, comme la liaison de masse est résistive, le passage d’un courant entre les 2
nœuds engendre une tension d’offset, ce qui diminue l’immunité aux bruits de ce type de liaison.

On ne peut donc utiliser des liaisons asymétriques (non coaxiales) que


sur des distances de quelques mètres. Par contre il est possible en choisissant
bien un câble coaxial adapté (et donc coûteux), d’utiliser des liaisons sur de
très longues distances (les liaisons sous-marine entre Europe et Etats Unis
furent longtemps des câbles coaxiaux) à condition de bien protéger la ligne
des perturbations électromagnétiques (la liaison de masse qui sert de cage de
Faraday n’ayant pas une impédance nulle, les perturbations sont visibles sur
le signal de masse).
Page 21 sur 193 Les réseaux IUT de CACHAN
Version 2017 en Informatique Industrielle H. Angelis

Connexions composant à composant


Lorsque les deux nœuds mis en œuvre ont déjà une masse commune
(ce qui peut arriver sur des cartes électroniques par exemple), il est possible
alors de ne pas utiliser de deuxième fil établissant la liaison de masse. On peut
alors parler de liaison unifilaire (même si en réalité on est bien dans une
liaison bifilaire puisque les masses des composants en communication sont
belles et bien reliées).
Ce type de liaison est utilisé dans les réseaux SPI (Sérial Peripheral Interface) ou I²C (Inter
Integrated Circuit). Ces liaisons sont limitées à des distances très réduites (quelques dizaines de
centimètres, comme les composants sur une carte électronique).

Connexions symétriques
Depuis une cinquantaine d’années, les liaisons bifilaires ont changé.
Aux liaisons asymétriques, on préfère désormais les liaisons symétriques,
c’est-à-dire des liaisons où l’information n’est plus référencée par rapport à la
masse, mais transmise de façon différentielle entre les deux conducteurs.
L’information n’est alors plus transmise sous la forme d’une tension
par rapport à la masse, mais par rapport à l’autre voie. Grâce à cela, on n'a
plus besoin de liaison de masse entre les deux nœuds donc plus de tension d'offset liée à la résistivité
de la ligne. Par contre le parasitage reste le même, que dans une liaison asymétrique.

Les tensions aux bornes des conducteurs (VH et VL) ont pour potentiel respectif :
𝐸 𝐸
𝑉𝐻 = 𝑉𝑐𝑜𝑚𝑚𝑢𝑛 + et 𝑉𝐿 = 𝑉𝑐𝑜𝑚𝑚𝑢𝑛 −
2 2

Où Vcommun est la tension entre la masse (pas la même des 2 côtés du conducteur à cause de
Em) et les conducteurs. En cas de perturbation sur la ligne, on va trouver :
𝐸 𝐸
𝑉𝐻 = 𝑉𝑐𝑜𝑚𝑚𝑢𝑛 + + 𝑉𝑝1 et 𝑉𝐿 = 𝑉𝑐𝑜𝑚𝑚𝑢𝑛 − + 𝑉𝑝2
2 2

D’où une tension en sortie :


𝐸 𝐸
𝑉𝑆 = 𝑉𝐻 − 𝑉𝐿 = 𝑉𝑐𝑜𝑚𝑚𝑢𝑛 + + 𝑉𝑝1 − 𝑉𝑐𝑜𝑚𝑚𝑢𝑛 + − 𝑉𝑝2 = 𝐸 + 𝑉𝑝1 − 𝑉𝑝2
2 2
Les tensions communes sont naturellement éliminées lors de la réception, il ne reste donc plus
que le signal et les parasites qu’elles ont reçu. Là encore, si les 2 conducteurs sont très proches l’un de
l’autre (par exemple en les torsadant) les distances d1 et d2 par rapport à la source de bruit peuvent
être quasi égales, ce qui fait que VP1 et VP2 sont quasi égaux et donc que VS = E.
De nos jours, on a quasi totalement supprimé les liaisons asymétriques pour ne plus utiliser
que des liaisons symétriques, un peu moins sensibles au bruit (surtout si les conducteurs sont proches
l'un de l'autre).
IUT de CACHAN Les réseaux en Page 22 sur 193
H. Angelis Informatique Industrielle Version 2017

Codage de l’information
Le codage des signaux est une façon de traiter les signaux logiques pour les transmettre dans
les meilleures conditions possibles, c'est-à-dire :
• En augmentant l'immunité au bruit
• En réduisant la bande passante nécessaire à la transmission
• En supprimant les fréquences gênantes, ou au contraire en faisant apparaître des
fréquences utiles

Le code unipolaire NRZ


Le code que l'on utilise pour représenter les signaux numériques est un code appelé unipolaire
NRZ. Ce code utilise un niveau de tension (plus la masse) pour représenter le signal (on verra plus loin
la signification de NRZ).

Dans ce signal, comme il n’y a que 2 états, la probabilité d'avoir un '1' logique (p1) est égale à
celle du '0' logique (p0 = 1-p1), c'est-à-dire p1 = p0 = 0,5. Autrement dit, ce signal a 2 états, le premier
de probabilité p0 = 0,5 est associé à une tension V0 = 0V et le second a une probabilité p1 = 0,5 et est
associé à une tension V1 = E (la tension a : 50% de chance d'être à E et 50% de chance d'être à 0).
Si on se pose la question de sa valeur moyenne, alors on trouve :
1
𝐸
〈𝑉𝑚𝑜𝑦 〉 = ∑ 𝑉𝑖 ∙ 𝑝𝑖 = 𝑝1 𝐸 + 𝑝0 0 = 𝑝1 𝐸 =
2
𝑖=0

La moyenne est la somme du produit des tensions par leurs probabilités.


Outre le fait que cette composante continue ne contient pas de signal et donc qu'elle
consomme de l'énergie en pure perte, dans le modèle de la ligne de transmission symétrique, il n'est
pas envisageable de mettre une tension continue aux bornes d'un transformateur (problème de
saturation du noyau magnétique).
Sa valeur efficace est :

1
𝐸2 𝐸
𝑉𝑒𝑓𝑓 = √∑ 𝑉𝑖2 ∙ 𝑝𝑖 = √𝐸 2 ∙ 𝑝1 + 0 ∙ 𝑝0 = √ =
2 √2
𝑖=0

La valeur efficace est la somme du produit du carré des tensions par leurs probabilités.
D’un point de vue fréquentiel, le signal unipolaire NRZ
étant apériodique, on l’analyse comme une suite de fonctions
"porte" décalées dans le temps. La transformée de Fourier de
la fonction porte de largeur T (centrée sur l’origine, allant
de -T/2 à T/2) se calcule par la formule suivante :

𝑇 𝑇 𝑇
1 2 2𝐸 2 2𝐸 sin(2𝜋𝑓𝑡) 2 sin(𝜋𝑓𝑇)
𝐷 = ∫ EΠ(𝑡) cos(2𝜋𝑓𝑡) 𝑑𝑡 = ∫ cos(2𝜋𝑓𝑡) 𝑑𝑡 = [ ] =𝐸
𝑇 −𝑇 𝑇 0 𝑇 2𝜋𝑓 0
𝜋𝑓𝑇
2

On trouve un sinus cardinal


Page 23 sur 193 Les réseaux IUT de CACHAN
Version 2017 en Informatique Industrielle H. Angelis

L’énergie d’un sinus cardinal est quasi


intégralement comprise dans son premier lobe
(plus de 90% de l’énergie du signal). La bande
passante réservée à ce signal pourra donc être
limité à 1/Tb (où Tb est la durée d’un bit).
On peut constater là encore que
l’énergie mise dans la composante continue
représente une part importante de l’émission
sans pour autant apporter d’information. Il faut
donc s’en débarrasser.

Le code bipolaire NRZ


Les codes bipolaires NRZ utilisent deux niveaux de tension, mais
n’utilisent plus la masse pour coder l’information, autrement dit, on
associe au ‘1’ logique un niveau de tension (E) et au ‘0’ logique un niveau
de tension (-E).
En reprenant les calculs effectués pour le code unipolaire, on arrive alors aux résultats
suivants :
1
〈𝑉𝑚𝑜𝑦 〉 = ∑ 𝑉𝑖 ∙ 𝑝𝑖 = 𝑝1 𝐸 + 𝑝0 (−𝐸) = 𝑝(𝐸 − 𝐸) = 0
𝑖=0

1
2𝐸 2
𝑉𝑒𝑓𝑓 = √∑ 𝑉𝑖2 ∙ 𝑝𝑖 = √𝐸 2 ∙ 𝑝1 + (−𝐸 2 ) ∙ 𝑝0 = √ =𝐸
2
𝑖=0

Cette fois-ci, il n’y a plus de composante


continue, mais la consommation énergétique de
la transmission a beaucoup augmenté (la tension
crête à crête a doublé, il est normale que la
puissance reflète cette augmentation).
D'un point de vue occupation spectrale,
ces deux codes se ressemblent beaucoup.
L'essentiel de la puissance de transmission (91%)
est présente dans le premier lobe qui se termine
à 1/Tb (Tb est la durée d'un bit). Même en
l'absence de composante continue, le signal est compris entre 0 Hz et 1/Tb. On considère que la bande
passante permettant de récupérer 80% de la puissance est de 0,6/Tb.
IUT de CACHAN Les réseaux en Page 24 sur 193
H. Angelis Informatique Industrielle Version 2017

Les codes RZ
Le principal inconvénient des codes NRZ vient du fait qu'ils ne permettent pas de reconstituer
l'horloge d'émission, en effet l'horloge d'émission est un signal de fréquence 1/Tb, là où le spectre des
signaux NRZ vaut 0. On a donc eu recours aux codes RZ (pour Return to Zero, par opposition aux NRZ,
No Return to Zero) pour permettre une réception synchrone (voir plus loin dans le document).
Le principe des codes RZ, c'est de reprendre le signal unipolaire ou bipolaire et de le mélanger
à l'horloge par une simple porte ET (le niveau "revient" à 0 pendant la durée du bit).

Unipolaire RZ
Pour le code unipolaire RZ, un '1' se traduit par une impulsion d'un
demi temps-bit à E puis le reste du temps-bit à 0, et le '0' par un temps-bit
à 0.

Bipolaire RZ
Pour le bipolaire RZ, le '1' est codé par un demi temps-bit à E, puis
le signal repasse à 0 pour finir le temps-bit, et le '0' est codé par un demi
temps-bit à –E, puis le signal repasse à 0.
On retrouve pour les 2 signaux (unipolaire et bipolaire RZ) les mêmes problèmes que pour
leurs équivalents en NRZ, à savoir la présence d'une composante continue importante pour les signaux
unipolaires et une augmentation importante de la puissance pour le signal bipolaire, mais c'est sur le
spectre qu'apparait la principale différence avec les signaux NRZ :

Cette fois ci les lobes des codes RZ sont deux fois plus larges (le premier lobe va de 0 Hz à 2/Tb)
que ceux des codes NRZ (le facteur 2 est lié à une durée à l'état haut divisée par 2, en divisant cette
durée par 3, le spectre aurait été 3 fois plus large). Ce qui permet d'avoir une composante à 1/Tb
(particulièrement bien visible pour le code unipolaire RZ).
Par voie de conséquence, du fait de l'étalement du spectre, la hauteur (c'est-à-dire la puissance
du signal) est deux fois plus faible, donc le signal est plus sensible au bruit que les codes NRZ.
Page 25 sur 193 Les réseaux IUT de CACHAN
Version 2017 en Informatique Industrielle H. Angelis

Le codage RZ permet donc de récupérer une horloge, mais il impose une occupation spectrale
deux fois plus grandes que pour les codes NRZ.

Les codes biphasés (code Manchester)


Les codes biphasés, ou Manchester (inventé en 1949 à l’université de Manchester)
s’obtiennent facilement en mélangeant (avec un OU Exclusif) un signal NRZ unipolaire avec son horloge
d’émission et en transformant en suite le signal en bipolaire.

On peut se rendre compte que dans un code Manchester, c’est un front qui définit
l’information transmise. Dans notre exemple, si on ne s’occupe que des fronts dessinés en noirs, on se
rend compte que :
• Un front montant représente un ‘1’ et un front descendant, un ‘0’.
• On a une période entre chaque front.
D’un point de vue tension, on a :
〈𝑉𝑚𝑜𝑦 〉 = 0 et 𝑉𝑒𝑓𝑓 = 𝐸

Par contre lorsqu’on regarde la densité spectrale du signal, on se rend compte que les lobes
sont plus étroits :

Le code Manchester présente de nombreux avantages :


• Son premier lobe est étroit puisqu’il libère toute la partie basse fréquence (on
considère que la largeur utile du premier Lobe est d’environ 0,8/Tb, que l’on peut
comparer au 0,6/Tb du code bipolaire NRZ ou au 1,2/Tb du code Bipolaire RZ).
• La puissance du premier lobe est très supérieure par rapport au code bipolaire RZ, le
code Manchester est donc nettement moins sensible au bruit.
Il n’en reste pas moins gourmand en énergie. On a donc cherché à retrouver ses qualités sur
des codes plus étroits.

Le code AMI (Alternate Mark Inversion)


Le code AMI est un code bipolaire qui utilise 3 niveaux de tension
pour coder l’information. Les ‘1’ sont alternativement codés par un
potentiel +E ou –E, tandis que les ‘0’ sont codés par une transmission de
0 V.
IUT de CACHAN Les réseaux en Page 26 sur 193
H. Angelis Informatique Industrielle Version 2017

On obtient alors 3 potentiels : V0 = 0V (probabilité p0= 0,5), V1 = E (probabilité p1= 0,25) et


V2 = -E (probabilité p2= 0,25). On arrive donc aux calculs :
2
〈𝑉𝑚𝑜𝑦 〉 = ∑ 𝑉𝑖 ∙ 𝑝𝑖 = 𝑝0 0 + 𝑝1 𝐸 + 𝑝2 (−𝐸) = 0,25(𝐸 − 𝐸) = 0
𝑖=0

2
2𝐸 2 𝐸
𝑉𝑒𝑓𝑓 = √∑ 𝑉𝑖2 ∙ 𝑝𝑖 = √𝑝0 ∙ 0 + 𝐸 2 ∙ 𝑝1 + (−𝐸 2 ) ∙ 𝑝2 = √ =
4 √2
𝑖=0

On constate donc toujours une absence de composante continue et une tension efficace plus
réduite que pour le bipolaire NRZ ou le Manchester.

La vraie différence entre le codage AMI et les autres codes résident dans le spectre du signal.
Le premier lobe est légèrement moins puissant que dans les transmissions NRZ (86% au lieu de 91%),
de même, il finit toujours à 1/Tb, mais sa grande particularité consiste dans son étroitesse, il libère
ainsi les bornes hautes et basses du canal de transmission (la bande passante du signal est évalué à
0,45/Tb).

Densité spectrales des codes


Page 27 sur 193 Les réseaux IUT de CACHAN
Version 2017 en Informatique Industrielle H. Angelis

Emetteurs et récepteurs
Le codage de l’information est une chose, on a vu qu’il dépendait de la technologie de câblage
et de considération énergétique ou de bande passante. On a vu aussi que certains codes transportent
un signal d’horloge. Reste à se poser la question de leur transmission et surtout de leur réception.

Sérialisation
En effet, envoyer des données ne nécessite que de les sérialiser, c’est-à-dire de transformer
un ensemble de bits arrivant en même temps en un ensemble de bits arrivant les uns après les autres.
Pour cela on utilise un simple registre à décalage dont la taille est adaptée au message à transmettre.

Lorsque L passe à l’état actif, les entrées des bascules D reçoivent les données. Au front
montant de l’horloge, les données se retrouvent en sortie. Sur la sortie de la bascule A, on trouve D3,
D2 sur B, D1 sur C et D0 sur la sortie S.
L repasse à l’état inactif, ce qui branche QA sur DB, QB sur DC et QC sur DD.
Au front d’horloge suivant, la donnée en entrée de la bascule est recopiée à sa sortie, ainsi sur
la sortie on aura la donnée qui était présente avant le front, c’est-à-dire D1 sur S, D2 sur QC et D3 sur
QB, et ainsi de suite.
S prendra donc dans l’ordre, les valeurs : D0, D1, D2, D3. On a sérialisé les données.

Ordre des bits


On peut noter au passage qu’il est possible de transmettre les données dans un ordre différent.
Cet ordre de transmission peut être D0, D1, D2 et D3, mais aussi D3, D2, D1 et D0. Dans le premier cas, on
parle d’une transmission en mode Little Endian, dans le second d’une transmission en mode Big
Endian.
Ces deux termes sont tirés du livre « les voyages de Gulliver » (deux peuples en guerre qui
s’opposent sur la façon de manger les œufs durs, les premiers préférant manger le petit bout en
premier, les seconds, le gros…), mais ils font maintenant parti du vocabulaire des transmissions.

Le récepteur
Autant la transmission est simple, autant la réception est un principe compliqué. En effet, pour
que deux nœuds puissent se comprendre, ils doivent avoir en commun une vitesse de communication.
Par exemple 1010 (A en hexadécimal) peut devenir 11001100 (CC en hexadécimal) si le
récepteur est à une fréquence de réception double de celle de l’émetteur.
IUT de CACHAN Les réseaux en Page 28 sur 193
H. Angelis Informatique Industrielle Version 2017

Pour faire en sorte qu’émetteur et récepteur agissent sur la ligne au même rythme, il y a trois
solutions :
• Rajouter une liaison d’horloge pour rythmer l’échange
• Transmettre l’horloge codée avec la donnée.
• Fixer le débit de la transmission sur l’émetteur et le récepteur.
A partir du moment où on a une horloge commune entre l’émetteur et le récepteur, c'est une
transmission synchrone, lorsque les horloges ne sont pas les mêmes, il s'agit d'une transmission
asynchrone.

Transmission synchrone
Dans les techniques de transmission synchrone, utiliser une liaison spécifique d’horloge est
réservé aux distances ultra-courtes comme par exemple sur un même circuit imprimé. La liaison
d’horloge n’a alors pas de coût intrinsèque (juste celui de son temps de routage). Du coup, elle résout
naturellement et sans coût le problème de la synchronisation des horloges de réception et d’émission
(on la retrouvera dans les réseaux SPI et I2C). Pour les réseaux longs, on cherche plutôt la transmission
de l'horloge par codage. Dans la liste des réseaux qui compose ce document, seul Ethernet (10 BASE
X) utilise un codage synchrone : le code Manchester. Etudions son récepteur.

L’information qui circule sur la ligne passe par un premier étage : un détecteur de front. Il
déclenche une impulsion courte à chaque front (montant ou descendant) du signal (signal VA).
Ces impulsions entrent dans un monostable non redéclenchable, c’est-à-dire un composant
générant une impulsion dont on maitrise la durée (entre T/2 et T) et qui ne peut redéclencher
d'impulsion que si sa sortie est repassée à ‘0’, cela élimine les impulsions à T/2 (signal VB).
Puis on introduit ce signal dans une PLL (Phase Lock Loop, ou boucle à verrouillage de phase)
qui génère un signal d'horloge de fréquence double, mais synchrone avec le signal d'entrée En le
divisant alors par deux (en fréquence). On obtient un signal d'horloge synchrone avec celui de
l'émetteur. Ce signal d’horloge servira au registre à décalage (signal VH).
En complémentant ce signal d’horloge et en le mélangeant (par un OU exclusif) au signal
présent sur la ligne on récupère le signal de données, ce qui est logique puisque pour l’émetteur :
𝑆𝑖𝑔𝑛𝑎𝑙 = 𝐷𝑎𝑡𝑎 ⊕ 𝐻𝑜𝑟𝑙𝑜𝑔𝑒
Donc si le récepteur fait : 𝑀𝑒𝑠𝑠𝑎𝑔𝑒 = 𝑆𝑖𝑔𝑛𝑎𝑙 ⊕ 𝐻𝑜𝑟𝑙𝑜𝑔𝑒
Alors 𝑀𝑒𝑠𝑠𝑎𝑔𝑒 = 𝐷𝑎𝑡𝑎 ⊕ 𝐻𝑜𝑟𝑙𝑜𝑔𝑒 ⊕ 𝐻𝑜𝑟𝑙𝑜𝑔𝑒
Or comme 𝐻𝑜𝑟𝑙𝑜𝑔𝑒 ⊕ 𝐻𝑜𝑟𝑙𝑜𝑔𝑒 = 0
On trouve : 𝑀𝑒𝑠𝑠𝑎𝑔𝑒 = 𝐷𝑎𝑡𝑎 ⊕ 0 = 𝐷𝑎𝑡𝑎
Page 29 sur 193 Les réseaux IUT de CACHAN
Version 2017 en Informatique Industrielle H. Angelis

Ce montage permet de récupérer à la fois le signal de donnée et l’horloge de l’émetteur, mais


pour cela, il a fallu mettre en œuvre une PLL (élément complexe) qui nécessite du temps pour se caler
sur l’émetteur, ce qui a un effet sur le signal émis, comme on le verra en étudiant Ethernet.
Les techniques modernes de décodage des signaux synchrone font appel à un récepteur
beaucoup plus proche d’un récepteur asynchrone, c'est-à-dire que l'on utilise les techniques de
l'asynchrone (plus simple technologiquement) pour décoder le signal (sans régénérer l'horloge).

Transmission asynchrone
Un récepteur asynchrone est conçu pour recevoir un signal envoyé par un émetteur sans que
le récepteur et l’émetteur aient la même horloge. Donc le récepteur doit resynchroniser son horloge
sur les fronts de l’horloge de l’émetteur qu’il ne voit pas, ce qui par définition est impossible.
Toutefois, comme un émetteur est avant tout un registre à décalage, c’est-à-dire que les
changements d’état du signal en sortie sont synchrones avec l'horloge de l’émetteur. L'idée du
récepteur asynchrone c'est d'utiliser les changements d’état du signal de données, pour
resynchroniser le récepteur avec l’émetteur.

Le principe du récepteur asynchrone (appelé UART pour Universal Asynchronous Receiver


Transmitter) consiste à recaler un compteur modulo N alimenté par une horloge (à peu près à la même
fréquence que celle de l'émetteur) sur les fronts du signal.
Dans les transmissions asynchrones, comme l’émetteur et le récepteur n’ont pas la même
horloge, ils ne sont pas synchronisés (ils ne démarrent pas en même temps) et quand bien même ils le
seraient, alors malgré tous nos efforts, les horloges des 2 nœuds vont toujours finir par diverger. Le
récepteur doit réussir à se caler sur l'émetteur au début de la transmission, puis se recaler le plus
souvent possible pour que les horloges restent assez proches pour éviter de commettre une erreur.
L'erreur apparait lorsque l'accumulation de retards entre les signaux d'horloge de l'émetteur
et du récepteur atteint la moitié de la durée d'un bit (Tb/2).
L'UART utilise un compteur modulo N (il compte de 0 à N-1, puis recommence depuis 0) dont
une période de comptage doit correspondre au temps de transmission d’un bit (Tb). L'horloge de ce
compteur est alors N fois plus rapide que celle de la transmission (F = N x D, où D est le débit de la
transmission, Tb = 1/D). A partir de son oscillateur local, le récepteur utilise un prédiviseur (prescaler
en anglais) générant une horloge dont la fréquence est la plus proche possible de N x D.
Le compteur s’incrémente ensuite à chaque front de l’horloge interne et compte de 0 (début
d’un bit) à N-1 (fin d’un bit). Lorsqu’il passe à N/2, la donnée présente sur la ligne (et que l’on a
potentiellement décodée pour la transformer en unipolaire) est enregistrée dans le registre à décalage.
IUT de CACHAN Les réseaux en Page 30 sur 193
H. Angelis Informatique Industrielle Version 2017

Lorsqu’un front apparait sur la ligne de transmission, le détecteur de front active l’entrée RAZ
du compteur. Le compteur est alors immédiatement remis à zéro (ce qui signifie pour le récepteur le
début d'un nouveau bit transmis, ce qui correspond à la situation). On vient ainsi recaler le récepteur
sur l’émetteur et d’annuler les décalages accumulés entre l’émetteur et le récepteur.
En reprenant l’exemple de la liaison série (voir le polycopié éponyme), on peut observer ci-
dessous le cas idéal où l'horloge de l'émetteur est celle du récepteur :

Mais comme les horloges sont différentes, elles divergent. On s'aperçoit qu'une erreur ε
accélère l’horloge du récepteur et s’accumule (si on ne se recale pas sur les fronts) et finir par créer
une erreur (entourée dans le dessin ci-dessous).

Pour limiter le risque d’erreur, on se recale sur les changements d’état du signal reçu :

Le risque d’erreur est diminué mais pas annulé, en effet, si il y a une longue série de bits
transmis sans changement d’état (on appelle ça un tunnel), alors l’émetteur et le récepteur vont
encore une fois finir par diverger.
On doit donc ajouter aux messages transmis en asynchrone des bits de resynchronisation
lorsqu’il y a des tunnels de ‘0’ ou de ‘1’. Ce processus s’appelle le bit stuffing (en français : bourrage de
bits, expression à n’employer qu’avec des gens connaissant le sujet et attention à l’orthographe).

Bit Stuffing
Le principe du bit stuffing, c’est de mettre des fronts régulièrement dans la communication. Il
existe de nombreuses techniques pour s’assurer d’une présence de fronts réguliers. Ils peuvent se
classer en 2 catégories : Le bit stuffing substitutif et le bit stuffing additif.
Page 31 sur 193 Les réseaux IUT de CACHAN
Version 2017 en Informatique Industrielle H. Angelis

Le bit stuffing additif


Le bit stuffing additif ajoute des bits supplémentaires à la transmission pour assurer la
présence de fronts réguliers… Par exemple dans le bus CAN, il y a un bit d’ajouté après chaque série
de 5 bits à ‘1’ ou à ‘0’. Le principal inconvénient de ce type de codage, c’est que la taille d’un message
à transmettre va dépendre de son contenu, donc sa durée de transmission sera variable.
Il existe d’autres codages comme par exemple les codes de bloc qui assurent à la fois un bit
stuffing efficace et une taille de donnée fixe.

Les code de blocs


Un peu comme les codes de parité (voir plus loin), les codes de bloc ajoutent un ou plusieurs
bits au message, pour le rendre moins sensible aux perturbations et surtout plus dynamique (plus de
fronts). Mais là s'arrête la ressemblance car les codes de bloc ne sont pas calculés pour chaque
message mais codés, c'est-à-dire qu'à chaque valeur du message correspond un code qui sera transmis
à la place du message d'origine.
Il existe de nombreux codes de blocs, l'un des plus utilisé est 4B5B (il est utilisé dans Ethernet
100 BASE TX, le réseau le plus répandu au monde), mais on trouve aussi des codes 8B10B et encore
d'autre format.
Le code 4B5B associe à un mot de 4 bits un message de 5 bits assure qu'il n'y aura jamais de
série de plus de 5 bits à '0' successifs, même en considérant 2 mots consécutifs.
De plus, même si ce ne sont pas, au sens propre, des codes détecteurs d'erreurs, 4B5B (utilisé
par Fast Ethernet) ou 8B10B (utilisé par Ethernet Gigabit), permettent une petite détection d'erreur.
L'utilisation de 8 des 16 codes assure une légère amélioration de la détection d'erreur, mais ce n'est
pas le rôle principal de ce code. Là encore on trouvera des codes bien plus efficaces.
Message à Par exemple, si on envoie le message 0x8006, alors le
Bloc 4B5B
envoyer message émis en code unipolaire NRZ serait :
0 0000 11110
1 0001 01001 1000 0000 0000 0110
2 0010 10100 Soit un tunnel de 12 bits à '0' de suite. Traduit en code 4B5B,
3 0011 10101 le même message devient :
4 0100 01010
5 0101 01011 10010 11110 11110 01110
6 0110 01110 Ce qui a supprimé le tunnel de '0'. De plus en cas d'erreur
7 0111 01111 de transmission on peut obtenir un code impossible :
8 1000 10010
9 1001 10011 10000 11110 11110 01110
10 1010 10110 On peut détecter l'erreur sur le premier nombre, puisque
11 1011 10111 10000 n'existe pas. Toutefois, si le message d'origine devient :
12 1100 11010
13 1101 11011 10110 11110 11110 01110
14 1110 11100 Le code associé à ce message est devenu 0xA006. L'erreur
15 1111 11101 n'est pas détectée.
Ce code est donc très peu efficace pour la détection de bits passant à '1', et faiblement efficace
pour les bits passant à '0'. Par contre il permet de faire du bit stuffing très efficacement, en gardant
des messages de taille fixe (même si la taille du message augmente de 25%).
IUT de CACHAN Les réseaux en Page 32 sur 193
H. Angelis Informatique Industrielle Version 2017

Le bit stuffing substitutif


Le fait d'augmenter la taille des messages (de 1 bit pour 4 bits transmis) nuit quand même à la
vitesse de transmission, puisque le temps bit est souvent fixé au maximum de ce que la ligne permet
de transmettre, rajouter un bit fait baisser la vitesse de transfert de 20%.
On a donc inventé le bit stuffing subtitutif, permettant de conserver une taille de message
identique à celle de l'original tout en assurant la présence de fronts réguliers. Son usage est toutefois
limité du fait de sa complexité : il faut être capable de créer des fronts dans la communication sans
pour autant que ces fronts ne soient interprétés comme des données.
L'un des rares codes à utiliser le bit stuffing substitutif est le code HDB3. Ce code (utilisant un
codage AMI) n'autorise pas de série de plus de trois bits à '0' consécutifs. Dès que quatre bits de suite
sont à '0', il substitue au 4ème bit à '0' un bit à '1' qui ne respecte pas la règle de l'alternance des bits
à '1' (dans les codes AMI, les bits à '1' sont codés alternativement en +E et –E). On identifie facilement
le bit rajouté pour la synchronisation en le distinguant des bits à '1'. On les appelle les bits de viol (V).

Toutefois, en cas d'absence de '1' sur une très longue durée, les bits de viols finissent par créer
une tension continue incompatible avec les lignes de transmission. Il faut alors ajouter une règle
supplémentaire : en cas de non inversion entre 2 bits de viol (c'est-à-dire si le nombre de bits à '1' entre
2 bits de viol est pair), on rajoute un bit supplémentaire, au début de la série de bits à '0', permettant
d'inverser la polarité du second bit de viol. Ce bit est appelé bit de bourrage (B).

Le codage ou le décodage HDB3 peut sembler complexe, mais il ne nécessite qu'une mémoire
de 4 bits (en réalité un registre à décalage).
Au codage, lorsque le registre de transmission de 4 bits est plein de '0', on remplace le bit de
poids fort par un '1' pour créer le bit de viol et si le nombre de bits à '1' est pair depuis le dernier bit
de viol, alors on ajoute sur le poids faible un autre bit à '1' pour le bourrage.
Au décodage, il est facile d'identifier les bits de viol puisqu'ils ne respectent pas la règle de
l'alternance. Lorsqu'on trouve donc un bit de viol, il est facilement substitué par un '0'.
Mais comme un bit de viol ne peut apparaitre qu'après une série de 3 bits à '0', lorsqu'on
détecte un bit de viol, on peut immédiatement mettre à '0' les 4 bits du registre à décalage de
réception, ce qui efface les bits de bourrage automatiquement sans avoir à les détecter.
Page 33 sur 193 Les réseaux IUT de CACHAN
Version 2017 en Informatique Industrielle H. Angelis

Détection d'erreurs
La détection d'erreurs est le dernier élément incontournable qu'il reste à étudier pour avoir
une vision à peu près exhaustive des technologies mise en œuvre dans les réseaux. Il existe de
nombreuses techniques de contrôle d'erreur. On parle de contrôle car l'objectif de ces technologies,
est de détecter les erreurs et potentiellement de les corriger.
Les techniques de détection d'erreurs ont évolué depuis les méthodes élémentaires, comme
la répétition de code ou le contrôle de parité, jusqu'aux codes à redondance cyclique qui sont
désormais les techniques les plus efficaces de détection d'erreur.
La quasi-totalité de ces codes détecteurs d'erreurs
dérive des théories de Hamming (1915-1998). La distance de
Hamming est une méthode permettant de mesurer la
différence entre deux messages. La distance de Hamming
code le nombre de bits à modifier pour passer d'une valeur à
une autre.
La distance de Hamming (dH) détermine la possibilité de détecter et de corriger une erreur. Le
𝑑𝐻−1
nombre d'erreurs détectable s'obtient par : dH-1. Le nombre d'erreurs corrigeable par .
2

La répétition de code
Si un message est composé d'un seul bit ('0' ou '1'), sa distance de Hamming est 1, on ne peut
donc pas détecter d'erreur (dH - 1 = 0) et pas les corriger. Pour augmenter la distance de Hamming, il
suffit de répéter n fois un même bit.
Par exemple en doublant les bits émis ('0' devient '00' et '1'
devient '11'), la distance de Hamming du code est 2. On peut
facilement détecter une erreur puisque les codes '01' et '10' ne
peuvent être que le résultat d'une erreur, mais il est impossible de
savoir si le code d'origine était '00' ou '11'. On peut donc détecter 1
𝑑𝐻−1
erreur (𝑑𝐻– 1 = 1) et on ne peut pas la corriger car ( 2 < 1).
Si maintenant on triple le code ('0' devient '000' et le '1'
devient '111') alors, on a entre ces deux codes une distance de
Hamming de 3. Puisque dH-1 = 2, on peut détecter 2 erreurs ('011' ou '001' ne peuvent être obtenue
𝑑𝐻−1
que par erreur) et surtout corriger 1 erreur, puisque 2 = 1 (si on sait qu'il n'y a eut qu'une seule
erreur '010' est forcément le code '000' sur lequel le bit central a été modifié).

Rendements
Par la suite pour pouvoir comparer les codes entre eux, on utilise des outils comme le
rendement de codage et le rendement de détection.
nombre de bits de données
Rendement de codage ∶ 𝜂𝐶 =
nombre de bits transmis
nombre d'erreurs détectables
Rendement de détection ∶ 𝜂𝐷 =
nombre de bits transmis
1 1
Avec le code à répétition à 2 bits, on a 𝜂𝐶 = 2 et 𝜂𝐷 = 2. Pour une répétition à 3 bits, on trouve
1 1
: 𝜂𝐶 = 3 et 𝜂𝐷 = 3. Ces codes (et en particulier le code à 2 bits) sont plutôt efficace dans la détection
d'erreur, mais ils ont un très mauvais rendement.
IUT de CACHAN Les réseaux en Page 34 sur 193
H. Angelis Informatique Industrielle Version 2017

Le contrôle de parité
Le premier piège lorsque l'on entend parler de contrôle de parité, consiste à penser qu'il s'agit
de la parité du message (ce qui est idiot, puisqu'on ne protègerait alors que le bit de poids faible). Il
s'agit en fait de contrôler le nombre de bits à '1' dans un message en s'assurant qu'il est pair (ou impair).
Pour cela on utilise un OU EXCLUSIF.

Par exemple, imaginons un codage de parité paire sur 4 bits avec comme message 0xB (1011
en binaire). Le code de parité paire est :
1 ⊕ 0 ⊕ 1 ⊕ 1 = (1 ⊕ 0) ⊕ (1 ⊕ 1) = 1 ⊕ 0 = 1
Le message transmis est 0x17 (10111, c'est-à-dire 1011 1). Le récepteur reçoit le message
(0x17) et le passe à son tour dans un OU EXCLUSIF pour contrôler la parité :
1 ⊕ 0 ⊕ 1 ⊕ 1 ⊕ 1 = ((1 ⊕ 0) ⊕ (1 ⊕ 1)) ⊕ 1 = (1 ⊕ 0) ⊕ 1 = 1 ⊕ 1 = 0
Le bit de validation à '0' valide la transmission.
Si par contre lors de la transmission une erreur apparaît, par exemple, on envoie 0x17 et
récupère 0x16 (10111 se transforme en 10110), le passage par le OU EXCLUSIF donne :
1 ⊕ 0 ⊕ 1 ⊕ 1 ⊕ 0 = ((1 ⊕ 0) ⊕ (1 ⊕ 1)) ⊕ 0 = (1 ⊕ 0) ⊕ 0 = 1 ⊕ 0 = 1
Le bit de validation à '1' invalide la transmission.
Si maintenant on imagine deux erreurs dans la transmission, par exemple en recevant 0x14 au
lieu de 0x17, le détecteur d'erreur nous donne comme résultat :
1 ⊕ 0 ⊕ 1 ⊕ 0 ⊕ 0 = ((1 ⊕ 0) ⊕ (1 ⊕ 0)) ⊕ 0 = (1 ⊕ 1) ⊕ 0 = 0 ⊕ 0 = 0
Le bit de validation à '0' valide la transmission.
On constate que le contrôle de parité permet de ne détecter qu'une seule
erreur (dH = 2) sans pouvoir la corriger. Par contre, il validera la transmission si on a
un nombre pair d'erreurs et il l'invalidera si le nombre d'erreurs est impair.
Dans le cas de notre codage de parité, on arrive à :
4 1
𝜂𝐶 = = 80% et 𝜂𝐷 = = 20%
5 5
Page 35 sur 193 Les réseaux IUT de CACHAN
Version 2017 en Informatique Industrielle H. Angelis

Pour identifier la position d'une erreur en utilisant uniquement des codes de parité, il faut
rajouter des codes de parité supplémentaires par exemple en envoyant une "matrice" de plusieurs
messages et en codant la parité de chaque ligne mais aussi de chaque colonne :

En cas d'erreur de transmission, ce système permet à la fois de détecter l'erreur, mais aussi de
la localiser, et mieux encore lorsqu'il y a 2 ou 3 erreurs, on arrive encore à les détecter. Ce code a une
𝑑𝐻−1
distance de Hamming de 4 (dH-1 = 3 et 2 = 1,5).

Avec ce codage, la correction d'erreur est dangereuse car on ne connait pas à priori le nombre
d'erreurs présentes (dans l'exemple ci-dessus, le cas a 3 erreurs, donne l'impression qu'il n'y en a
qu'une). Le risque en corrigeant serait d'en créer une quatrième. Il vaut mieux alors choisir de détecter
les erreurs et potentiellement de retransmettre le message erroné.
16
D'un point de vue efficacité, ce type de codage donne les rendements 𝜂𝐶 = = 64% et 𝜂𝐷 =
25
3
25
= 12%, donc un codage à priori moins performant que le codage de parité simple…

Les Checksums
Le principe du checksum (ou somme de contrôle) repose sur l'idée d'ajouter à un message
(généralement découpé en blocs de taille fixe) un code de contrôle (lui aussi souvent appelé à tort
checksum) obtenu par calcul et que l'on vérifiera à la réception. Le problème consiste à définir un calcul
à effectuer dont la complexité soit compatible avec la puissance de calcul de l'émetteur et du
récepteur.
Historiquement, on a utilisé une addition (calcul le plus simple à mettre en œuvre sur les
ordinateurs rudimentaires des années 60). Depuis, les fonctions se sont complexifiées et on se sert de
fonctions beaucoup plus évoluées dans les domaines cryptographiques (on parle alors de hachage
cryptographique) ou pour vérifier l'intégrité des données (hachage). Dans ce cas, il ne s'agit plus de
simples sommes, mais de fonctions mathématiques complexes (sommes, multiplications,
permutations, etc.).
IUT de CACHAN Les réseaux en Page 36 sur 193
H. Angelis Informatique Industrielle Version 2017

On utilise généralement en français le mot checksum pour parler de somme modulaire et le


mot CRC pour parler des très efficaces Codes à Redondance Cyclique, dans les faits ils sont tous deux
des checksum (même si dans le cas du CRC, il n'y a pas de calcul de somme).
L'autre concept important des checksum en général (quels qu'ils soient), c'est qu'ils sont
indépendants de la taille du message qui les génère. On peut ainsi avoir une efficacité de codage
excellente (ηC ≈ 1) avec une efficacité assez variable (sujet abordé plus bas dans la page).

La somme modulaire
La somme modulaire revient à effectuer une somme d'éléments en limitant la portée de la
somme. Cela peut sembler abstrait mais on utilise cette fonction régulièrement, pour l'heure par
exemple : 22h + 8h = 6h (= 30 - 24). Dans le domaine informatique, on définit la somme modulaire
comme le complément à 1 de l'addition sur n bits des compléments à 1 des mots de n bits du message.
Le plus simple est de voir un exemple avec le protocole IP :
Imaginons une trame IP (on verra plus loin la signification de trame) où l'entête IP est :
4500 016D 6E25 4000 8006 XXXX 81AF E0D1 D41B 3FA9
Où XXXX est le checksum à calculer. On calcule la somme de contrôle en additionnant le
complément à 1 de chacun des mots de 16 bits de l'entête, en remplaçant XXXX par 0000 :
Entête 4500 016D 6E25 4000 8006 0000 81AF E0D1 D41B 3FA9
Complément à 1 BAFF FE92 91DA BFFF 7FF9 FFFF 7E50 1F2E 2BE4 C056
Somme 6151A > FFFF donc on découpe en 2 mots : 0006 et 151A
Somme modulaire 151A + 6 = 1520
Message transmis 4500 016D 6E25 4000 8006 1520 81AF E0D1 D41B 3FA9
Le message transmis est reçu par le récepteur qui effectue la même opération que l'émetteur,
la somme modulaire des compléments à 1 des mots de 16 bits du message, mais cette fois ci, on calcule
le checksum en prenant le complément à 1 du résultat :
Message reçu 4500 016D 6E25 4000 8006 1520 81AF E0D1 D41B 3FA9
Complément à 1 BAFF FE92 91DA BFFF 7FF9 EADF 7E50 1F2E 2BE4 C056
Somme 5FFFA
Somme modulaire FFFA + 5 = FFFF
Checksum 0
Si maintenant il y a une erreur de transmission, le checksum n'est plus nul :
Message reçu 4500 016F 6E25 4000 8006 1520 81AF E0D1 D41B 3FA9
Complément à 1 BAFF FE90 91DA BFFF 7FF9 EADF 7E50 1F2E 2BE4 C056
Somme 5FFF8
Somme modulaire FFF8 + 5 = FFFD
Checksum 2
Mais l'inconvénient de la somme modulaire vient du fait que 2 erreurs, qui s'opposent, situées
dans la même colonne (ici on passe de D = 1101 à F = 1111 et de 6 = 0110 à 4 = 0100) donnent un
checksum nul, donc un résultat valide :
Message reçu 4500 016F 6E25 4000 8004 1520 81AF E0D1 D41B 3FA9
Complément à 1 BAFF FE90 91DB BFFF 7FFB EADF 7E50 1F2E 2BE4 C056
Somme 5FFFA
Somme modulaire FFFA + 5 = FFFF
Checksum 0
La somme modulaire permet donc de détecter des erreurs "en série" et pas "en parallèle", or
on a souvent des salves d'erreurs qui perturbent un certain nombre de bits consécutifs d'un message
(parfois sur plusieurs mots) et là, on est à peu près sure que le checksum détectera quelque chose. Le
checksum n'en reste pas moins un outil fragile pour détecter des erreurs éparses.
Page 37 sur 193 Les réseaux IUT de CACHAN
Version 2017 en Informatique Industrielle H. Angelis

Les codes à redondance cyclique (CRC)


Les codes à redondance cyclique (Cyclical Redundancy Check) ont été inventés en 1965 par
William W. Peterson, mais ils n'ont été exploités qu'à partir de la fin des années 70 et réellement mis
en œuvre qu'à partir des années 80. Leur excellente efficacité en a fait l'arme absolue des
communications. Tous les réseaux modernes utilisent des CRC pour le contrôle d'erreur.

Calcul d'un CRC


Le calcul d'un CRC repose sur une opération mathématique simple, la division, mais pas la
division Euclidienne que vous avez vue en primaire, il s'agit d'une division polynômiale modulo 2. Dans
laquelle on effectue une opération mathématique assez surprenante :
1–0=0–1=1+0=1
C'est donc l'opérateur OU EXCLUSIF qu'on utilise pour manipuler les termes de la division.
Prenons l'exemple d'un message valant (1559)10 soit (11000010111)2 et d'un diviseur (appelé
polynôme générateur ou plus simplement polynôme) valant (9)10, on calcule le CRC comme le reste de
la division polynômiale modulo 2 de 1559 par 9 :

Division Euclidienne Division polynômiale modulo 2


Le CRC serait donc 6 (110)2. Mais pour la division (qu'elle soit polynômiale ou Euclidienne), le
reste est fortement impacté par les chiffres de poids faibles, par exemple le reste de 5 (101)2 divisé par
2 (10)2 ne dépend absolument pas des bits de poids fort.
Pour équilibrer l'importance des bits vis-à-vis du reste, on choisira d'une part un diviseur
intéressant (par exemple pas 2), et surtout on ajoutera à la fin du message, pour calculer le CRC, n bits
à 0, n étant le nombre de bits du reste. On arrive alors à la division ci-contre.
Par cette méthode, le CRC calculé est 6. On
peut dire que le CRC-3 de 1559 est 6 en utilisant le
polynôme 0x1.
CRC-3 car le reste est sur 3 bits (comme on
utilise un OU EXCLUSIF, il ne peut pas y avoir de '1'
comme bit de poids fort). Un polynôme 0x1 car comme
le bit de poids fort du diviseur est forcément à '1', on
peut l'omettre, ce qui se traduit par : (1)001 = 1.
Par exemple le polynôme du CRC-4 est 0x3, ce
qui signifie que le polynôme est (1)0011. Il y a toujours
1 bit de plus dans le polynôme que dans le reste, donc
CRC-4 signifie un polynôme de 5 bits et un reste sur 4
bits.
IUT de CACHAN Les réseaux en Page 38 sur 193
H. Angelis Informatique Industrielle Version 2017

La taille du polynôme d'un CRC est un paramètre important car c'est elle qui définit d'une part
la taille du reste (le CRC) mais aussi son efficacité. Le polynôme du CRC-15 du bus CAN est 0x4599 (soit
(1)100 0101 1001 1001 ou 0xC599 si on ne fait pas l'élision du bit de poids fort), il donne un reste sur
15 bits. Les spécifications du bus CAN annonce que ce CRC détecte :
• 5 erreurs placées aléatoirement dans le message (distance de Hamming = 6)
• Une suite de moins de 15 erreurs consécutives
• Tous les nombres impairs d'erreurs
L'erreur rémanente (restant non détectée après passage du CRC) est estimée à :
𝐸𝑟𝑟 = 𝐵𝐸𝑅 ∗ 4,7 ∙ 10−11
Sachant que BER (Bit Error Rate ou taux d'erreur/bit) est globalement estimé à 10-6, on arrive
à un taux d'erreur rémanente de 4,7.10-17 soit pour un bus utilisé en permanence à 1Mbit/s une durée
avant passage d'une erreur non détectée (statistiquement) de plus de 674 ans…
Un autre paramètre important pour l'efficacité d'un CRC est la composition du polynôme :
Pour pouvoir détecter une erreur sur 1 bit, il faut et il suffit que l'erreur ne soit pas un multiple
du polynôme, ce qui se traduit par la nécessité d'avoir au moins 2 bits à '1' dans le polynôme (essayez,
vous verrez qu'il est impossible en multipliant un nombre avec 2 bits à '1' d'obtenir un nombre avec
un seul bit à '1').
Cela se démontre par la formule suivante : si T est le message normal à transmettre et E l'erreur
commise durant la transmission, le message reçu est TE ( est un OUEX). Pour que l'erreur soit
détectée, il faut que EG soit non nul, donc que E ne soit pas un multiple de G.
Pour pouvoir détecter deux erreurs isolées, il faut et il suffit d'avoir un polynôme qui ne soit
pas composé de deux bits à 1 séparés par des zéros (par exemple 101 ou 1001). La présence d'au moins
3 bits à '1' est une nécessité (démonstration difficile).
Pour pouvoir détecter un nombre impair de bits erronés, il faut et il suffit d'avoir un nombre
pair de bit à '1' dans le polynôme (la démonstration est un peu difficile, mais elle repose sur le fait que
faire un OUEX entre une valeur ayant un nombre pair de bits à '1' et une autre ayant un nombre impair
de bits à '1' donnera toujours un nombre différent de 0).
Enfin la détection d'une salve d'erreur (série de bits faux se suivant) dont la taille est inférieure
à celle du polynôme est toujours possible si le bit de poids faible du polynôme est non nul (là aussi la
démonstration est compliquée).
Il ressort de cela que les CRC assurent la détection d'au moins 2 erreurs, mais il ne permet pas
de les corriger, que toutes les salves d'erreurs inférieures à la taille du CRC sont détectables et que les
nombres impairs d'erreurs sont toujours identifiables. Ensuite, c'est le rôle des mathématiciens de
calculer les meilleurs polynômes de CRC.
Par exemple, le polynôme de CRC-32 retenu pour le réseau Ethernet est 0x04C11DB7. Des
cohortes de mathématiciens ont démontré que sa distance de Hamming est de 4 (pour une trame
Ethernet). Par contre avec les codes 0x1EDC6F41 (dit code Castagnoli) ou 0x741B8CD7 (dit code
Koopman), la distance de Hamming monte à 6 pour la même trame Ethernet. Un code beaucoup plus
efficace, mais on ne va pas changer toutes les cartes Ethernet de la planète pour ça…
Reste un dernier point, la représentation du polynôme. On l'a vu un polynôme de CRC
commence et finit par un bit à '1'. On a inventé une représentation du polynôme appelée normale
dans laquelle on fait l'élision du bit de poids fort (déjà vu), mais les mathématiciens préfèrent la
représentation de Koopmann (ou réciproque inverse) dans laquelle le poids faible est masqué. Par
exemple le CRC-4 utilise le polynôme binaire (10011)2, noté 0x3 (soit (1)0011) en représentation
normale et 0x9 (soit 1001(1)) en représentation Koopman.
Page 39 sur 193 Les réseaux IUT de CACHAN
Version 2017 en Informatique Industrielle H. Angelis

Réalisation d'un CRC


Si le calcul du CRC est un peu compliqué, sa réalisation selon le modèle mathématique
nécessite une fonction de calcul extrêmement compliquée, incompatible avec des prix acceptables par
des clients. On n'utilise donc pas de division pour réaliser le calcul du CRC, mais un outil beaucoup plus
simple : un registre à décalage avec des OU exclusifs en rebouclage.
Prenons l'exemple d'un caractère ASCII qui serait transmis en ISDN (car le polynôme utilisé par
la norme ISDN est le plus simple des CRC-8). Le polynôme utilisé est 0x07 (représentation normale) ou
0x23 (représentation Koopman), soit (100000111)2.
On va créer un registre à décalage avec un rebouclage du bit de poids fort (n°8) sur les bits à
'1' du polynôme (les bits n°2, 1 et 0), via un OUEX.

On souhaite émettre le caractère 's' dont le code ASCII est 0x73 (01110011)2. On démarre avec
le registre vide (c'est la valeur d'initialisation définie par la norme) et on entre les bits les uns à la suite
des autres dans le registre (dans l'ordre Big Endian, comme décrit par la norme).
Tant que le bit 8 du registre est à '0', il ne
se passe rien de spécial (0X=X). Lorsque tous les
bits du message ont été entrés, on rajoute 8 bits
à '0' en effectuant 8 fois le décalage.
Dans l'exemple suivant, la sortie des OUEX est écrite au-dessus des portes pour simplifier la
lecture. C'est la valeur qui sera présente dans le registre suivant après le prochain coup d'horloge.
IUT de CACHAN Les réseaux en Page 40 sur 193
H. Angelis Informatique Industrielle Version 2017

Normalisation des CRC


Lorsqu'on demande à Google® le catalogue des CRC, on trouve par exemple :
CRC-32
width=32, poly=0x04c11db7, init=0xffffffff, refin=true, refout=true, xorout=0xffffffff,
check=0xcbf43926, name="CRC-32"
ou
CRC-8
width=8, poly=0x07, init=0x00, refin=false, refout=false, xorout=0x00, check=0xf4,
name="CRC-8"

Autant certains paramètres sont désormais faciles à comprendre comme width, poly ou name.
D'autres sont plus complexes :
• Init contient la valeur du registre à décalage au début de l'opération de calcul.
• Refin indique si il y a réflexion de l'ordre des bits (d'où le Ref pour réflexion) à l'entrée
du registre. Le paramètre est TRUE si on passe le message en Little Endian et FALSE si
le message est envoyé en Big Endian.
• Refout indique si le résultat de l'opération est réfléchi en sortie du registre (TRUE) ou
si il est laissé dans le même sens (FALSE).
• Xorout indique par quoi le CRC final (celui obtenu à la fin des décalages) est associé
dans un OU Exclusif "final" (que je n'ai pas représenté dans l'exemple précédent).
• Check indique le résultat obtenu lorsque le message à transmettre est la chaine
"123456789" (composée des 9 caractères ASCII associés aux chiffres).

Codes correcteurs d'erreurs


Le CRC est un outil très efficace pour la détection d'erreurs, mais bien qu'en général on ne
prenne pas le risque de corriger (et de créer une nouvelle erreur, voir le chapitre sur la parité), il arrive
que certaine fois la correction soit préférable. Par exemple lorsqu'on émet un flux (d'images ou de son)
à un ensemble de personnes (on appelle ça du Multicast).
Si l'un des utilisateurs reçoit une image erroné, il n'est pas envisageable de renvoyer à tout le
monde cette image (sinon, celui qui a une liaison qui ne marche pas bien empêche tout le monde de
regarder le flux) et encore moins de ne la renvoyer que vers l'utilisateur en erreur, faute de quoi ce
n'est plus du multicast.
On cherche alors potentiellement la possibilité de corriger des erreurs de transmission. On a
déjà vu deux méthodes de correction avec la répétition de code (quand 1 bit est recopié 3 fois), ou
avec les parités longitudinales et transverses.
Il est donc tout à fait possible de corriger une erreur dans un message, mais on a surtout vu
que ces méthodes peu compliquées sont souvent assez gourmande en ressources. Il en existe d'autres,
potentiellement un peu plus compliquées, mais nettement plus efficaces.
Page 41 sur 193 Les réseaux IUT de CACHAN
Version 2017 en Informatique Industrielle H. Angelis

Les codes de Hamming


Les codes de Hamming sont utilisés pour contrôler et corriger les erreurs de lecture des cellules
de Flash NAND. Le principe de ces codes repose l'établissement et le codage de toutes les erreurs
potentielles dans un message.
Imaginons un message M sur n bits, il va falloir lui ajouter k bits de contrôle pour pouvoir lister
toutes les erreurs possibles plus le cas d'absence d'erreurs. Tous ces cas d'erreurs doivent être décrits
par les possibilités offertes par les k bits de contrôle, c'est-à-dire 2k. Ce qui se traduit par l'inéquation :
2𝑘 ≥ 𝑛 + 𝑘 + 1
Autrement dit, avec k bits de contrôle on est capable d'associer au moins (≥) un code unique
(2k) à toutes les erreurs pouvant se produire sur l'ensemble des bits du message (n) et des bits de
contrôle (k), et prendre en compte l'absence d'erreur (+1).
Si par exemple n = 4 alors par itération on trouve k = 3 (on commence par se dire : 2𝑘 ≥ 4 + 1
donc 2𝑘 ≥ 5 d'où k = 3 car 23 = 8 ≥ 5, on intègre le nombre que l'on vient de trouver à la partie de
droite de l'équation et on cherche la nouvelle valeur de k satisfaisant 2𝑘 ≥ 4 + 3 + 1 on trouve k=3).
Si on prend n = 5, on arrive à k = 4 (24 ≥ 5 + 4 + 1), etc.
On sait maintenant que pour un message de 4 bits, on a besoin de 3 bits de contrôle et que
par voie de conséquence on enverra un bloc (B) de 7 bits (les 4 bits du message M et les 3 bits de
contrôle C).
On associe maintenant un code à chacun des cas d'erreur. On vient ainsi de créer la table de
décodage d'erreurs, qui sera utilisée pour vérifier le bloc sur le récepteur. On en déduit l'équation de
chacun des 3 bits d'erreur :
e2 e1 e0 Erreur associée
0 0 0 Pas d'erreur
0 0 1 Erreur sur B0 𝑒0 = 𝐵0 ⊕ 𝐵2 ⊕ 𝐵4 ⊕ 𝐵6
0 1 0 Erreur sur B1 𝑒1 = 𝐵1 ⊕ 𝐵2 ⊕ 𝐵5 ⊕ 𝐵6
𝑒2 = 𝐵3 ⊕ 𝐵4 ⊕ 𝐵5 ⊕ 𝐵6
0 1 1 Erreur sur B2
1 0 0 Erreur sur B3
On utilise des OU exclusif car il ne peut pas il y avoir
1 0 1 Erreur sur B4 à la fois une erreur sur deux des bits du bloc.
1 1 0 Erreur sur B5
1 1 1 Erreur sur B6
De ces équations, on isole 3 bits du bloc qui serviront de bits de contrôle. Le plus simple est
d'isoler les bits qui n'apparaissent qu'une seule fois dans les équations, c'est-à-dire B0, B1 et B3. Pour
pouvoir les isoler, on va simplement se placer dans le cas définit comme sans erreur (e 2 = e1 = e0 = 0).
On arrive donc à l'expression :
0 = 𝐵0 ⊕ 𝐵2 ⊕ 𝐵4 ⊕ 𝐵6 ⟺ 𝐵0 = 𝐵2 ⊕ 𝐵4 ⊕ 𝐵6
0 = 𝐵1 ⊕ 𝐵2 ⊕ 𝐵5 ⊕ 𝐵6 ⟺ 𝐵1 = 𝐵2 ⊕ 𝐵5 ⊕ 𝐵6
0 = 𝐵3 ⊕ 𝐵4 ⊕ 𝐵5 ⊕ 𝐵6 ⟺ 𝐵3 = 𝐵4 ⊕ 𝐵5 ⊕ 𝐵6
Il ne reste plus qu'à associer à chacun des bits de B, un bit de M (le message) ou de C (le
contrôle). On a déjà isolé 3 bits pour le contrôle donc B0 = C0, B1 = C1 et B3 = C2, il reste 4 bits, ce sont
ceux du message, donc on associe B2 = M0, B4 = M1, B5 = M2 et B6 = M3.
On arrive alors au tableau de codage des bits de contrôle :
Bloc B6 B5 B4 B3 B2 B1 B0 𝐶0 = 𝑀0 ⊕ 𝑀1 ⊕ 𝑀3
Message M3 M2 M1 M0 𝐶1 = 𝑀0 ⊕ 𝑀2 ⊕ 𝑀3
Contrôle C2 C1 C0 𝐶2 = 𝑀1 ⊕ 𝑀2 ⊕ 𝑀3
IUT de CACHAN Les réseaux en Page 42 sur 193
H. Angelis Informatique Industrielle Version 2017

Appliquons avec M=0xb (ou M3 = 1, M2 = 0, M1 = 1 et M0 = 1). On calcule les bits de contrôle :


𝐶0 = 𝑀0 ⊕ 𝑀1 ⊕ 𝑀3 = 1 ⊕ 1 ⊕ 1 = 1
𝐶1 = 𝑀0 ⊕ 𝑀2 ⊕ 𝑀3 = 1 ⊕ 0 ⊕ 1 = 0
𝐶2 = 𝑀1 ⊕ 𝑀2 ⊕ 𝑀3 = 0 ⊕ 1 ⊕ 1 = 0
Le bloc envoyé est donc :
Bloc B6 B5 B4 B3 B2 B1 B0
Message M3 M2 M1 M0
Contrôle C2 C1 C0
1 0 1 0 1 0 1
B = (1010101)2 = 0x55
Le récepteur teste le message reçu :
𝑒0 = 𝐵0 ⊕ 𝐵2 ⊕ 𝐵4 ⊕ 𝐵6 = 1 ⊕ 1 ⊕ 1 ⊕ 1 = 0
𝑒1 = 𝐵1 ⊕ 𝐵2 ⊕ 𝐵5 ⊕ 𝐵6 = 0 ⊕ 1 ⊕ 0 ⊕ 1 = 0
𝑒2 = 𝐵3 ⊕ 𝐵4 ⊕ 𝐵5 ⊕ 𝐵6 = 0 ⊕ 1 ⊕ 0 ⊕ 1 = 0
Le code est 000 ce qui correspond à : "Pas d'erreur".
Imaginons une erreur dans la transmission avec la réception du code 0x57 ou B = (1010111)2,
ce qui se traduit par B6 = 1, B5 = 0, B4 = 1, B3 = 0, B2 = 1, B1 = 1, B0 = 1,
𝑒0 = 𝐵0 ⊕ 𝐵2 ⊕ 𝐵4 ⊕ 𝐵6 = 1 ⊕ 1 ⊕ 1 ⊕ 1 = 0
𝑒1 = 𝐵1 ⊕ 𝐵2 ⊕ 𝐵5 ⊕ 𝐵6 = 1 ⊕ 1 ⊕ 0 ⊕ 1 = 1
𝑒2 = 𝐵3 ⊕ 𝐵4 ⊕ 𝐵5 ⊕ 𝐵6 = 0 ⊕ 1 ⊕ 0 ⊕ 1 = 0
Le code d'erreur obtenu est 010 ce qui correspond à : "Erreur sur B 1".
Le message sans erreur est donc B1 = 0, ou B= 0x55.
On peut démontrer que le code de Hamming (7,4) a une distance de Hamming de 3, d'une part
grâce à ses résultats de détection et de correction, mais aussi par calcul.
La distance de Hamming se calcule par le minimum du poids des codages. Le poids est le
nombre d'éléments à '1' dans un code contenant au moins un '1'. Reprenons nos codes :
Code Parité Hamming (7,4)
décimal binaire code poids code poids
0 0000 00000 0000000
1 0001 00011 2 0000111 3
2 0010 00101 2 0011001 3
3 0011 00110 2 0011110 4
4 0100 01001 2 0101010 3
5 0101 01010 2 0101101 4
6 0110 01100 2 0110011 4
7 0111 01111 4 0110100 3
8 1000 10001 2 1001011 4
9 1001 10010 2 1001100 3
10 1010 10100 2 1010010 3
11 1011 10111 4 1010101 4
12 1100 11000 2 1100001 3
13 1101 11011 4 1100110 4
14 1110 11101 4 1111000 4
15 1111 11110 4 1111111 7
dH = 2 dH = 3

Le code de Hamming (7,4) peut donc détecter 2 erreurs et en corriger 1, mais son rendement
4
de codage ηc = 7 = 57% est assez mauvais… Par contre si maintenant on travaille sur des octets, avec
la même capacité de détection, on va avoir 4 bits de contrôle (24 ≥ 8 + 4 + 1) soit un rendement ηc =
8
12
= 67% ce qui est beaucoup plus raisonnable.
Page 43 sur 193 Les réseaux IUT de CACHAN
Version 2017 en Informatique Industrielle H. Angelis

Autres codes correcteurs


Il existe d'autres codes détecteurs d'erreurs bien plus compliqués (BCH, Reed-Solomon,
Convolutif, etc.) utilisés dans les transmissions pour permettre une correction sans réémission. Ces
codes font appel à des compétences mathématiques que vous apprendrez plus tard. On ne va faire ici
qu'un rapide survol de ces techniques que l'on englobe sous le nom de FEC (Forward Error Correction).

Reed-Solomon
Les codes de Reed-Solomon sont utilisés pour protéger les signaux vidéo de la TNT (DVB en
Anglais), les transmissions de l'ADSL (1, 2 et 2+) et les CDs audio. Ils permettent de corriger un grand
nombre d'erreurs, définies par les formules :
𝑛 = 𝑘 + 2𝑡
n = taille du bloc transmis
k = charge utile (données du message)
t = nombre d'erreurs corrigeables

D'où sa dénomination de RS (n, k).


Le principe des codes de Reed-Solomon consiste à ajouter aux données des mots de contrôles
de façon à rendre l'ensemble divisible par un polynôme générateur (g). Le récepteur utilise alors un
ensemble de fonctions mathématiques complexes pour :
• Identifier le nombre d'erreurs (méthode de Peterson).
• Localiser la position des erreurs (méthode de recherche de R. T. Chien).
• Modifier les valeurs des octets en erreur (algorithme de Forney).
Ou plus simplement avec l'algorithme de décodage de Berlekamp-Massey.
Je ne donne pas plus de détails car d'une part cette théorie est assez complexe, trop en tout
cas pour un étudiant de DUT, et d'autre part elle ne s'impose pas, le but de ce polycopié n'étant pas
de présenter de façon exhaustive l'ensemble des techniques de transmission, mais bien de présenter
quelques réseaux (qui n'utilisent pas les algorithmes de Reed-Solomon, soit dit en passant).

Les codes BCH


Les codes de Reed-Solomon sont un sous ensemble des codes BCH (B, C et H étant les initiales
de ses 3 découvreurs : Bose, Chaudhuri, Hocquenghem). On retrouve ce code dans de nombreux
systèmes (en particulier dans les transmissions par satellites). Là aussi la complexité des algorithmes
de décodage est assez grande, mais les capacités de détection et de correction sont améliorées en
particulier pour les erreurs aléatoires.

Les codes convolutifs


Les codes convolutifs sont très utilisés dans les transmissions (en particulier pour la téléphonie
mobile). Ils reposent sur l'idée de coder l'information comme une longue séquence de données qui se
suivent pour retrouver le message d'origine (qui lui aussi est une série plus ou moins longue de
données).
On ne traite donc plus l'information reçue comme un élément instantané, indépendant des
états précédents et suivants, mais comme une série dont l'état futur est lié aux états précédents. On
peut donc corriger "à la volée" les données au cours de leur réception. Par contre, on augmente
singulièrement le nombre de bits de contrôle, donc un rendement plutôt médiocre.
IUT de CACHAN Les réseaux en Page 44 sur 193
H. Angelis Informatique Industrielle Version 2017

Multiplexage
Lorsqu'on s'intéresse au sens du mot réseau, la définition du dictionnaire est : "Ensemble des
moyens matériels (…) mis en œuvre pour assurer les communications entre ordinateurs (…)". Il s'agit
donc de connecter plusieurs éléments les uns aux autres.
En électronique ce que l'on qualifie de réseau, c'est le partage d'une connexion entre plusieurs
objets, c'est-à-dire le passage de plusieurs informations à destination ou originaires de nœuds
différents au sein d'une même connexion et cela sans perte d'information (ou alors très rarement). Or
on sait (ou au pire on peut l'expérimenter) que lorsque plusieurs sources émettent en même temps
dans un même canal, l'information d'une source est brouillée par l'émission des autres.
On en déduit cette règle : "A une fréquence et à un instant donné, il ne peut il y avoir plus
d'une source". Le fait de partager le canal en fréquence ou en temps est une technique appelée
multiplexage.

Historiquement, le premier type de multiplexage utilisé fut le FDMA (Frequency Division


Multiple Access), il consiste à placer les sources à des fréquences différentes par modulations
(d'amplitude ou angulaires). Ce choix technologique venait du fait que l'électronique était
essentiellement analogique et que générer des fréquences différentes était relativement simple, de
plus on arrivait ainsi à placer le signal dans des bandes de transmission où il n'était pas trop atténué.
En FDMA, le débit de la liaison est lié à la bande passante accordée pour chaque canal (voir le théorème
de Shannon-Hartley)
Avec le développement de l'électronique numérique on est passé à un multiplexage temporel,
c'est-à-dire qu'au lieu de moduler les signaux à transmettre à des fréquences différentes, on les
transmettait en bande de base (sans modulation) en commutant d'une source à une autre en
accordant une "tranche temporelle" (time slot) à chaque communication. La principale application de
cette technologie était la téléphonie (fixe). Le débit que chaque communication est alors liée au débit
du canal divisé par le nombre de time slot.
Avec le développement de la téléphonie, on a vu apparaître la téléphonie mobile. Parmi les
premiers systèmes de téléphonie mobile, il y a eu le système Radiocom 2000 où à une fréquence
donnée, il n'y avait qu'un seul client à la fois (FDMA), mais du fait du faible nombre de connexions
possibles, le système n'était pas généralisable et son coût était prohibitif.
Le développement de la téléphonie mobile a nécessité d'une part de s'affranchir des lignes
donc de déplacer l'information depuis la bande de base vers la bande décalée (par modulation, comme
pour Radiocom 2000), mais aussi de permettre, dans chacune de ces bandes de fréquence, d'avoir
plusieurs sources.
Page 45 sur 193 Les réseaux IUT de CACHAN
Version 2017 en Informatique Industrielle H. Angelis

Le multiplexage TDMA (Time Division Multiple Access) permet une modulation à la fois
fréquentielle et temporelle et augmente ainsi le nombre de communications simultanées en
partageant un canal fréquentiel. Toutefois le débit reste faible puisqu'il continue à être partagé entre
les utilisateurs.
Pour pouvoir obtenir plus de débit sans pouvoir ajouter de nouvelles bandes fréquentielles, il
a fallu trouver une méthode pour ne pas avoir à respecter la règle qui veut qu'à un instant donné et à
une fréquence donnée, on ne puisse avoir qu'un seul signal transmis. C'est-à-dire être capable de
mélanger plusieurs signaux (plutôt facile) et surtout les récupérer (et là c'est difficile).
Le principe utilisé pour isoler un message d'un autre repose sur l'utilisation de codes
"orthogonaux" dont la somme du produit de chacun des termes des 2 codes donne 0, un peu comme
la projection de l'axe X sur l'axe Y donne 0 lorsque le repère est orthogonal.
Par exemple, si on utilise le code {1, -1, 1, -1} et le code {1, 1, -1, -1} la somme du produit de
chacun des termes donne (1 x 1) + (1 x -1) + (1 x -1) + (-1 x -1) = 1 + -1 + -1 + 1 = 0.
Donc si on effectue la multiplication de chaque bit à transmettre (1 ou -1) par un des deux
codes, on trouve :

C'est le principe du CDMA (Code Division Multiple Access) qui permet un découpage de la
connexion en bande de fréquences et dans chacune de ces bandes de mélanger plusieurs signaux (qui
eux même peuvent être obtenus par un multiplexage temporel).
Toutefois, ce système implique que les codes doivent venir moduler chaque bit à transmettre,
et que le débit obtenu est lié à la bande passante du canal (Shannon-Hartley) divisée par la longueur
du code. Or plus on souhaitera mélanger un grand nombre de signaux, plus les codes utilisés devront
être longs, d'où obligatoirement une réduction du débit des données…
Dans le domaine des réseaux, on utilise pour l'instant très peu les procéder de codage CDMA
(peut être plus pour très longtemps). On se contente d'un multiplexage des données par division du
temps (TDM pour Time Division Multiplexing).
IUT de CACHAN Les réseaux en Page 46 sur 193
H. Angelis Informatique Industrielle Version 2017

Vocabulaire
Ce chapitre est un petit lexique de termes dont l'usage est courant dans les réseaux.
• NOEUDS : Point de connexion, créateur ou consommateur de données. Souvent on associe la
notion de nœuds à la notion d'adresse.
• FULL DUPLEX : Méthode de transmission permettant un dialogue bidirectionnel simultané (pas
forcément sur la même ligne).
• HALF DUPLEX : Méthode de transmission permettant un dialogue bidirectionnel alterné (l'un après
l'autre).
• SIMPLEX : Méthode de transmission unidirectionnelle (toujours le même nœud qui parle).
• UART : (Transmetteur Récepteur Asynchrone Universel) composant électronique permettant de
transmettre (sérialisation) et de recevoir (resynchronisation) les données sur une liaison
asynchrone.
• BAUD : unité de transmission représentant le nombre de motifs (niveaux de tension) transmis en
une seconde. Dans une transmission binaire le débit en bit/s est égal au débit en baud. Dans un
code Manchester, le débit en bit/s est la moitié du débit en baud.
• INTERCONNEXION : Pour connecter des machines entre elles, il existe 2 types de connexions les
liaisons point à point et les liaisons réparties.

• BIG ENDIAN : Le bit de poids fort est transmis en premier, le bit de poids faible à la fin.
• LITTLE ENDIAN : Le bit de poids faible est transmis en premier, le bit de poids fort à la fin.
• DTE : Digital Terminal Equipment, il s'agit d'un équipement de fin de ligne (c'est à dire producteur
ou consommateur de données), comme par exemple un ordinateur.
• DCE : Digital Communication Equipment, c'est un élément utilisé dans le transfert de l'information,
qui est donc susceptible d'en modifier la forme mais pas le contenu, par exemple un MODEM.
• LE TEMPS REEL : La notion de temps réel, c'est la capacité d'un système à répondre en un temps
maximum.
• RESEAU DETERMINISTE : Un réseau est déterministe lorsque l'ordre de prise de parole des nœuds
est déterminé. On l'oppose en général aux réseaux à accès aléatoire.
• WATCHDOG : Dispositif totalement indépendant et généralement implanté directement dans le
silicium des composants électroniques, il permet de redémarrer automatiquement la machine en
cas de défaillance logicielle ou matérielle.
Page 47 sur 193 Les réseaux IUT de CACHAN
Version 2017 en Informatique Industrielle H. Angelis

Normalisation OSI
Dans les années 70, l'ISO (International Organization for Standardization ou Organisation
Internationale de Normalisation) décide de créer un standard ouvert (évolutif et indépendant des
constructeurs) de communication entre ordinateurs en décrivant l'ensemble des processus
nécessaires à la communication. A l'époque 3 normes cohabitent : la "Distributed System Architecture"
de CII Honeywell Bull, Decnet de DEC et "System Network Architecture" d'IBM.
Cette tâche est confiée par l'ISO au français Hubert
Zimmerman (1941 - 2012) assisté de l'étasunien Charles Bachman
(1924 - …), ils vont décrire la communication entre machines comme
un ensemble de 7 couches empilées qui communiquent entre elles
par des services, via des interfaces (matérielles ou logicielles) et
utilisant chacune un protocole de communication.
Cette norme est entrée en fonction en 1978, elle est Hubert Charles
volontairement abstraite pour pouvoir s'appliquer à tous les réseaux. Zimmerman Bachman

Les 7 couches de la norme OSI


La norme OSI décrit 7 couches au maximum pour établir une communication entre 2 nœuds.
Une couche assure une base stable, elle permet une communication correcte entre le niveau
inférieur et le niveau supérieur (un peu comme les briques dans un mur, où il faut pouvoir s'appuyer
sur les briques déjà posées). On trouve alors comme règle de dialogue, la possibilité de communiquer
avec les niveaux adjacents (dialogue vertical). On nomme cette fonction le service.
L'autre notion est liée à l'utilisation de la couche, c'est à dire la cohérence avec la couche de
même niveau de la machine avec laquelle on communique. Pour reprendre nos analogies maçonnes,
c'est la cohérence entre 2 briques côte à côte sur une même rangée. Si l'une est plus grande que l'autre,
on risque des surprises. On trouve alors comme règle de dialogue la possibilité de communiquer avec
une couche de même niveau (dialogue horizontal). On nomme cette fonction le protocole.

Dans la pratique, tous les réseaux n'utilisent pas les 7 couches de la norme OSI (ce n'est
d'ailleurs pas demandé par la norme), de la même manière, on utilise parfois la notion de services
réseaux, essentiellement dans le domaine de l'informatique. Dans le domaine de l'informatique
industrielle, cette notion de service "disparait", on parle plutôt de bibliothèques (library) ou de piles
(stack).
IUT de CACHAN Les réseaux en Page 48 sur 193
H. Angelis Informatique Industrielle Version 2017

La couche physique
C'est la première couche OSI (couche 1), en anglais "Physical Layer" ou "Phy Layer". La couche
physique représente le plus bas niveau de spécification, elle définit les spécifications électriques et
mécaniques d'un réseau, tout ce qui est mesurable (débit, connecteur, niveau de tension, câble, la
topologie, etc.). Au niveau de la couche physique la notion de message n'a pas de sens.

La couche de liaison
C'est la deuxième couche OSI (couche 2), en anglais "Data Link Layer" ou "Link Layer". La
couche de liaison permet de gérer l'accès à la ligne et le transfert d'information entre 2 machines
physiquement sur le même réseau. Elle gère l'adressage et définit le formalisme de la trame pour
l'adapter au support physique. Au niveau de la couche de liaison, le message est une trame composée
de bits.

La couche réseau
C'est la troisième couche OSI (couche 3), en anglais "Network Layer". La couche de réseau
permet de réaliser l'interconnexion des réseaux entre eux. Elle permet aux paquets de trouver un
chemin, depuis leur source, en passant de réseau en réseau, leur permettant de rejoindre leur cible.
Au niveau de la couche réseau, le message est un paquet (ou un datagramme).

La couche de transport
C'est la quatrième couche OSI (couche 4), en anglais "Transport Layer". La couche de transport
est utilisée pour contrôler le flux des données dans un réseau. Elle gère le contrôle des erreurs de
transmission et la fiabilité de la liaison. Au niveau de la couche de transport, le message est un segment
(décomposable en paquets)

La couche de session
C'est la cinquième couche OSI (couche 5), en anglais "Session Layer". La couche de session est
sans doute la plus obscure des couches de la pile OSI. Elle a été conçue pour permettre l'ouverture et
la fermeture d'une session à distance, elle n'est donc quasiment pas utilisée dans les usages habituels
d'internet. Elle permet toutefois l'authentification de clients auprès d'un serveur.

La couche de présentation
C'est la sixième couche OSI (couche 6), en anglais "Presentation Layer". La couche de
présentation gère la présentation des données de façon syntaxique : une chaîne peut être traitée sous
la forme d'une information de taille suivie du message (représentation de Pascal), ou comme une suite
de caractères terminés par un caractère de fin de chaine (représentation C). Mais elle gère aussi le
codage des caractères (par exemple codage ASCII ou UTF-8). Elle permet en outre le cryptage et le
décryptage de l'information.

La couche d'application
C'est la septième et dernière couche OSI (couche 7), en anglais "Application Layer". La couche
d'application englobe l'intégralité des applications que va utiliser le réseau. C'est en général cette
couche que l'utilisateur aura comme interface. On distingue 2 types d'applications : les applications en
mode connectées (où la connexion doit être maintenue) et les applications en mode non connectées
(où la connexion est intermittente, ce qui est généralement le cas d'internet).
Page 49 sur 193 Les réseaux IUT de CACHAN
Version 2017 en Informatique Industrielle H. Angelis

La norme OSI et les réseaux


La norme OSI a été faite pour décrire toutes les fonctions de dialogue entre deux ordinateurs,
mais dans le cas de l'informatique industrielle, il est rare de dialoguer entre ordinateur. L'essentiel des
réseaux utilisés dans notre domaine d'étude sont généralement décrit par seulement 2 couches : la
couche physique et la couche de liaison.
Ces deux couches étant souvent totalement imbriquées, elles
ne sont quasiment jamais décrites séparément. Par exemple quand on
parle du bus CAN, d'Ethernet ou du bus SPI, la norme de ce réseau
décrit à la fois de la couche physique et la couche de liaison.
Le seul "réseau" qui utilise (toujours pour notre domaine) plus
de 2 couches est l'internet, mais le principal défaut d'internet est de
ne pas être un réseau, mais des réseaux raccordés les uns aux autres
grâce à des protocoles supplémentaires.
Dans le monde de l'électronique embarquée, on parle généralement de couches basses pour
les couches 1 à 2 et couches hautes pour le reste. Dans le monde de l'informatique, on appelle les
couches 1 à 3, les couches matérielles et les couche 4 à 7 les couches de communication.

L'encapsulation des données


Le phénomène de couches n'est pas seulement théorique, il a une représentation au niveau
physique, on appelle ce phénomène l'encapsulation. L'encapsulation est l'ajout, couche par couche,
de données en plus de celles fournies par la couche supérieure pour autoriser un décodage correct de
l'information.
IUT de CACHAN Les réseaux en Page 50 sur 193
H. Angelis Informatique Industrielle Version 2017

La couche physique
La couche physique permet de définir l'ensemble des caractéristiques physiques d'un réseau.
Dans ce chapitre on s’intéresse à un petit bout de cette couche, le câblage, c'est-à-dire, d’une part les
conducteurs de l’information (les media), mais aussi la façon dont sont raccordés entre eux les nœuds
du réseau (la topologie).

La topologie d'un réseau


La topologie d'un réseau, c'est la façon d'organiser le raccordement des machines. Il existe
deux grandes familles de topologies : les topologies simples, qui sont les topologies des réseaux isolés
ou des réseaux de fin de structure, et les topologies composées qui décrivent les structures réseau de
grande taille ou l'interconnexion des réseaux entre eux.

L'anneau
C’est une topologie simple où les nœuds sont placés pour former une boucle fermée, réalisée
avec des liaisons point à point.

Sur ce type de structure, chaque machine est un élément de la transmission, l’arrêt de l'une
d'entre elle provoque l’arrêt du réseau. Pour simplifier l'insertion ou le retrait d'une machine ou pour
éliminer les risques de panne, on ajoute généralement un dispositif de connexion qui permet de court-
circuiter une machine qui n’est plus fonctionnelle.

L'étoile
C’est une topologie simple où les nœuds sont
répartis, en étoile, autour d'un concentrateur (qui peut
être un nœud), et reliés avec cette dernière par une
liaison point à point.
Dans cette topologie, l'installation ou le retrait
d'une machine (exception faite du concentrateur) peut se faire sans condition spéciale. Seule une
défaillance du concentrateur peut causer une défaillance du réseau.

Le bus
C’est encore une topologie simple où les machines sont connectées entre elles par une liaison
répartie. L’avantage de cette topologie, c’est sa possibilité de diffuser l’information (multicast) et
réciproquement son défaut est son manque de confidentialité…

Dans cette topologie l'effet sur la communication d'un ajout ou du retrait d'un nœud dépend
de la connectique utilisée.
Page 51 sur 193 Les réseaux IUT de CACHAN
Version 2017 en Informatique Industrielle H. Angelis

En plus de ces topologies élémentaires qui correspondent à des structures de réseaux


indépendants, on a décrit des topologies pour l'interconnexion des réseaux entre eux.

Le Back Bone
Traduit en Français, back bone signifie colonne vertébrale. A l'image des côtes qui sont reliées
à la colonne vertébrale, dans la topologie back bone, tous les réseaux s'interconnectent sur cette ligne.
C'est une liaison répartie sur laquelle on peut brancher des réseaux de toutes topologies.

Back bone Arborescence

L'arborescence
Dans la topologie arborescence, une structure en étoile se répète sur plusieurs niveaux (on en
a représenté que 3 dans le diagramme). Cette structure est exclusivement basée sur une topologie
étoile. Chaque étoile étant connectée par une liaison point à point vers le concentrateur du niveau
supérieur.
Les concentrateurs sont des éléments de l'infrastructure du réseau (au même titre que les
câbles). Ils sont caractérisés par leur couche (parfois appelées, à tort, classe) définie sur la base des
adresses qu'ils comprennent selon le modèle OSI. On trouve les hubs (concentrateurs de couche 1),
les switchs (concentrateurs de couche 2) et les routeurs (concentrateurs de couche 3).

Les hubs
Les hubs sont des concentrateurs élémentaires. L'information qu'ils reçoivent, ils la diffusent
sur tous leurs ports sans pouvoir filtrer ou aiguiller les données. D'un point de vue électronique, ils se
comportent comme des nœuds (comme si tous les fils étaient reliés entre eux). Les premiers hubs sont
apparus avec le développement d'Ethernet 10 BASE T.
Comme ils diffusent leurs informations, ils nuisent à la confidentialité des données et ne
limitent pas les risques de collision (voir Ethernet), c'est pourquoi ils ont quasi totalement disparu du
monde des réseaux au profit des switchs.

Les switchs
Les switchs sont des concentrateurs intelligents (donc souvent des nœuds) capables de
connaître et d'identifier les machines auxquels ils sont reliés par leurs adresses de couche 2 (adresses
MAC ou adresse de la couche de liaison).
Dans un switch, une information qui arrive sur une voie n'est renvoyée que sur la voie du nœud
destinataire, ce qui assure une certaine confidentialité aux données. De la même manière les switchs
sont capables de stocker les messages en cas d'occupation de la voie sortante (ce qui limite
grandement le risque de collision).
IUT de CACHAN Les réseaux en Page 52 sur 193
H. Angelis Informatique Industrielle Version 2017

Il existe de nombreuses familles de switchs. Les switchs hauts de gamme sont capables de
gérer en parallèle plusieurs communications simultanées, ils sont administrables et peuvent jouer le
rôle d'autorité de contrôle d'un réseau (en n'autorisant le dialogue qu'aux machines identifiées). Les
switchs premier prix se contentent d'aiguiller les données et d'éviter les collisions.

Les routeurs
On les étudiera dans le cours sur le protocole IP, ils aiguillent les données en fonction des
adresses de couche 3 (réseau). Ce sont des nœuds qui communiquent entre eux pour trouver les routes
où envoyer les données.

Les premiers switchs / routeurs

Le réseau maillé
Le principe des topologies de réseaux maillés (Mesh en anglais) est de permettre une
redondance de chemin réseaux. Il n'y a donc pas de règles précise de raccordement (même si on
n'utilise que des liaisons point à point), mais on peut voir cette topologie comme composée d'anneaux
imbriqués.
Page 53 sur 193 Les réseaux IUT de CACHAN
Version 2017 en Informatique Industrielle H. Angelis

Le medium
Le medium (en italique, pluriel les media, sans accent et sans 's', c'est du latin, désolé) est le
lien physique entre les éléments du réseau. Il existe une grande variété de media pour une information,
par exemple, les liaisons par câble que nous verrons plus loin, mais aussi, des liaisons hertziennes,
infrarouges, ultrasons, etc.
Par exemple, le bus de terrain utilisé par EUROCOPTER pour tester les vibrations des pales de
l'hélicoptère TIGRE utilise, pour une raison évidente, une liaison hertzienne pour communiquer avec
les capteurs placés sur les pales du rotor.
Bien que le hertzien se développe très fort (Wifi, Bluetooth, Zigbee), je ne développerai ici que
les liaisons filaires. De nos jours, il ne reste plus que deux media pour ces liaisons, les paires torsadées
et les fibres optiques. Les fibres optiques étant réservées aux liaisons longues distances et la paire
torsadée à la distribution. Le câble coaxial a disparu du fait de son mauvais rapport qualité prix par
rapport à la fibre optique.

Les paires Torsadées


Les câbles en paire torsadée sont actuellement le moyen le plus simple et le moins coûteux de
distribuer des informations de façon sécurisé à haut débit et sur des distances inférieures au km (la
longueur et le débit sont lié, on le verra un peu plus loin).
Du fait de leur succès, il a fallu essayer de standardiser les câbles en paire torsadée, et là, il y a
pléthore de paramètres et de normes.

Paramètre nombre de paire


On trouve des câbles à 1, 2 ou 4 paires. Les câbles à 1 paire sont réservés aux téléphones et
aux réseaux comme le bus CAN (SATA, USB, etc.) qui sont half-duplex. Dès que l'on souhaite être en
full duplex, on utilise une deuxième paire torsadée. Les paires suivantes permettent au choix
d'alimenter le nœud (PoE), de connecter un deuxième (troisième, quatrième, etc.) nœud ou plus
simplement d'augmenter le débit en passant l'information dans plusieurs paires en même temps.

Paramètre de section de conducteur


Cette norme est plus connue sous le nom d'AWG (American Wire Gauge). Inventée en 1857
aux Etats-Unis par J. R. Brown, elle décompose en 39 diamètres différents (initialement il y en avait
moins) les câbles électriques, selon une loi mathématique :
36−𝑛
𝑑𝑛 = 0,127 × 92 39

Ce qui correspond à un pas de 1,1229322 entre diamètres de deux valeurs AWG :


𝑑𝑛−1
𝑑𝑛 =
1.229322

Dans le domaine des réseaux les conducteurs sont d'un diamètre choisi entre AWG 23 et
AWG 26, avec une forte utilisation du AWG 24 (ce qui correspond à un diamètre de 0,511 mm et une
section de 0,205 mm² par conducteur).
Comme la norme donne le diamètre des conducteurs, on a ainsi un lien direct entre la
résistance linéique et le diamètre :
𝐿 𝐿
𝑅𝑛 = 𝜌 =𝜌 2 avec 𝜌 = 1,7 × 10−8 Ω/𝑚 et L = 1
𝑆𝑛 𝑑
𝜋×( 𝑛 )
2

Il va de soi qu'il est plus simple de regarder une table (comme celle que l'on trouve sur
Wikipédia) plutôt que de refaire les calculs…
IUT de CACHAN Les réseaux en Page 54 sur 193
H. Angelis Informatique Industrielle Version 2017

Norme par fréquences


Indépendamment de ces normes généralement peu contraignantes, la vrai contrainte des
réseaux est liée au débit ou pour être plus exact à la fréquence des informations. Pour permettre de
choisir un câblage adapté, l'ISO a établi des catégories de câblage par fréquence.
Catégorie Fréquence Débit Longueur Atténuation Paradiaphonie Tp à
Domaine d'utilisation
Fr Us Maximum Ethernet maximum max à Fmax à Fmax 100m
Cat. 1 A 400 kHz
Pas de norme Câble téléphonique ?
Cat. 2 B 4 MHz
Cat. 3 C 16 MHz 10 Mb/s 100 m Ethernet (10 BASE-T) 14,4 dB 19,4 dB 500ns
Cat. 4 20 MHz 16 Mb/s 100 m Token Ring ?
Cat. 5 D 100 MHz 100 Mb/s 100 m 27,1 dB
Fast Ethernet (100 BASE-TX)
100 Mb/s 100 m 24 dB
Cat. 5e De 155 MHz 30,1 dB
1 Gb/s 100 m 1000 BASE-T
1 Gb/s 100 m 1000 BASE-T ou 1000 BASE-TX
Cat. 6 E 250 MHz 35,9 dB 33,1 dB
10 Gb/s 37 m 500ns
Cat. 6a Ea 500 MHz 10 Gb/s 55 m 10G BASE-T ≈51 dB ≈26 dB
Cat 7 F 600 MHz 10 Gb/s 100 m 54,6 dB 51,2 dB
40 Gb/s 40 m 40G BASE-T
Cat 7a Fa 1 GHz ≈65dB ≈47 dB
100 Gb/s 15 m 100G BASE-T
Cat 8.1 1,6 GHz
En cours de développement
Cat 8.2 2 GHz

Les câblages de la catégorie 3 jusqu'à la catégorie 6 utilisent des


connecteurs RJ45 ou plutôt 8P8C, pour 8 positions, 8 contacts, ce qui
signifie qu'ils disposent de 8 contacts (8P, pour 8 pins) pouvant être reliés
à 8 conducteurs (8C, pour 8 conductors). Les catégories supérieures (de 6a
à 8.2) utilisent des connecteurs non compatibles (surlignées en gris dans le
tableau). Ces catégories sont réservées à des installations de type Data
Center.
Pour pouvoir être homologué TIA/EIA (Telecommunications Industry Association / Electronic
Industry Alliance) un câblage réseau doit offrir une longueur du câblage supérieure à 100 m pour un
débit donné (les versions non homologuées sont surlignées en orange dans le tableau).
Plus globalement lorsqu'on regarde le tableau précédent, on en vient à se poser la question :
comment réussit-on à faire passer du 1Gb/s dans un câble dont la fréquence maximum est 155 MHz ?
La réponse à cette question est biaisée car le mot câble laisse à penser qu'il n'y a qu'un
conducteur. En réalité la norme 1000 BASE-T utilise 4 paires pour dialoguer en full-duplex, donc 2
paires sont utilisées conjointement pour transmettre l'information, elle-même codée en multi-niveau
PAM-5 (où on a 5 niveaux de tension ce qui permet de transmettre plusieurs bits à la fois) à partir d'un
signal codé en NRZI-M (changement d'état sur un '1' logique). Le résultat de ce double codage est une
forte diminution du débit nécessaire qui descend à 125 MHz.
Ainsi on se rend compte que l'utilisation d'un réseau Gigabit dans un câblage en catégorie 5
pose un problème, la fréquence d'utilisation (125 MHz) est supérieure à la fréquence maximum
d'utilisation du réseau (100 MHz). Ce qui signifie que l'atténuation limite la portée du réseau, sans
possibilité de donner une longueur maximum (cette longueur dépend de trop nombreux paramètre,
comme par exemple le nombre de brins, le type de connecteur, la présence de blindage, etc.).
Page 55 sur 193 Les réseaux IUT de CACHAN
Version 2017 en Informatique Industrielle H. Angelis

Diaphonies
Les paires torsadées sont des câbles réseaux où les paires de conducteurs sont placés les unes
contre les autres dans une gaine. Dès lors qu'un courant circule dans un conducteur, on le retrouve
circulant en sens inverse dans le second conducteur de la paire.
D'un point de vu extérieur, ces deux courants s'opposent,
donc le champ créé par l'un des brins de la paire est annulé par celui
créé par l'autre. Si maintenant on regarde au plus proche on voit que
les conducteurs étant torsadés, on a une alternance de champs
(dans les zones bleues, le champ produit par le conducteur en bleu
est plus puissant et "noie" celui crée par le conducteur rouge).
Dès lors si on place en parallèle de cette première paire une deuxième paire, on va voir
apparaître un courant induit par le champ qui va s'opposer à lui… C'est la diaphonie, l'effet d'une paire
sur l'autre. Cet effet est d'autant plus prononcé que l'on a une grande longueur de couplage.

Pour limiter la diaphonie, on dispose de deux méthodes, la première consiste à blinder les
paires les unes par rapport aux autres. La deuxième utilise une technique moins couteuse en matière,
consistant à modifier la fréquence des torsades des paires.

La paradiaphonie est le rapport d'atténuation entre la puissance entrée dans une paire et celle
que l'on récupère sur l'autre paire. Plus la valeur de la paradiaphonie est grande, plus cela signifie que
la protection va devoir être très importante (cases en rouge sur le tableau de la page précédente).
Tant que les exigences de diaphonie ne sont pas trop contraignantes, on peut se contenter de
changer les fréquences des torsades, mais dès lors que l'on souhaite avoir des diaphonies très faibles
(donc de très grandes valeurs de paradiaphonie) plus le blindage devient une nécessité.
IUT de CACHAN Les réseaux en Page 56 sur 193
H. Angelis Informatique Industrielle Version 2017

Norme par protection


Dès lors que l'on souhaite avoir des protections sur les câbles, on arrive à la nécessité de
normaliser. La norme de protection se décompose en 2 champs :
X/YTP ou X-YTP où X et Y peuvent être U pour unshielded (non blindé), F pour Foiled (écranté)
et pour X seulement S pour Shielded (blindé). X représente l'ensemble des paires et Y représente
chaque paire individuelle.
Y
Unshielded Foiled

Unshielded

U/UTP ou UTP U/FTP

X Foiled

F/UTP ou FTP F/FTP

Shielded

S/UTP ou STP ou SF/UTP S/FTP


ou SFTP
(à ne pas confondre avec S/FTP)

La protection assurée par le paramètre X est une protection vis-à-vis du monde extérieur. La
présence d'un blindage permet de protéger les conducteurs de l'environnement extérieur et
inversement. Le paramètre Y permet plutôt de gérer les phénomènes de diaphonie.
Pour le câblage réseau on utilise généralement
un câblage UTP, mais lorsque le débit réseau nécessite
une bonne protection, on a tendance à blinder les câbles
en commençant par un écran (Foil) puis si
l'environnement est particulièrement bruyant, on va
blinder le câble.
Blinder ou écranter a aussi une incidence sur la
Connecteur connectique (qui doit transmettre une masse au
Connecteur blindé
non blindé
blindage). On utilise donc des connecteurs blindés.
Page 57 sur 193 Les réseaux IUT de CACHAN
Version 2017 en Informatique Industrielle H. Angelis

Les fibres optiques


Les fibres optiques sont des conducteurs où l'information est transmise sous forme d'une onde
lumineuse qui se propage dans un milieu transparent. Son principe est celui du guide d’onde, c’est-à-
dire que l’onde suit le guide dans ses évolutions.
Le principe du guide d’onde repose sur le principe de la réflexion décrit par Descartes :

𝑛1 sin 𝜃1 = 𝑛2 sin 𝜃2
Où n1 et n2 sont les indices des 2 milieux en contact
(on appelle cela un dioptre) et θ1 et θ2, les angles
des ondes, respectivement incidentes ou réfléchies
et réfractées.

Dans la loi de Descartes, si n1 > n2, alors il existe un angle θc appelé angle critique au-delà
duquel la lumière n’est plus réfracté (si θ1 ≥ θt alors θ2 ≥ 90°). On le trouve par la formule : 𝜃𝑐 =
𝑛
sin−1 (𝑛2 ). Dans un guide d’onde, le signal lumineux, lorsqu’il rencontre l’un des bords du guide (donc
1
lorsqu’il rencontre un dioptre), arrive toujours avec un angle d’incidence supérieur à l’angle de
réflexion totale.
En 1842 les physiciens Jean-Daniel Colladon (Suisse) et Jacques
Babinet (France) démontrent que l’eau est un guide d’onde de la lumière
(Colladon en fera la démonstration avec sa fontaine lumineuse).
Il faudra attendre 1950 pour que les premières fibres optiques
apparaissent (avec l’invention du fibroscope), mais leur atténuation est
trop importante pour qu'elles soient utilisées pour des transmissions. A
partir de 1970 grâce à la découverte du LASER, qui permet de créer des sources de lumière cohérente,
on va commencer à les utiliser pour la transmission de l'information sur de longues distances.
La première fibre optique de transmission a été inventée par Robert
Maurer, Peter Schultz et Donald Keck de Corning Glass Works. Elle
présentait une atténuation de 20 dB/km (soit environ 100 fois plus que de
nos jours). Les premières utilisations industrielles de la fibre apparaissent
en 1977 avec le câblage de en fibre optique du
back-bone du réseau téléphonique de Chicago.
Quant à la première liaison intercontinentale
en fibre optique, elle ne sera mise en service
qu’en 1988 (Liaison TAT-8, à gauche sur la
photo, à côté de la liaison coaxiale TAT-7).
L'utilisation des fibres optiques vient du fait qu'elles permettent
des transmissions peu bruitées sur de grandes distances avec des débits fabuleux. Le record de débit
est détenu par NEC et Corning avec une fibre à 1 Pétabit par seconde (1015 bits/s ou 1000 Terrabit/s).
Les fibres optiques sont des conducteurs de lumière composées de
3 cylindres concentriques. Le cylindre central (appelé cœur) a un indice n1
supérieur à l’indice n2 de la gaine (qui est le cylindre qui l’entoure). Le tout
est recouvert par une gaine en acrylique (appelée protection) qui n'a pas
de rôle optique, mais plutôt un rôle mécanique. Les fibres optiques
peuvent être en verre (gaine et cœur sont en verre), en plastique (gaine et cœur sont en plastique), où
avec un cœur en verre et une gaine en plastique.
IUT de CACHAN Les réseaux en Page 58 sur 193
H. Angelis Informatique Industrielle Version 2017

Un autre élément qui caractérise le comportement des fibres optique c'est


le nombre de chemins optiques (ou modes) qui les composent. il existe
deux grandes familles de fibre optiques, les fibres multimodes et les fibres
monomodes. Dans l’illustration ci-contre, on voit l'effet des modes sur la
transmission d'un faisceau lumineux issu d'une source LASER. En haut à
gauche, la tâche unique est obtenue par une fibre monomode, et les 3
autres représentations sont obtenues à partir de fibres multimodes.
Ces chemins sont
définit par le fait que le déphasage du faisceau lumineux
passant par les 2 points A et B alignés et de même
pente, est nul.
Le signal lumineux (qui est une onde sinusoïdale) change de phase à mesure qu'il se propage
dans la ligne et s'inverse à chaque réflexion (voir le chapitre sur les réflexions). Deux points alignés et
parallèles au dioptre doivent impérativement être parcourus par une onde lumineuse, en phase
(interférence constructive) ou très faiblement déphasée, pour que le signal puisse se propager. Si le
déphasage est trop important, les faisceaux lumineux risquent de se retrouver en opposition de phase
et d'être détruits par des interférences destructives, il n'y a alors plus de signal lumineux dans cette
zone.
Ce qui définit les modes de la fibre c’est la formule (obtenue par les équations de Maxwell) :
2𝜋
𝑣= ∅ √𝑛2 − 𝑛22
𝜆 𝑐 1
Où λ est la longueur d’onde de la lumière, Øc est le diamètre du cœur de la fibre,
n1 est l’indice du cœur et n2 l’indice de la gaine.
Lorsque v dépasse environ 2,4 (v n'a pas d'unité), alors la fibre est multimode, tant que v reste
inférieur à cette valeur on a une fibre monomode (ce que l'on cherche). Pour obtenir une fibre optique
monomode, il faut essayer d'obtenir un diamètre de cœur le plus fin possible, une longueur d'onde la
plus grande possible et n1 et n2 les plus proches possibles.

Choix des longueurs d'ondes


L'énorme avantage des fibres optiques repose
sur le fait qu'elles permettent d'obtenir un débit
prodigieux car comme on l'a vu avec Shannon-Hartley,
le débit est lié à la bande passante or la fréquence d'un
signal lumineux s'exprime en centaines de térahertz
𝑐
(𝑓 = 𝜆) donc on obtient très facilement des bandes
passantes de plusieurs gigahertz voir des térahertz.
Ce qui limite l'utilisation des fibres optiques
c'est l'atténuation des matériaux dans lesquelles les
ondes lumineuses se propagent. On cherche en général
le minimum d'atténuation, mais à cela se rajoutent des
considérations sur les technologies disponibles pour
l'émetteur et le récepteur.
Pour la fibre plastique ci-contre, le minimum d'atténuation serait vers 500 nm, mais on utilise
plutôt 650 nm (rouge) pour des raisons de grande disponibilité d'émetteurs.
Page 59 sur 193 Les réseaux IUT de CACHAN
Version 2017 en Informatique Industrielle H. Angelis

La longueur d'onde de la lumière dans une fibre optique est choisie en fonction du graphe
d'absorption du verre (pour les fibres en verre) dans l'une des 3 fenêtres repérées sur le graphe :

La première fenêtre est dans la bande des 850 nm qui a historiquement été la première utilisée
(la courbe pointillée bleue montre que dans les années 70, le minimum d'atténuation était à 850nm).
Elle est toujours exploitée dans les réseaux locaux (plus pour les transmissions longues distances).
L'atténuation dans cette bande est d'environ 3,5dB/km.
Avec les progrès dans la maitrise de l'ion OH- (lié à la présence de molécules d'eau dans les
fibres optiques), on est arrivé dans les années 90 à la courbe rouge. Cette courbe est très proche de la
courbe noire qui correspond à la limite théorique des fibres optiques.
Avec cette nouvelle courbe, on a accès à deux nouvelles fenêtres de transmission, une à
1300 nm et une seconde à 1550 nm. La bande à 1300 nm offre une atténuation de 0,4 dB/km, mais
surtout une dispersion chromatique minimum. On lui donne aussi le nom de bande O (pour Original).
La 3ème fenêtre est décomposée en 2 bandes, la bande C (pour Conventional) et L (pour Long
wavelength), caractérisées par des longueurs d'ondes de 1530 à 1565 nm pour la bande C et de 1565
à 1625 nm pour la bande L. La bande C est la plus utilisée du fait de sa proximité avec la raie d'émission
de l'Erbium (à 1540 nm, on verra plus loin pourquoi). Ces deux bandes donnent toutes les deux une
atténuation d'environ 0,2 dB/km.

Sources de lumière
La source de lumière qui alimente une fibre optique dépend de deux paramètres : la longueur
d'onde recherchée et le type de fibres utilisé. Pour les fibres plastiques et donc low-cost, on utilise un
générateur de lumière low-cost lui aussi, une simple LEDs rouges (à 650 nm).
Pour les fibres en verre (généralement plus couteuses) alimentés à 850, 1300 ou 1550 nm, on
n'utilise plus de LEDs standard, remplacées par des LEDs LASER, en particulier les VCSEL (Vertical Cavity
Surface Emiting LASER), plus coûteuses mais très efficaces.
Le principe de ces LEDs est assez compliqué pour un étudiant de DUT, il repose sur l'utilisation
de miroirs de Bragg (Google® est votre ami), utilisant des matériaux à base d'arséniure de gallium
(AsGa) et arséniure d'aluminium (AlAs) ou d'Arséniure de Gallium Aluminium (AlAsGa) pour les
émissions à 850 nm. Pour les longueurs d'ondes plus grandes (1300 nm) on utilise toujours des
mélanges à l'arséniure de gallium mais associés à de l'indium, du phosphore et de l'aluminium. Enfin
pour les longueurs d'ondes de 1550 nm on combine des couches d'Indium Phosphore avec des couches
arséniure de gallium (plus phosphore, Indium et Aluminium).
IUT de CACHAN Les réseaux en Page 60 sur 193
H. Angelis Informatique Industrielle Version 2017

La fibre multimode à saut d'indices


La fibre optique en verre multimode à saut d'indice est historiquement la première fibre à avoir
été créée. Elle a quasiment disparu du domaine des réseaux, remplacée par la fibre optique à gradient
d'indice.
Toutefois, pour les applications à faible coût, où les distances sont ultra courtes (une dizaine
de mètre) et où le débit n'a pas besoin d'être trop élevé (1 Gbit/s ou moins), on continue d'utiliser des
fibres optiques à saut d'indices sous forme plastique (FOP pour Fibre Optique Plastique), utilisée dans
les applications audio grand public ou PCS (Plastic Clad Silica, ou Fibre silice à gaine plastique) utilisés
dans les réseaux multimédia embarqués.

Le principal défaut du saut d'indice vient du fait qu'il crée une forte déformation du signal par
l'effet d'une dispersion modale : selon le chemin optique emprunté, l'information arrive avec un retard
variable, sur l'illustration ci-dessus (et exagéré pour être visible), le chemin rouge va être beaucoup
plus long que le chemin violet, donc le signal envoyé va être déformé et étalé.
Les fibres multimode à saut d'indice présentent en plus de l'atténuation liée à l'absorption de
la fibre, une atténuation liée à la dispersion modale. Cette dispersion a un effet sur le débit maximum
de la fibre puisqu'un bit doit durer au moins un temps égal à la différence entre le temps mis sur le
𝑛
chemin le plus court (𝑇𝑚𝑖𝑛 ) et le chemin le plus long (𝑇𝑚𝑎𝑥 ).Connaissant l'angle critique (cos 𝜃𝑐 = 𝑛2),
1
𝐿 𝐿
on calcule 𝑇𝑚𝑖𝑛 = 𝑉 et 𝑇𝑚𝑎𝑥 = 𝑉 cos 𝜃𝑐
.
𝜑 𝜑

D'où un débit limité, estimé par une bande passante de 5 MHZ.km pour les FOP et 50 MHz.km
pour les PCS.
La distribution de puissance (virtuelle, cette forme existe bien, mais n'est pas caractéristique
des fibres à saut d'indices) montre que la fibre est bien une multimode puisque le signal passe par
plusieurs zéros dans le cœur de la fibre.
On peut aussi constater qu'une partie de l'information est transmise dans la gaine, où elle
avance plus vite que l'information dans le cœur de la fibre. En effet la vitesse de propagation, comme
on l'a vu dans le premier chapitre dépend de l'indice du milieu. Or dans notre fibre multimode à saut
𝑐 3∙108
d'indice, la vitesse dans le cœur est 2 ∙ 108 m/s (𝑛 = 1,5
) alors que la vitesse dans la gaine est
d'environ 2,02 ∙ 108 m/s.
Enfin, l'ouverture numérique, correspondant à l'angle par rapport à la normale à l'entrée dans
la fibre qui permet d'avoir en interne une réflexion totale sur le dioptre cœur-gaine, se calcule comme :
ON = √𝑛12 − 𝑛22 = 𝑛0 sin 𝜃0 où θ0 est l'angle en entrée de la fibre, n1 et n2 étant respectivement les
indices du cœur et de la gaine et n0 l'indice du milieu en entrée de la fibre (de l'air à un indice de 1).
Plus cette ouverture est réduite, plus l'angle d'entrée est étroit et moins on aura de chemins "longs"
dans la fibre, mais plus il faudra respecter une connexion précise et alignée pour permettre un passage
d'information et potentiellement utiliser une source de lumière cohérente (Laser).
Page 61 sur 193 Les réseaux IUT de CACHAN
Version 2017 en Informatique Industrielle H. Angelis

La fibre multimode à gradient d'indice


La fibre à gradient d'indice est une fibre multimode nettement plus efficace que celle à saut
d'indice. Au lieu de faire se réfléchir les rayons lumineux sur l'interface du dioptre cœur-gaine, la
réflexion est progressive et les rayons sont "courbés" par réflexions successives.

Dans la fibre à gradient d'indice, les chemins optiques forment des "paraboles". On pourrait
alors croire que les paraboles proches de la gaine et qui présentent des trajets plus long, sont plus
lentes que celle proche du centre de la fibre, mais la vitesse de propagation étant liée à l'indice (𝑉𝜑 =
𝑐
), la vitesse de propagation augmente à mesure que l'indice diminue. Le chemin extérieur est donc
𝑛
plus long, mais sa vitesse est plus élevée, alors que celui proche du centre a un trajet plus court mais
aussi plus lent. Ainsi, on arrive alors presque à synchroniser les chemins.
Toutefois, cette synchronisation n'est pas parfaite, et on retrouve encore de la dispersion
modale avec des trajets extérieurs un peu en avance sur les trajets intérieurs. D'où encore une
déformation du signal. Par contre cette fois-ci, ce sont les chemins longs qui arrivent en premier et le
chemin direct qui termine la transmission. Ce qui implique que le débit, tout en restant limité, est
beaucoup plus élevé que celui des fibres à saut d'indice.
L'industrie a voulu normaliser ces fibres en les classant dans 4 catégories allant de OM1 à OM4.
Les fibres OM1 sont des fibres 62,5/125 (un cœur de 62,5 µm de diamètre dans une gaine de 125 µm
de diamètre extérieur) qui ont une atténuation d'environ 3 dB/km (à 850 nm) et de 1 dB/km à 1,3 µm
et une bande passante allant de 200 MHz.km (à 850 nm) à 500 MHz.km (à 1,3 µm).
Les fibres OM2 sont des fibres 50/125 qui présentent les mêmes atténuations que les fibres
OM1, mais avec un débit de 500 MHz.km pour les deux longueurs d'ondes (850 et 1300 nm).
Les fibres OM3 et OM4 sont des fibres optimisées pour l'utilisation de
VCSEL en bande O (850 nm) avec des débits de 2 GHz.km (OM3) et 4,7 GHz.km
(OM4). Elles ont été conçues pour porter les réseaux Ethernet Gigabit et
Ethernet 10Giga pour les réseaux "locaux".
On peut remarquer que les fibres optiques à gradient d'indice ne
transmettent pas l'information dans la gaine ou plutôt elles le font par un effet
difficilement explicable (et que l'on retrouve sur toutes les fibres) qui fait que,
dans la gaine, juste derrière le dioptre, on retrouve malgré la réflexion totale
une toute petite partie de la puissance de transmission (et qui ne lui nuit pas).
On retrouvera ce même phénomène dans les fibres monomodes, là
encore sans que cela nuise à la transmission…
IUT de CACHAN Les réseaux en Page 62 sur 193
H. Angelis Informatique Industrielle Version 2017

La fibre monomode

La fibre monomode est la fibre des transmissions longues distances, elle est conçue autour
d'un cœur d'environ 9 µm, avec une ouverture numérique très étroite. L'énorme avantage des fibres
monomode est de ne pas avoir plusieurs chemins optiques, il n'y a donc pas de dispersion modale dans
ces fibres, si bien qu'elles ne subissent que l'atténuation d'absorption du verre soit environ de 0,4 à
0,2 dB/km.
Comme il n'y a pas d'autre limitation, on arrive à des bandes passantes de plus de 100 THz.km
(1014 Hz.km) permettant des transmissions très haut débit sur des distances extrêmement grandes. On
les utilise donc pour les liaisons sous-marines intercontinentales. Toutefois, l'atténuation, si faible soit
elle, impose des amplifications régulières des signaux tout du long de la transmission.
L'amplification du signal est faite par un dopage à l'Erbium, qui a la capacité de créer des
photons à une longueur d'onde de 1540 nm. Le principe de fonctionnement de cet amplificateur
consiste à coupler un LASER, émettant en continu, sur une fibre dopée à l'Erbium pour mettre les ions
de dopage dans un état excité. Le passage d'un front d'onde dans la fibre va désexciter l'ion qui va
émettre alors une onde identique à celle qui a déclenché sa désexcitation. Les deux ondes "fusionnent"
alors en amplifiant le signal.
Malheureusement, il arrive que certains ions se désexcitent tout seul. Ils produisent alors une
onde de bruit (qui est elle aussi amplifiée). Heureusement ces ondes sont produites dans des directions
aléatoires et seules celles dans le sens de propagation de la fibre ont une chance (ou plutôt la
malchance dans notre cas) d'être amplifiées.
Il existe d'autres amplificateurs, en particulier ceux à effet Raman, qui n'ont pas besoin de
fibres spéciales pour être utilisés et qui induisent moins de bruit. Ils sont de plus en plus utilisés, leur
mise en œuvre se fait de façon plus diffuse sur la ligne de transmission.
Cette famille d'amplificateurs est appelée 1R (pour Regenerate).
Les fibres monomodes présentent tout de même des défauts, peu visibles, mais bien présents :
• La PMD (Polarization Mode Dispersion) qui est essentiellement liée à des défauts de
fabrication de la fibre (problèmes de concentricité, d'ovalisation, etc.).
• La dispersion chromatique qui vient du fait que les vitesses de propagation dépendent de
la longueur d'onde ce qui déforme les signaux utilisant plusieurs longueurs d'ondes. Or
lorsque l'on envoie une impulsion, elle se décompose (voir fourrier) en harmoniques qui
rendent le signal polychromatique (plusieurs fréquences).
Les amplificateurs doivent alors corriger ce problème en remettant en forme le signal
(régénération de pulse). On appelle cette famille d'amplificateurs, capable à la fois d'amplifier le signal,
mais aussi de lui redonner une forme d'impulsion, les 2R (pour Regenerate and Reshape) par
opposition aux 1R (Regenerate).
Page 63 sur 193 Les réseaux IUT de CACHAN
Version 2017 en Informatique Industrielle H. Angelis

Les fibres monomodes sont normalisées selon plusieurs normes, l'ISO les classe de OS1 à OS3,
l'IEC (International Electrotechnical Commission) les classes en B1 à B4 (avec des sous-groupes) et l'ITU
(International Telecommunication Union) les classe de G.651 à G.657 (avec là aussi des sous-groupes).
L'ensemble de ces normes définit les limites tolérables des défauts de PMD, de dispersion chromatique
et les spécificités technologiques, comme par exemple les fibres zero-water (sans pic OH-), les fibres à
dispersion chromatique décalée (la dispersion chromatique, naturellement nulle à 1310 nm, a été
décalée à 1550 nm), fibre à dispersion chromatique nulle (en réalité la dispersion chromatique à 2
zéros à 1300 nm et 1550 nm, mais n'est pas totalement nulle dans la bande 1300-1500 nm), etc.
L'utilisation des fibres optique monomode a été le point de départ de notre société du tout
connecté, mais cela entraine une croissance permanente de la demande de débit qui impose
d'augmenter sans arrêt la capacité de transmission des fibres optiques en multiplexant l'information
sur des longueurs d'onde différentes (Wavelength Division Multiplexing) sur des longueurs d'ondes
comprise entre 1300 et 1600 nm, en bande plus ou moins large selon la version (Conventional WDM,
Dense WDM ou Ultra Dense WDM).
L'inconvénient de ce mode de multiplexage vient du fait que les informations sont envoyées à
des longueurs d'onde différentes, donc à des vitesses différentes, peu visible sur de courtes distances,
mais bien visible dès que la longueur de la ligne s'accroit. On utilise des amplificateurs de la famille 3R
(Regenerate, Reshape and Retime) pour amplifier le signal, lui redonner une forme impulsionnelle et
resynchroniser les longueurs d'ondes entre elles.

Carte des câble sous-marins actifs

Là s'achève la partie théorique et là commence l'étude des réseaux…


(du plus simple au plus complet).
IUT de CACHAN Les réseaux en Page 64 sur 193
H. Angelis Informatique Industrielle Version 2017

Le bus SPI
Le bus SPI est un bus synchrone, mono maître, full duplex, inventé par Motorola (devenu
depuis Freescale) en 1985 pour équiper les microcontrôleurs 68HC11. Il a depuis été repris par de
nombreux autres constructeurs (ATMEL, MICROCHIP, ST, etc.). Il est principalement utilisé pour
communiquer avec des périphériques du microcontrôleur disposant d'une interface SPI sur de courtes
distances (quelques dizaines de centimètres).

Protocole SPI

Signaux
La communication entre le maître (MASTER) et l'esclave (SLAVE) se fait via 4 liaisons :
• SCK (Seriel ClocK) : Horloge générée par le maître qui synchronise l'échange.
• MISO (Master In / Slave Out) : Communication dans le sens esclave vers maître.
• MOSI (Master Out / Slave In) : Communication dans le sens maître vers esclave.
• SS (Slave Select) : Entrée de sélection de l'esclave (actif à l'état bas).

Chronogrammes
Les chronogrammes des échanges dépendent du mode de fonctionnement choisi pour
l'horloge. Il y a 4 modes d'horloge paramétrables :
Page 65 sur 193 Les réseaux IUT de CACHAN
Version 2017 en Informatique Industrielle H. Angelis

La longueur des échanges (8 bits ou 16 bits), la fréquence de l'horloge, ainsi que le sens de
communication (Little ou Big Endian) dépend du périphérique esclave. Le maître doit s'adapter au
périphérique auquel il parle, lorsqu'il change d'esclave.
Dans les chronogrammes d'échange de la page précédente, on constate que pour chaque bit
transmis sur MOSI (D0 à D7), on récupère un bit sur MISO (D'0 à D'7) qui est la donnée retournée par
l'esclave et qui existe toujours, même si l'esclave n'a rien à envoyer (voir la documentation de l'esclave
pour savoir comment il se comporte). On a bien une communication full duplex où chaque période de
l'horloge du maître correspond à un bit envoyé et à un bit reçu.
Pour le mode premier front, polarité positive, on va détailler le fonctionnement des échanges :

Le maître écrit et échantillonne en rouge, l'esclave en noir.


• En 0 : Lorsque le maître souhaite communiquer avec son périphérique, il commence par
l'activer en passant SS à '0'. Immédiatement après l'activation, le maître et l'esclave
placent sur le bus le premier bit qu'ils doivent transmettre.
• En 1 : Le maître génère un front actif sur SCK, lui et l'esclave font l'acquisition de la valeur
présente sur la ligne, l'esclave sur MOSI et le maître sur MISO.
• En 2 : Le maître génère un front "inactif" sur SCK, lui et l'esclave réagissent en plaçant le
bit suivant sur la ligne, l'esclave écrit sur MISO et le maître sur MOSI.
• 3 et 4, puis 5 et 6, etc. jusqu'à 15 et 16, le modèle de 1 et 2 se répète. Immédiatement
après 16, le maître arrête d'écrire sur la ligne MOSI.
• En 17 : le signal SS remonte ce qui entraine la désactivation de l'esclave, dès lors, la ligne
MISO est libre.

Adressage
Le bus SPI n'a pas d'adressage logiciel c'est-à-dire
que les esclaves ne sont activés que par le passage à '0' de
leur broche de sélection. En ce sens, il ne répond pas aux
canons des réseaux où la fonction d'adressage est
caractéristique des réseaux. Cela fait du SPI un bus
partiellement multiplexé dont la taille dépend du nombre
d'esclaves qu'il a à gérer.
Comme il n'y a qu'un seul maître, il n'y a pas de
risque de conflit de communication. Toutefois, il n'y a
souvent qu'une seule sortie SS par maître, pour pouvoir
discuter avec plusieurs esclaves, il faut donc soit utiliser des
ports comme sorties SS (choix pour la X12), soit utiliser des
fonctions logiques pour créer une sélection.
IUT de CACHAN Les réseaux en Page 66 sur 193
H. Angelis Informatique Industrielle Version 2017

Le SPI du 9S12
Le 9S12 dispose d'un seul bus SPI relié par défaut aux broches PS4 à PS7 (absente de la version
80 broches du composant que nous utilisons), que l'on peut renvoyer vers les broches PM2 à PM5 par
mise à '1' du bit 4 du registre MODRR1 (configuration de la X12).
La mise à '1' du bit 4 de MODRR est obligatoire pour pouvoir utiliser le SPI.
Génération d'horloge
La génération de l'horloge du SPI se fait à partir
de l'horloge interne par l'intermédiaire de deux
prédiviseurs intégrés SPPR2 et SPR2 :
𝐹𝑆𝑌𝑆
𝐹𝑆𝑃𝐼 =
(𝑆𝑃𝑃𝑅 + 1) ∙ 2(𝑆𝑃𝑅+1)
L'horloge interne du microcontrôleur (24MHz) est divisée une première fois par facteur égal à
SPPR+1. Comme SPPR est sur 3 bits, il varie entre 0 et 7, d'où une division allant de 1 à 8.
Puis cette horloge entre dans un second étage où le facteur de division est 2(SPR+1). Comme SPR
est sur 3 bits lui aussi, on obtient un facteur de division allant de 2 (21) à 256 (28).
En cascadant ces 2 diviseurs on arrive à un facteur de division réglable entre 2 et 2048, soit des
fréquences en sortie réglable entre 12MHz et 11 718,75Hz.
SPR SPPR Div. SPR SPPR Div. SPR SPPR Div. SPR SPPR Div.
0 0 2 1 0 4 2 0 8 3 0 16
0 1 4 1 1 8 2 1 16 3 1 32
0 2 6 1 2 12 2 2 24 3 2 48
0 3 8 1 3 16 2 3 32 3 3 64
0 4 10 1 4 20 2 4 40 3 4 80
0 5 12 1 5 24 2 5 48 3 5 96
0 6 14 1 6 28 2 6 56 3 6 112
0 7 16 1 7 32 2 7 64 3 7 128

SPR SPPR Div. SPR SPPR Div. SPR SPPR Div. SPR SPPR Div.
4 0 32 5 0 64 6 0 128 7 0 256
4 1 64 5 1 128 6 1 256 7 1 512
4 2 96 5 2 192 6 2 384 7 2 768
4 3 128 5 3 256 6 3 512 7 3 1024
4 4 160 5 4 320 6 4 640 7 4 1280
4 5 192 5 5 384 6 5 768 7 5 1536
4 6 224 5 6 448 6 6 896 7 6 1792
4 7 256 5 7 512 6 7 1024 7 7 2048

Choix du mode
Le mode de fonctionnement se choisit en configurant les bits CPOL3 et CPHA3 :
CPHA
0 1
0 Mode 0 Mode 1
CPOL
1 Mode 2 Mode 3
Le choix du mode de fonctionnement dépend exclusivement de l'esclave. Le mode par défaut
du 9S12 est le mode 1.

1 Voir polycopié "les microcontrôleurs".


2 Voir registre SPIBR, page 69
3 Voir registre SPICR1, page 67
Page 67 sur 193 Les réseaux IUT de CACHAN
Version 2017 en Informatique Industrielle H. Angelis

Les registres du SPI


SPICR1 (SPI Control Register 1) Base address + 0
Bit 7 6 5 4 3 2 1 0
Read
SPIE SPE SPTIE MSTR CPOL CPHA SSOE LSBFE
Write
Reset Value 0 0 0 0 0 1 0 0
Accès : Toujours accessible en lecture et en écriture.
SPIE SPI Interrupt Enable Activation de l'interruption sur le SPI
Fonction : L'activation de l'interruption déclenche une interruption lorsque l'un des flags
SPIF1 ou MODF1 passe à l'état actif.
Etat : 0 : Interruption désactivée.
1 : Interruption activée.
SPE SPI System Enable Activation du module SPI
Fonction : L'activation de SPE valide le module SPI et connecte les signaux SS, SCK, MISO
et MOSI aux broches extérieures sélectionnées par le registre MODRR. La
désactivation de SPE suspend immédiatement toute transmission et
déconnecte le module des broches du composant.
Lors de la désactivation tous les flags sont effacés.
Etat : 0 : Le module est désactivé.
1 : Le module est activé.
SPTIE SPI Transmit Interrupt Enable
Activation de l'interruption de transmission sur le SPI
Fonction : L'activation de l'interruption de transmission déclenche une interruption
lorsque le flag SPTEF1 passe à l'état actif.
Etat : 0 : Interruption désactivée.
1 : Interruption activée.
MSTR SPI Master/Slave mode select Choix du mode Maître/Esclave
Fonction : Permet de choisir si le nœud se comporte comme un maître ou un esclave.
Etat : 0 : Le nœud est un esclave.
1 : Le nœud est un maître.
CPOL SPI Clock Polarity Choix de la polarité de l'horloge du SPI
Fonction : Permet de choisir si l'horloge est en logique positive ou négative.
Etat : 0 : Logique positive (niveau inactif = '0').
1 : Logique négative (niveau inactif = '1').
CPHA SPI Clock Phase Choix du front actif sur l'horloge du SPI
Fonction : Permet de choisir le front d'horloge qui déclenche la lecture du bus.
Etat : 0 : Echantillonnage sur les fronts impairs.
1 : Echantillonnage sur les fronts pairs.
SSOE SS Output Enable Activation de la broche SS
Fonction : Permet, en fonction de la valeur de MODFEN2, d'activer la broche SS du bus
en sortie.
Etat : 0 : La broche est inutilisée ou en entrée.
1 : La broche est inutilisée ou en sortie.
LSBFE LSB First Enable Définition du sens de transmission (little/Big Endian)
Fonction : Permet de fixer l'ordre des bits pour la transmission.
Etat : 0 : transmission Big Endian (MSB en premier).
1 : transmission Little Endian (LSB en premier).

1 Voir registre SPISR, page 69


2 Voir registre SPICR2, page 68
IUT de CACHAN Les réseaux en Page 68 sur 193
H. Angelis Informatique Industrielle Version 2017

SPICR2 (SPI Control Register 2) Base address + 1


Bit 7 6 5 4 3 2 1 0
Read 0 0 0
XFRW MODFEN BIDIROE SPISWAI SPC0
Write
Reset Value 0 0 0 0 0 0 0 0
Accès : Toujours accessible en lecture et en écriture.
XFRW Transfer Width Format de transfert
Fonction : Permet de définir le nombre de bits transmis par le bus SPI. En mode 8 bits le
message à transmettre doit être écrit dans le registre SPIDRL1. En mode 16
bits les registres SPIDRL1 et SPIDRH1 forment un mot de 16 bits où le message
doit être écrit.
Une modification de la valeur de ce bit pendant une transmission arrête la
transmission.
Etat : 0 : Mode 8 bits.
1 : Mode 16 bits.
MODFEN Mode Fault Enable Activation du mode de détection de fautes
Fonction : Permet d'activer la détection de fautes, liées à la présence de 2 maîtres sur
le bus, en surveillant le bit SS. Le bit MODFEN définit conjointement avec
SSOE2 le fonctionnement de la broche SS du bus.
Etat : 0 : La broche SS n'est pas utilisée par le bus.
1 : La broche SS est utilisée par le bus.
MODFEN
0 1
0 SS en entrée
SSOE SS inutilisée
1 SS en sortie

BIDIROE Output Enable in Bidirectional Mode


Activation des étages de sortie en mode Half-Duplex
Fonction : Permet, en mode liaison Half-Duplex, conjointement avec SPC0, de contrôler
l'état de MOSI (en mode maître) ou MISO (en mode esclave).
Etat : Voir tableau ci-dessous
SPISWAI SPI Stop In Wait Mode Gestion des modes d'économie d'énergie
Fonction : Permet de mettre le module SPI à l'arrêt lorsque le microcontrôleur passe en
mode attente (économie d'énergie).
Etat : 0 : Le SPI fonctionne normalement lorsque le micro passe en mode Wait.
1 : Le SPI s'arrête lorsque le micro passe en mode Wait.
SPC0 SPI Pin Control bit 0 Gestion du mode bidirectionnel
Fonction : Permet de placer le bus SPI en mode half-duplex (communication
bidirectionnelle sur 1 fil).
Etat : 0 : Bus SPI en mode full-duplex (normal).
1 : Bus SPI en mode half-duplex.

Mode SPC0 BIDIROE MISO MOSI


Mode Master (MSTR2 = '1')
Full-Duplex 0 X Master In Master Out
0 Master In
Half-Duplex 1 Déconnecté
1 MOMI3
Mode Slave (MSTR2 = '0')
Full-Duplex 0 X Slave Out Slave In
0 Slave In
Half-Duplex 1 Déconnecté
1 SISO

1 Voir registre SPIDR, page 70.


2 Voir registre SPICR1, page 67.
3 Voir mode Half Duplex, page 70
Page 69 sur 193 Les réseaux IUT de CACHAN
Version 2017 en Informatique Industrielle H. Angelis

SPIBR (SPI Baud Rate Register) Base address + 2


Bit 7 6 5 4 3 2 1 0
Read 0 0
SPPR2 SPPR1 SPPR0 SPR2 SPR1 SPR0
Write
Reset Value 0 0 0 0 0 0 0 0
Accès : Toujours accessible en lecture et en écriture.
SPPRX Baud Rate Preselection Présélection de la vitesse de transfert
Fonction : Bits de présélection du facteur de division.
Ces bits s'utilisent conjointement avec les bits PRS.
SPRX Baud Rate Selection Sélection de la vitesse de transfert
Fonction : Bits de sélection du facteur de division.
Ces bits s'utilisent conjointement avec les bits PPRS.
𝐹𝑆𝑌𝑆
Etat : 𝐹𝑆𝑃𝐼 = (𝑆𝑃𝑃𝑅+1)∙2 (𝑆𝑃𝑅+1)

Un tableau récapitulant tous les facteurs de division est disponible page 66


SPISR (SPI Status Register) Base address + 3
Bit 7 6 5 4 3 2 1 0
Read SPIF 0 SPTEF MODF 0 0 0 0
Write
Reset Value 0 0 1 0 0 0 0 0
Accès : Toujours accessible en lecture, une écriture est sans effet.
SPIF SPI Interrupt Flag Flag d'interruption du SPI
Fonction : Signale qu'un message a été reçu par le module SPI.
Le flag s'efface par la lecture du registre SPISR puis par une lecture du registre
de données (SPIDRL1 en mode 8 bits, ou SPIDRL et SPIDRH1, par 2 lectures de
8 bits, ou une lecture sur 16 bits, en mode 16 bits).
Etat : 0 : Pas de message reçu.
1 : Message en attente de lecture.
SPTEF SPI Transmit Empty Interrupt Flag
Flag d'interruption de buffer de transmission du SPI vide
Fonction : Signale que le buffer de transmission du module SPI est vide.
Le flag s'efface par la lecture du registre SPISR puis par une écriture dans le
registre de données (SPIDRL1 en mode 8 bits, ou SPIDRL et SPIDRH1, par 2
écriture de 8 bits, ou une écriture sur 16 bits, en mode 16 bits).
Etat : 0 : Le buffer n'est pas vide.
1 : Le buffer est vide.
MODF Mode Fault Flag Flag d'erreur sur le module SPI
Fonction : Signale qu'une erreur est survenue sur le réseau (passage de SS à '0' alors que
le module est définit comme maître et qu'il n'est pas en train de
communiquer). On efface le flag par la lecture du registre SPISR suivi par une
écriture dans le registre SPICR12 (sur SPE ou MSTR).
Etat : 0 : Pas d'erreur.
1 : Erreur détectée.

1 Voir registre SPIDRL et SPIDRH, page 70


2 Voir registre SPICR1, page 67
IUT de CACHAN Les réseaux en Page 70 sur 193
H. Angelis Informatique Industrielle Version 2017

SPIDRH (SPI Data Register High) Base address + 4


Bit 7 6 5 4 3 2 1 0
Read R15 R14 R13 R12 R11 R10 R9 R8
Write T15 T14 T13 T12 T11 T10 T9 T8
Reset Value 0 0 0 0 0 0 0 0
Accès : Toujours accessible en lecture et en écriture.

SPIDRL (SPI Data Register Low) Base address + 5


Bit 7 6 5 4 3 2 1 0
Read R7 R6 R5 R4 R3 R2 R1 R0
Write T7 T6 T5 T4 T3 T2 T1 T0
Reset Value 0 0 0 0 0 0 0 0
Accès : Toujours accessible en lecture et en écriture.
RX Received Data Donnée reçue
Fonction : Permet la lecture du message reçu. Le message n'est valable que si le bit SPIF
est à '1'.
On peut accéder à ces 2 registres individuellement en accès 8 bits, ou sous le
nom de SPIDR en mode 16 bits.
TX Transmit Data Donnée à transmettre
Fonction : Permet la l'écriture du message à envoyer. On ne doit écrire un message dans
le (ou les) registres que si le bit SPTEF est à '1'.
On peut accéder à ces 2 registres individuellement en accès 8 bits, ou sous le
nom de SPIDR en mode 16 bits.

Fonctionnement du SPI
Détection d'erreur
Bien que le bus SPI soit un théoriquement un réseau mono-maître, Freescale a fait évolué son
produit pour permettre d'avoir plusieurs microcontrôleurs sur le bus et de les rendre alternativement
maître du bus. De ce fait, des conflits (potentiellement destructifs pour le micro) peuvent apparaitre.
Pour éviter une détérioration du microcontrôleur, Freescale a rajouté une fonction de
détection d'erreur MODF1 qui permet de détecter qu'en l'absence de communication de la part du
module, la ligne SS est passée à '0'. Lors du passage de MODF à '1' une interruption peut se déclencher
(selon l'état du bit MODFEN2). Dans ce cas, il faut impérativement et le plus rapidement possible faire
passer le bit MSTR3 à '0' pour commuter le module en esclave.

Mode half-duplex
Là encore, c'est un ajout de la part de
Freescale, là où le bus SPI est naturellement
full-duplex (à l'aide de MISO et MOSI),
Freescale a proposé de rajouter 2 modes
supplémentaires MOMI et SISO permettant
de n'utiliser qu'une seule ligne de donnée
(encore faut-il que l'esclave l'accepte).
On passe en mode half duplex en mettant à '1' le bit SPC02. On revient en full duplex en
repassant SPC02 à '0'. En mode half duplex, le sens de l'échange est contrôlé par la mise à '1' ou à '0'
du bit BIDIROE2 ('0' = en entrée, '1' = en sortie).

1 Voir registre SPISR, page 69


2 Voir registre SPICR2, page 68
3 Voir registre SPICR1, page 67
Page 71 sur 193 Les réseaux IUT de CACHAN
Version 2017 en Informatique Industrielle H. Angelis

Réception, transmission et interruption


Le SPI du fait de sa grande simplicité arrive à fonctionner à des vitesses assez élevées
(12 Mbit/s c'est pas mal…), on risque d'arriver alors aux limites du microcontrôleur en matière de
traitement des informations, c'est pourquoi le module SPI dispose de 2 interruptions permettant un
traitement le plus rapide possible des communications SPI.
Le récepteur utilise une interruption de réception que l'on peut activer en mettant à 1 le bit
SPIE1. Lorsque le récepteur a reçu le nombre de bits configuré par XFRW2, il met à '1' le bit SPIF3, ce qui
déclenche une interruption sur le cœur du microcontrôleur qui doit rapidement vider le buffer de
réception pour permettre au message suivant d'y être copié. Tant que le flag n'aura pas été effacé, le
buffer ne sera pas libéré et les messages suivant seront éliminés.

On a deux interruptions, une en réception et une en transmission pour permettre de prendre


en compte les modes esclaves (interruption en réception) ou maître (interruption en transmission).
L'énorme point noir du bus SPI vient du fait qu'il n'y a aucun acquittement de la part du
récepteur. On peut donc émettre un message, sans que personne ne le reçoive, sans en être informé.

1
Voir registre SPICR1, page 67
2
Voir registre SPICR2, page 68
3
Voir registre SPISR, page 69
IUT de CACHAN Les réseaux en Page 72 sur 193
H. Angelis Informatique Industrielle Version 2017

Le bus SPI de la X12


La X12 dispose comme on l'a vu d'un canal SPI. Il est relié de façon fixe (le composant étant
soudé sur la carte) à un convertisseur numérique analogique 8 bits AD5300 de Analog Devices®, mais
il est aussi envoyé vers un connecteur HE10 (liaison) et vers un connecteur placé sous la carte IHM et
associé à un périphérique réseau le W5100 (contrôleur Ethernet + TCP-IP).
On est dans le cas d'un maître et de plusieurs esclaves. On a donc besoin de plusieurs SS. Les
bits de poids fort du port E ont été associés à cette fonction.

AD5300
Le CNA est connecté via une liaison
SPI avec le 9S12. On utilise le bit PE7 pour
réaliser la fonction dévolue à SS. PE7 est
donc relié à SYNC (voir le chronogramme ci-
dessous). SCL est naturellement associé à la
broche SCLK de l'AD5300 et MOSI est
connecté à DIN.
Lorsqu'on regarde les
chronogrammes du convertisseur on
constate que les données changent de valeur
sur un front montant de l'horloge et qu'elles
sont échantillonnées sur un front
descendant.
On constate aussi que l'horloge commence par
un front descendant (et que l'échantillonnage à lieu sur
ce front). On peut en déduire le mode associée à ce
composant, il s'agit du mode 2 : premier front, front
descendant.
On constate aussi que les donnes sont à
transmettre en mode Big Endian et qu'il y a 16 bits à
transmettre.

W5100
Le Wiznet® W5100 est un contrôleur Ethernet intégrant une pile Ethernet + TCP-IP (complète)
et quelques protocoles de couche 7 (http en particulier). Conçu pour de l'embarqué, il est opéré en SPI
(en esclave seulement) et utilise une interruption externe (comme il est esclave, il ne peut pas prendre
la parole seul et doit donc interrompre le microcontrôleur pour que soient traitées ses informations).
En regardant le protocole SPI associé, on voit que l'échange se fait sur 32 bits sous la forme de
4 octets (voir MISO), il vaut mieux alors choisir le mode 8 bits, en Big Endian (voir MOSI).

Pour le mode de fonctionnement, c'est écrit : Mode 0 (premier front, front montant). On
constatera tout de même que le retour (MISO) à 1 période de retard sur l'émetteur (MOSI)…
Page 73 sur 193 Les réseaux IUT de CACHAN
Version 2017 en Informatique Industrielle H. Angelis

Le bus I2C
Le bus I2C est né en 1982 dans les laboratoires de Philips. I2C est une liaison synchrone,
trifilaire, half-duplex, d'un débit variant (originellement) entre 0 et 100 Kbit/s, puis 400 Kbit/s
(Fast I2C), multi-maître et basé sur un double mode de transfert de données (maître/esclave ou
producteur/consommateur).
L'autre particularité du bus I2C repose sur le fait qu'il n'utilise pas deux niveaux logiques forts
('1' et '0'), mais un niveau logique fort ('0') et un faible ('H'). C'est la notion de transmission à drain
ouvert (vue dans le polycopié sur les microcontrôleurs). Pour qu'un état 'H' apparaisse, il faut
impérativement que tous les périphériques envoient un 'H' et qu'aucun n'envoie un '0', faute de quoi
le '0' écrase les 'H'.
Pour simplifier, on dit que le '0' est un état dominant et que le 'H' est un état récessif.

Fonctionnement du bus I2C


Les 3 lignes utilisées par le bus I2C sont SCL (System
Clock), SDA (Serial Data) et une liaison de masse.
La ligne SCL est la propriété du maître de l'échange.
Comme pour le protocole SPI, elle définit l'horloge qui rythme
les échanges entre les 2 machines en communication. La ligne
SDA sert au transfert des données du producteur vers le
consommateur.
Les données présentes sur le bus sont valides uniquement quand la ligne SCL est à l'état haut.

Start et Stop
Une transmission débute par une transition de l'état haut
à l'état bas de la ligne SDA alors la ligne SCL est à l'état haut (donc
lorsqu'il n'est pas sensé y avoir de changement d'état sur la ligne
SDA), ce qui identifie formellement le délimiteur de début de
trame (Start). La transmission s'achève par une transition de
l'état bas à l'état haut de la ligne SDA lorsque SCL est à l'état haut,
pour identifier le délimiteur de fin de trame (Stop).

Acquittement
Lors d'une transmission, le producteur et le consommateur doivent valider régulièrement leurs
échanges. Tous les 8 bits, le consommateur doit signaler au producteur que le message a bien été reçu.
C'est l'acquittement (acknowledge en Anglais).
Le processus d'acquittement repose sur l'envoi par
le producteur de données d'un bit récessif et son
écrasement par le consommateur qui renvoie alors un bit
dominant. Le bit dominant écrase l'e bit récessif, le
producteur lit donc sur la ligne un '0' alors qu'il envoie un
'H'. C'est la preuve que le consommateur a bien reçu le
message. Si aucun périphérique ne met la ligne à '0', cela
signifie que le message n'a pas été convenable reçu (ou que
le consommateur a terminé sa réception).
IUT de CACHAN Les réseaux en Page 74 sur 193
H. Angelis Informatique Industrielle Version 2017

Trame élémentaire
Une trame élémentaire est composée des champs suivants :
• Un délimiteur de début de trame (Start).
• Un champ de donnée de 8 bits.
• Un bit de validation (Ack).
• Un délimiteur de fin de trame (Stop).

Bien sûr, il n'y a qu'une seule ligne SDA. Les signaux des 2 voies SDA sont donc fusionnés sur
une seule ligne. De même, on sait que chaque bit transmis nécessite un niveau haut sur l'horloge. On
peut donc ne plus représenter l'horloge et ne montrer que SDA. On arrive à la représentation suivante
pour la même trame élémentaire :

S représente bien sur le Start, A l'acquittement (et A l'absence d'acquittement) et P le Stop.


Les cases grisées sont écrites par le maître (qui ici est aussi le producteur de données) et celle en blanc
par l'esclave (qui est le consommateur).

Limites du bus I2C


Le bus I2C n'est pas à proprement parler un bus conçu pour des transmissions à grande
distance. En effet, comme il utilise des circuits électriques à drain ouvert, le niveau 'H' (récessif haut)
est obtenu par des résistances de "Pull-up".
Les nœuds du réseau, comme les lignes, sont des éléments capacitifs ce qui rend la
modélisation de la ligne comme un gros filtre RC et on connait l'effet néfaste d'un filtres passe bas sur
un signal carré…

Ce sont ces résistances qui définissent le niveau de tension de la ligne lorsque les transistors
sont bloqués. Le simple fait d'utiliser des résistances impose une définition de la capacité parasite
maximum tolérée (permettant d'atteindre le débit recherché). Cette capacité est la somme des
capacités de couplage (capacités internes des composants branchés sur la ligne) et de la capacité
linéique du canal. Selon la norme I2C, elle ne doit pas dépasser 400pF.
Page 75 sur 193 Les réseaux IUT de CACHAN
Version 2017 en Informatique Industrielle H. Angelis

Concept du bus I2C


Avant d'entrer dans le détail de la communication et les différents types de trames utilisées
sur le bus I2C, on va détailler les points importants de ce protocole.

Maître – Esclave et Consommateur – Producteur


On a vu avec SPI le concept de Maître – Esclave. Le Maître est celui qui initie l'échange et
contrôle l'horloge, l'esclave est celui qui obéi. Avec I2C, on retrouve cette même division des rôles,
mais à cette division s'en rajoute une autre : Consommateur – Producteur.
Le producteur est celui qui produit des données et le consommateur les lit. Dans une liaison
full-duplex (comme SPI), tout nœud est à la fois producteur et consommateur. Dans une liaison
half-duplex, on ne peut pas être les deux à la fois, on est soit producteur, soit consommateur, même
si les rôles peuvent s'inverser au cours de la transmission.
Avec le bus I2C, le maître est celui qui contrôle l'horloge et l'esclave celui qui la subit. Le
producteur est celui qui écrit des données sur la ligne SDA et le consommateur celui qui les acquitte.
Le producteur a besoin des acquittements réguliers du consommateur pour continuer sa transmission.

Synchronisation des échanges


Le maître du bus a pour rôle la création de l'horloge de transmission. Mais comme I2C est un
bus multi-maîtres deux nœuds peuvent vouloir parler en même temps. Il faut alors qu'ils synchronisent
leurs horloges. Pour cela, ils utilisent les états récessifs ou dominants des bits pour se caler sur une
fréquence commune de fonctionnement.
Dans l'exemple ci-contre, deux nœuds (N1 et N2)
veulent prendre la parole. Le premier a une période d'horloge
de 2▪T1, le second une période de 2▪T2.
Dans un premier temps, les 2 fournissent un niveau 'H',
on a sur SCL un niveau 'H'. Puis ils passent tous les deux à '0'
(secteur rose). SCL est donc à '0'.
Au bout d'un temps T1 le nœud N1 repasse à 'H', mais
comme N2 continue à maintenir un niveau '0', SCL reste à '0'
(secteur bleu), et le nœud N1 doit temporiser son passage à
l'état haut.
Au bout d'un temps T2, le nœud N2 repasse lui aussi au niveau 'H'. Les deux nœuds fournissent
un niveau 'H', SCL repasse à l'état haut (secteur vert).
Au bout d'un temps T1, le nœud N1 repasse à '0', entraînant SCL avec lui (secteur jaune).
Le nœud N2 détecte le passage à '0' de la ligne SCL, il redémarre immédiatement une attente de T2. On
est de retour au cas du secteur rose…
Vu la méthode utilisée, la durée de l'état bas de la ligne SCL dépend uniquement de la machine
la plus lente, tandis que la durée de l'état haut dépend uniquement de l'horloge la plus rapide.
IUT de CACHAN Les réseaux en Page 76 sur 193
H. Angelis Informatique Industrielle Version 2017

Arbitrage
Lorsque les horloges sont
synchronisées, on se retrouve dans le cas
où la ligne de donnée doit arbitrer
l'échange. C'est donc sur le contenu du
message que sera réalisé l'arbitrage.
Encore une fois, les états
récessifs sont écrasés par les états
dominants. Ainsi le message ayant le
contenu de plus faible valeur va être
aussi le plus prioritaire.
A chaque fois que SCL est à l'état
haut, tous les nœuds qui souhaitent
dialoguer sont à la lutte pour prendre la
parole. Les états dominants écrasant les états récessifs, tant que tous les nœuds disent la même chose,
l'arbitrage continue, mais lorsque l'un des nœuds place un état récessif là où d'autres place un état
dominant, il perd son arbitrage et doit attendre le prochain Stop pour tenter d'envoyer son message.
Au fur et à mesure, les nœuds sont éliminés les uns après les autres, et à la fin il n'en reste qu'un…
L'ordre des bits sur le bus I2C est Big Endian (le MSB en premier), les messages les plus
prioritaires sont ceux qui ont une valeur faible.

Protocole
Maintenant que l'on sait comment I2C se synchronise et arbitre entre les différents nœuds qui
veulent prendre la parole, il reste une dernière question : Comment communiquer, sur le bus I2C, avec
un périphérique spécifiquement ? Ou dit autrement : Comment faire pour que l'ordre que je veux
envoyer ne soit pas exécuté par tout le monde ?

Adressage 7 bits
Comme on l'a vu, le simple fait d'utiliser plusieurs nœuds sur un bus impose de définir un
moyen d'en sélectionner un parmi d'autres. Dans le chapitre sur SPI, cette sélection se faisait par un
signal spécifique, sur une liaison spécifique (le signal SS). Avec I2C, on ne dispose que de deux signaux
SCL et SDA. Il faut donc effectuer une sélection logicielle, on appelle cela l'adressage.
L'adressage consiste à réserver un certain nombre de bits du message pour définir à qui on
souhaite qu'il soit transmis, mais le problème avec le bus I2C vient de la faible longueur du champ de
donnée de sa trame (la trame I2C ne contient que 8 bits de données, pas assez pour réaliser à la fois
un adressage et une transmission de données). La solution consiste alors à assembler plusieurs champs
de données et acquittement dans une trame classique pour former une trame plus longue.
Cet assemblage commence par un bit de Start, puis on concatène des champs de données (de
8 bits) et leurs acquittements sous forme de blocs de 9 bits (8 de données et 1 d'acquittement) et on
termine par un bit de Stop. L'adressage se fait alors avec le premier octet de l'assemblage.
Reste un dernier point, la cible sera-elle consommatrice de données ou productrice ? Si c'est
le maître qui souhaite aller lire les registres de son esclave, il doit l'adresser en lui demandant de se
mettre en mode producteur, alors que s'il souhaite écrire dans les registres de son esclave, il doit
l'adresser en lui demandant de se mettre en mode consommateur.
Pour cela on utilisera le dernier bit de l'adresse (le bit de poids faible) comme identifiant de la
fonction (producteur ou consommateur) de l'esclave. Un nœud a donc 2 adresses l'une "paire" (W = 0)
pour l'écriture (du maître sur l'esclave) et une autre "impaire" (R = 1) pour la lecture.
Page 77 sur 193 Les réseaux IUT de CACHAN
Version 2017 en Informatique Industrielle H. Angelis

En gris les transmission du maître à l'esclave, en blanc le contraire.

Transmission des données par paquets


Du fait de sa faible capacité de transfert, le protocole I2C impose une transmission par paquet.
Imaginons, qu'une fois l'adressage réalisé, on soit limité à un seul octet de données, l'efficacité de
message est alors de 38% (1 Start + 8 bits d'adressage + 1 Acknowledge + 8 bits de données + 1
Acknowledge + 1 Stop = 20 bits, d'où une efficacité de 8/20).
Par contre si l'on réalise une transmission par paquet en concaténant des octets de données à
la suite le uns des autres, après un adressage, on transmet alors un grand nombre d'octets de données
sans refaire d'adressage, d'où un sérieux gain d'efficacité. Par exemple, l'émission de 10 octets de
données permet d'obtenir une efficacité de codage de 80% (correct).
Ce mode de transmission pour efficace qu'il soit, peut être dangereux car on ne limite pas le
temps de parole des nœuds dont l'un d'entre eux pourrait totalement s'accaparer le réseau. Il n'y a
toutefois pas de limite au nombre d'octets qui compose une trame.

Modes de transmissions
Transmission en Mode Simple
Dans les échanges en mode simple, l'un des maîtres du réseau s'accapare le bus pour réaliser
un transfert de données vers une seule machine.

Gris = le maître écrit sur la ligne. Blanc = l'esclave écrit sur la ligne.

Une fois que le maître a pris possession de la ligne, il commence à émettre l'octet d'adressage
(7 bits d'adresse et 1 bit de sens) puis il demande à l'esclave de confirmer l'acceptation de l'échange
(acquittement). Une fois l'adresse acceptée, le maître, selon la valeur du bit de sens, lit ou écrit
successivement l'ensemble des octets en les acquittant (ou en demandant l'acquittement, selon qu'il
est respectivement consommateur ou producteur).
Lorsque le maître est aussi le consommateur, la seule façon qu'il a d'arrêter l'échange est de
ne pas acquitter le dernier octet envoyé (tout en le conservant). Le producteur rompt alors l'échange
et arrête d'émettre, ce qui permet au maître de reprendre la main.
Le cas inverse peut se produire, si le maître émet et ne récupère pas d'acquittement pour l'un
de ses messages, il cesse immédiatement d'émettre et, si l'ensemble des données n'a pas encore été
expédié, il essaiera de contacter à nouveau la machine cible en recommençant l'adressage.
Dans tous les cas, après avoir envoyé son dernier octet ou en l'absence d'un acquittement, le
maître émet un Stop.
IUT de CACHAN Les réseaux en Page 78 sur 193
H. Angelis Informatique Industrielle Version 2017

Mode combiné
Un nœud maître peut parler à plusieurs machines, à la suite, ou modifier le sens de l'échange.
Dans ce cas, le maître à la possibilité de changer d'adressage sans avoir à rendre la ligne, c'est le mode
combiné.

Dans ce mode, avant d'émettre une nouvelle adresse, le maître émet à la fin de son précédent
message, non pas un bit d'arrêt de transmission (Stop), mais au contraire, un bit de début de
transmission (Start). On dit alors que c'est une commande de redémarrage (Start Repeated).

I2C sur la X12


Le bus I2C n'est pas implémenté par Freescale dans le microcontrôleur de la X12, mais comme
le protocole I2C est assez simple et peu rapide les concepteurs de la carte ont implémenté une version
logicielle émulant l'I2C, répondant à la norme I2C Single Master1.
Cette norme ne prend pas en compte les fonctions de synchronisation et d'arbitrage. De plus
elle est limitée à l'utilisation d'un adressage 7 bits2. Le bus I2C utilise les bits 2 et 3 du port S (port à
drain ouvert du 9S12), avec SCL sur PTS3 et SDA sur PTS2.

Fonctions enterrées
Les fonctions enterrées sont des fonctions qui sont utilisées par des fonctions de plus haut
niveau et qui peuvent donc être utilisées pour créer d'autres fonctions. Elles peuvent aussi être
modifiées (avec prudence).
• void I2C_init(void) :
o Cette fonction initialise les ports du microcontrôleur pour un fonctionnement avec le bus
I2C.
o Elle n'utilise pas de paramètres et ne retourne rien.
• void I2C_start(void) :
o Cette fonction génère une impulsion d'horloge sur SCL et produit un bit de Start sur SDA.
o Elle n'utilise pas de paramètres et ne retourne rien.
• void I2C_stop(void) :
o Cette fonction génère une impulsion d'horloge sur SCL et produit un bit de Stop sur SDA.
o Elle n'utilise pas de paramètres et ne retourne rien.
• UINT8 I2C_write(UINT8 data) :
o Cette fonction génère 9 impulsions d'horloge sur SCL en envoyant conjointement les 8 bits
de données sur SDA et en récupérant le bit d'acknowledge lors de la 9ème impulsion
d'horloge.
o On doit fournir à cette fonction l'octet à envoyer. La fonction retourne l'état du bit
d'acknowledge.

1
Voir les spécifications d'I2C (rev. 6) sur le site de NXP
2
Voir adressage 7 bits, page 76
Page 79 sur 193 Les réseaux IUT de CACHAN
Version 2017 en Informatique Industrielle H. Angelis

• UINT8 I2C_read(UINT8 ack) :


o Cette fonction génère 9 impulsions d'horloge sur SCL et lit conjointement les 8 bits de
données, puis elle envoie l'acknowledge qu'on lui a transmis lors de la 9ème impulsion
d'horloge.
o La fonction retourne l'octet qu'elle a reçu. On doit lui fournir la valeur de l'acknowledge à
envoyer. Si l'acknowledge n'est pas '1' ou '0', il est par défaut mis à '0'.

Fonctions complètes
Les fonctions complètes utilisent les fonctions enterrées pour gérer l'ensemble des tâches de
la trame I2C (Start, adressage, lecture(s) et/ou écriture(s), acquittements et Stop) dans une seule
fonction.
• UINT8 I2C_write_byte (UINT8 I2C_address,UINT8 I2C_regnum,UINT8 *I2C_val)
o Cette fonction gère l'envoi d'un octet, passé par l'adresse I2C_val, au registre I2C_regnum
de l'esclave dont l'adresse est I2C_address. Cette fonction commence par un Start et finit
par un Stop.
o Le paramètre de retour est à '1' si l'opération s'est correctement exécutée.
• UINT8 I2C_read_byte (UINT8 I2C_address,UINT8 I2C_regnum,UINT8 *I2C_val)
o Cette fonction gère la lecture d'un octet, qui sera écrit à l'adresse I2C_val, dans le registre
I2C_regnum de l'esclave dont l'adresse est I2C_address. Cette fonction commence par un
Start et finit par un Stop.
o Le paramètre de retour est à '1' si l'opération s'est correctement exécutée.
• UINT8 I2C_write_n_byte (UINT8 I2C_address,UINT8 I2C_regnum,UINT8 I2C_nbdata, UINT8 *I2C_val)
o Cette fonction gère l'envoi de plusieurs octets (le nombre est définit par I2C_nbdata),
stockés à partir l'adresse I2C_val, dans les registres à partir de I2C_regnum de l'esclave
dont l'adresse est I2C_address. Cette fonction commence par un Start et finit par un Stop.
o Le paramètre de retour est à '1' si l'opération s'est correctement exécutée.
• UINT8 I2C_read_n_byte (UINT8 I2C_address,UINT8 I2C_regnum,UINT8 I2C_nbdata, UINT8 *I2C_val)
o Cette fonction gère la lecture de plusieurs octets (le nombre est définit par I2C_nbdata),
qui seront stockés à partir l'adresse I2C_val, à partir des registres commençant à
I2C_regnum, de l'esclave dont l'adresse est I2C_address. Cette fonction commence par un
Start et finit par un Stop.
o Le paramètre de retour est à '1' si l'opération s'est correctement exécutée.

Cible I2C
La X12 dispose d'une seule cible I2C en standard, il s'agit de l'horloge temps réelle PCF8563 de
NXP®. L'horloge RTC (Real Time Clock) permet à partir d'un quartz à 32 768 Hz de contrôler une horloge
capable de gérer secondes, minutes, heures, jours, mois et années, avec la gestion d'une alarme… Elle
communique avec le microcontrôleur par le bus I2C.
L'adresse de la RTC sur le bus I2C est 0xA3 pour la lecture et 0xA2 pour l'écriture.
IUT de CACHAN Les réseaux en Page 80 sur 193
H. Angelis Informatique Industrielle Version 2017

Le bus CAN
Le bus CAN est né en 1984 dans les ateliers BOSCH, initialement conçu pour Daimler-Benz pour
des applications automobiles, il s'est au fur et à mesure étendu à d'autres domaines (réseau
d'automates, aéronautique, etc.). Les composants spécifiques CAN sont fabriqués par tous les plus
grands manufacturiers (NXP, INTEL, Freescale, Infinéon, NEC, THOMSON, Texas Instrument, etc.) et on
considère que CAN représente désormais un standard international.
CAN ou CONTROLER AREA NETWORK (réseau de contrôle local) est un protocole de
transmission série différentiel, half-duplex, asynchrone avec viol (après 5 bits) qui permet l'utilisation
de systèmes quasi temps réel pour des coûts relativement faible.
Développé pour l'automobiles, il permet de réduire les câblages internes des véhicules en
multiplexant sur une paire torsadée les informations en provenances des divers organes du véhicule,
via 3 réseaux (et parfois plus) : moteur (gestion de la motorisation), carrosserie (gestion des fonctions
périphériques, comme les clignotants, les feux, etc.) et confort (climatisation, ventilation, vitres, etc.).
Il peut autoriser des débits de 20Kbits/s sur une distance de 1000m et pour des distances plus
réduites (de l'ordre de 40m), atteindre un débit allant jusqu'à 1Mbit/s.
Les trames sont protégées par un code CRC, qui permet d'obtenir une probabilité d'erreur
rémanente (non détectés) de 4,7.10-11 (cela représente plus de 600 ans de conduite non-stop pour une
voiture).

Le protocole CSMA/NBA
Le bus CAN utilise le protocole CSMA/NBA, un protocole sans contention (arrêt de
communication suite à un conflit). Au début de chaque transmission, les nœuds participent à un
arbitrage naturel qui permet de ne donner la parole qu'à celui qui est prioritaire, sans qu'il soit
nécessaire de réémettre le message.
Pour le protocole CSMA/NBA, il existe 2 niveaux de tension correspondant au "1" et au "0"
logique, l'état "0" est obtenu par mise directe à la masse (on dit que c'est un état dominant) et l'état
logique "1" s'obtient par passage dans un élément résistif (on dit que c'est un état récessif). En cas de
confit, un état dominant l'emporte toujours sur un état récessif, l'arbitrage est donc naturel et non
destructif puisqu'il ne nécessite pas la réémission du message qui a gagné l'arbitrage. D'où le nom de
ce protocole (NBA = Non-destructive Bitwise Arbitration ou arbitrage bit à bit non destructif).
Chaque nœud, lorsqu'il émet, lit aussi l'état du bus. Comme les états dominants écrasent les
états récessifs, si un nœud envoi un état récessif et qu'il lit un état dominant, il sait qu'il a perdu
l'arbitrage et arrête alors de transmettre.
Emetteur A R R R D R D R D R D
Emetteur B R R R R
Emetteur C R R R D R R
état du bus R R R D R D R D R D
Dans l'exemple ci-dessus 3 nœuds veulent prendre la parole, les machines B et C sont éliminées
peu à peu au cours de l'émission des bits de A. Le résultat final est celui envoyé par A.
Cette méthode reste teinté d'une connotation aléatoire, on ne peut en effet pas prédire en
combien de temps une machine peut transmettre un message, la seule chose qui soit sure, c'est que
plus "l'index" contient des bits dominants au début, plus le message devient prioritaire.
Page 81 sur 193 Les réseaux IUT de CACHAN
Version 2017 en Informatique Industrielle H. Angelis

Les trames CAN


Les communications sur le réseau CAN sont réalisées grâce à 4 trames différentes, chaque
trame transmettant une information spécifique (données, requêtes, surcharges ou erreurs).
Les trames de données transmettent des informations sous la forme d'octets, elles peuvent
emporter jusqu'à 8 octets de données par trame. Elles ont été pensées pour le multicast grâce à un
système non pas d'adressage, mais d'indexation (on ne dit pas à qui on envoi l'information, mais quelle
est l'information que l'on envoie).
Les trames de requête permettent à un nœud de demander la transmission de données sans
identifier qui doit les fournir (là encore en utilisant un index).
Les trames de surcharges permettent de bloquer la transmission pour qu'un nœud lent ait le
temps de traiter les données. Avec l'évolution des microcontrôleurs et en particulier l'augmentation
de leur puissance, les trames de surcharges ne sont quasiment plus utilisées.
Les trames d'erreur permettent de gérer l'élimination des nœuds défaillants du réseau. Elles
se décomposent entre les trames d'erreur active et les trames d'erreur passive.

La trame de données CAN 2.0A


La trame de données au format CAN 2.0A est composée de 13 champs.

Le délimiteur de début
Le délimiteur de début (Start) permet de définir le début de la trame. Il est constitué d'un
simple bit dominant ('0'). Il fait partie de la zone d'arbitrage, mais comme il vaut toujours '0', son rôle
est limité…

L'index ou l'identifiant
L'index est le champ qui définit le contenu du
message. A la différence des réseaux où on utilise un
adressage pour identifier qui est l'émetteur et qui est le
récepteur, dans le bus CAN, on donne comme identité au
message le nom de l'information qu'il contient. Par
exemple, si on a sur une voiture le schéma ci-contre, avec
3 capteurs, on aura alors au moins 3 index :
• Temp. H2O (température de l'eau)
• Temp. Huile (température de l'huile)
• Pres. Huile (pression de l'huile)
Les calculateurs n'ont pas à priori besoin d'index (sauf si on veut leur parler directement). Il y
aura bien sur d'autres index sur ce réseau, par exemple pour le calculateur de la pompe à huile, on
aura surement un index correspondant à la commande de la pompe ou pour le régulateur de
température, une commande du ventilateur ou du calorstat.
IUT de CACHAN Les réseaux en Page 82 sur 193
H. Angelis Informatique Industrielle Version 2017

Imaginons maintenant que le capteur (intelligent)


de pression d'huile décide d'envoyer (tout seul)
l'information de la pression d'huile, il va émettre un
message avec comme index "Pres. Huile" (qui est bien sur
associé à une valeur numérique).
Ce message est diffusé sur l'ensemble du réseau,
mais le seul nœud à être intéressé par cette information
est le contrôleur de la pompe à huile. Ce sera donc le seul
qui lira le message, qui contient dans son champ de
données l'information de la pression de l'huile dans le
moteur.
Si maintenant le capteur de température d'huile
envoie à son tour son information sur le réseau, la trame
avec comme index "Temp. Huile" se diffuse sur le réseau
et les 2 calculateurs (contrôleur de pompe à huile et
régulateur de température) vont la capter.
Le principe de l'index n'est donc pas de définir
d'où viennent et où vont les données, mais bien quelle est
la donnée.
C'est aux nœuds de connaitre les index qui les
intéressent. Dans notre exemple le contrôleur de la pompe à huile sera sensible à la pression de l'huile
et à la température de l'huile et le régulateur de température sera sensible aux températures d'eau et
d'huile. Les messages sont donc filtrés à destination et non à la source comme on le fait avec un
adressage.
Le champ d'index est composé de 11 bits. Le premier bit transmis est le MSB (ID10) et le dernier
le LSB (ID0).

Le bit RTR
Le bit RTR (pour Remote Transmission Request ou requête de transmission à distance) permet
de distinguer les trames de données des trames de requête. Lorsque le bit est à '0' on est face à une
trame susceptible de contenir des données (ce n'est pas obligatoire). Lorsque le bit est à '1', il s'agit
d'une trame de requête, donc sans données (lorsqu'on réclame des informations, c'est que l'on n'en a
pas, donc il est logique de ne pas en transmettre).

La zone d'arbitrage
La zone d'arbitrage est composée de 13 bits : Le bit de Start, les 11 bits d'identification et le bit
RTR. Dans les faits, comme le bit de Start est à '0' quel que soit le message, l'arbitrage se fait sur les 12
bits de l'index et le RTR.
Le principe de l'arbitrage a été vu dans l'étude du protocole CSMA/NBA. Il repose sur le fait
qu'un bit dominant écrase un bit récessif sans que le bit dominant ne soit altéré. Lorsque plusieurs
nœuds veulent prendre la parole, ils envoient tous en même temps leur bit de Start, puis ils envoient
un à un les bits de l'index. Au fur et à mesure de la transmission de l'index, l'arbitrage s'opère pour ne
donner la parole qu'au message de plus haute priorité (celui qui a l'identifiant le plus faible).
Du fait de l'utilisation d'un index, il ne peut il y avoir qu'une seule source pour un identifiant.
Pour reprendre l'exemple donné dans l'étude de l'index, si l'on avait 2 capteurs de température de
l'eau, il y aurait alors 2 index, l'un pour le premier capteur et un pour le second (sinon c'est une grave
faute de conception). Dans ces conditions, à la fin du champ d'index, il ne peut rester qu'un seul
identifiant, mais pas forcément une seule source.
Page 83 sur 193 Les réseaux IUT de CACHAN
Version 2017 en Informatique Industrielle H. Angelis

Si 2 nœuds émettent le même identifiant (ce qui peut arriver), cela signifie qu'au moins un des
deux envoie une requête. On peut avoir 2 requêtes, ou une requête et une donnée, mais en aucun cas,
on peut avoir 2 trames de données, puisqu'un identifiant n'a qu'une seule source de données.
L'arbitrage se fait alors sur le bit RTR. Posons-nous la question : si A se propose d'envoyer
l'information que B demande, vaut-il mieux temporiser l'envoi de la donnée pour permettre à A de
savoir que quelqu'un veut ses données (qu'il devra émettre plus tard, et peut être même beaucoup
plus tard si le message est très peu prioritaire, puisque la requête aura pris la place des données dans
la transmission) ? Ou vaut-il mieux que A envoie immédiatement ses données (attendues avec
impatience par B) ?
Théoriquement avec ce genre de question orientées on est sur du résultat, la réponse est : la
trame de donnée doit être plus prioritaire que la trame de requête… Donc le bit RTR dominant ('0') est
associé à la trame de données et le bit RTR récessif ('1') est associé à la trame de requête.

Le bit IDE
Historiquement la trame CAN avait le format que nous lui connaissons (voir page XX) appelée
trame CAN Standard ou CAN 2.0A. Mais avec 11 bits d'index, on ne dispose que de 2048 identifiants,
ce qui est un peu limitant. Le problème des index par rapport aux adresses, c'est qu'il en faut beaucoup.
L'industrie automobile ayant besoin de plus de bits d'identification, elle a proposé la norme CAN 2.0B
(que l'on étudiera plus loin) ou Peli-CAN, qui a un identifiant sur 29 bits.
Pour identifier la trame qui circule, on a utilisé un des bits de contrôle que l'on a nommé IDE
(pour Identification Extended). Le bit IDE est à '0' pour les trames CAN 2.0A et à '1' pour les trames
CAN 2.0B.

Le bit R
Le bit R (pour Reserved) est un bit sans rôle dans l'état actuel de la norme CAN. Il vaut '0'.

Le DLC
Le DLC (pour Data Length Code ou Code de longueur des données) est un champ de 4 bits, qui
permet le codage de la longueur du champ de données du message (en octet).
Taille du mot de
DLC3 DLC2 DLC1 DLC0 Code
donnée
0 octet D D D D 0
1 octet D D D R 1
2 octets D D R D 2
3 octets D D R R 3
4 octets D R D D 4
5 octets D R D R 5
6 octets D R R D 6
7 octets D R R R 7
8 octets R D D D 8
La transmission se fait selon le mode Big-Endian (DLC3 en premier DLC0 à la fin)

Le champ de données
Le champ de données est composé de 0 à 8 octets de données. La taille de ce message est
définie par 4 bits du champ DLC.
IUT de CACHAN Les réseaux en Page 84 sur 193
H. Angelis Informatique Industrielle Version 2017

Le CRC
Le CRC (Cyclical Redundancy Check ou Code à redondance cyclique) est le reste sur 15 bits de
la division polynomiale modulo 2 de tous les bits depuis le bit de Start jusqu'au dernier bit de données.
La définition du polynôme générateur est donnée par la formule :
CRC-15
width=15 poly=0x4599 init=0x0000 refin=false refout=false xorout=0x0000 check=0x059e
name="CRC-15"
Le polynôme 0x4599, soit (1)100 0101 1001 1001, s'écrit en représentation Koopmann
0x62CC, soit 110 0010 1100 1100 (1) donc un polynôme :
𝐺(𝑥) = 𝑥 15 + 𝑥 14 + 𝑥 10 + 𝑥 8 + 𝑥 7 + 𝑥 4 + 𝑥 3 + 1
Sa distance de Hamming est de 6, il permet donc de détecter jusqu'à 5 erreurs isolées dans un
message, et toujours les nombres impairs d'erreurs (nombre de bits à '1' pair) et les salves d'erreurs
de moins de 15 bits.
Le CRC est calculé sans prendre en compte les bits ajoutés par le bit stuffing.

La zone de bit stuffing


Dans la zone de bit stuffing, le bus CAN assure une synchronisation efficace de son message
en ajoutant des bits à '0' ou à '1' supplémentaires à chaque série de plus de 5 bits respectivement à '1'
ou à '0'.

Maintenant une question piège : que se passe-t-il si on a 5 bits à '0' suivi de 4 bits à '1' et de 4
bits à '0' ? La réponse est juste au-dessous :

La première série de 5 bits à '0' déclenche l'ajout d'un bit de bourrage à '1'. Ce bit associé aux
4 bits à '1' crée une série de 5 bits à '1', qui déclenche l'ajout d'un bit de bourrage à '0', qui associé aux
4 bits à '0' crée une série de 5 bits à '0', qui déclenche l'ajout d'un bit de bourrage à '1'…
Rassurez-vous, ce n'est pas vous qui ajouterez des bits de bourrage, mais le contrôleur CAN, et
de même ce sera lui qui les éliminera à la réception pour revenir au message d'origine…

Le bit CRC DEL


Le CRC DEL (pour CRC Delimiter ou marqueur de fin de CRC) est un simple bit récessif ('1') à la
fin du CRC qui permet au nœud de vérifier le CRC et de déclencher une erreur le cas échéant, si le
résultat de son calcul est différent de celui reçu.
Page 85 sur 193 Les réseaux IUT de CACHAN
Version 2017 en Informatique Industrielle H. Angelis

Le bit ACK SLOT


Le bit ACK SLOT, noté ACK (pour Acknowledge, acquittement en Français) permet de valider la
transmission du message. Attention, il s'agit bien d'une validation de la transmission, pas de la
réception. Aussi étrange que cela puisse paraître, le bus CAN ne valide pas le fait que le récepteur ait
bien reçu le message, mais le fait que l'émetteur l'ait bien envoyé.
Autrement dit tous les nœuds, y compris ceux qui ne sont pas impliqué dans la communication,
doivent valider que le message a été bien envoyé et pas seulement le destinataire du message, et cela
pour une raison simple, le système d'élimination des nœuds défaillant.
Comme on le verra plus loin, le bus CAN a la capacité d'éliminer les nœuds qui commettent
trop d'erreurs. Dès lors si seul le récepteur est apte à valider un message, alors la défaillance du
récepteur risque de déclencher la défaillance de l'émetteur qui en l'absence d'acquittement pourrait
comprendre cela comme une erreur de transmission de sa part.
Le processus d'acquittement repose lui aussi sur l'écrasement d'un bit récessif (envoyé par
l'émetteur) par un bit dominant (envoyé par tous les nœuds qui ont vu une transmission correcte).

Le bit ACK DEL


Le bit ACK DEL (pour Acknoledge Delimiter, ou délimiteur d'acquittement) est un simple bit
récessif (à '1') et qui n'a pas de rôle, à part celui de permettre au contrôleur de s'assurer qu'il a bien
reçu un acknowledge et potentiellement de déclencher une erreur s'il n'en a pas reçu.

Le Stop
Le Stop est un champ composé de 7 bits à l'état récessif (à '1') et qui marque la fin de la trame.
On verra plus tard le rôle de cette séquence dont la longueur peut paraître surprenante.

L'inter-trame
Bien qu'inscrit sur le graphe de la page XX sous le nom d'idle, le champ se nomme : inter-trame.
C'est un champ obligatoire composé de 2 parties : La première partie est appelée entracte, elle est
composée de 3 bits récessifs (à '1') la seconde est appelée le repos (idle en Anglais) et n'a pas de taille
fixe. Elle peut donc être interrompue à tout moment par un bit de Start.

Les trames de requête


Les trames de requête sont composées comme les trames de données à une petite différence
prêt, elles n'ont pas de champ de données. Le DLC est totalement libre et n'a plus de signification, on
peut donc y inscrire n'importe quelle valeur.
Le champ d'arbitrage est composé, comme pour une trame de donnée des 11 bits
d'identification et du bit RTR qui est obligatoirement récessif (à '1').
En réponse à une trame de requête (sous réserve qu'il n'y ait pas d'erreur de transmission), le
nœud concerné (c'est-à-dire producteur des données associées à l'index de la trame de requête)
répondra par une trame de données avec le même index que celui de la requête, ou pour être encore
plus clair : la trame de requête doit avoir l'identifiant de la donnée qu'elle souhaite récupérer.
IUT de CACHAN Les réseaux en Page 86 sur 193
H. Angelis Informatique Industrielle Version 2017

Les trames CAN 2.0B


La trame CAN 2.0B diffère de la trame CAN 2.0A par la présence d'un champ d'index étendu
en plus du champ d'index classique et de quelques modifications annexes des champs de contrôle.

L'index se compose alors de 29 bits soit environ 512 millions d'identifiant différents. Dans la
première zone (celle de 11 bits), on trouve les index ID28 à ID18 et dans la zone suivante, on trouvera
respectivement de gauche à droite, les bits ID17 à ID0.
Les autres modifications sont liées à la présence du bit SRR (Substitute Remote Request, ou
remplaçant de requête à distance) qui est un bit récessif (à '1') et qui est installé à la place du bit RTR,
lui-même placé après le champ d'index étendu.
Le bit IDE est cette fois ci à '1' et on voit apparaitre un bit R1 qui comme R0 est à '0'.

Champs des trames CAN 2.0A

Les trames d'erreurs


Dans la norme CAN il existe 2 types de trames d'erreur qui dépendent de l'état du nœud (on
les étudiera en détail dans le chapitre suivant). Les trames d'erreurs sont composées de 2 champs :
• Le ERROR FLAG : une zone de 6 bits dont la valeur dépend de de l'état du nœud qui
l'émet et qui n'est pas monitorée (le nœud ne vérifie pas que ce qu'il envoi est bien
sur la ligne)
• Le ERROR DELIMITER : une zone de 8 bits à l'état récessif que le nœud monitore (il doit
voir 8 bits consécutif à '1' pour confirmer que le ERROR DELIMITER a été envoyé).
Après une trame d'erreur il y a obligatoirement un inter-trame de 3 bits, où les nœuds
attendent 3 temps bit avant de reprendre le dialogue.
Page 87 sur 193 Les réseaux IUT de CACHAN
Version 2017 en Informatique Industrielle H. Angelis

Les trames de surcharge


Les trames de surcharge ont quasiment disparues du bus CAN où le débit du réseau est
globalement inférieur à la vitesse de traitement des microcontrôleurs. Je ne les cite donc que pour
information et je vous renvoie à la documentation du bus CAN si vous voulez en savoir plus…

Gestion des erreurs


L'activité principale du bus CAN est l'automobile, on comprend alors facilement le soin qui a
été porté à la gestion des erreurs, car dans l'automobile une défaillance est toujours un problème pour
le constructeur, qui est généralement jugé sur la robustesse de ses véhicules. On doit donc rendre les
éléments du réseau efficace vis à vis de la détection d'erreur. Dès lors la gestion des erreurs est un
processus assez complexe mais extrêmement efficace.

Les erreurs
Chaque nœud du réseau CAN peut détecter 5 types d'erreurs.
• Les BIT ERROR ou erreurs de bits sont liées à la lecture par l'émetteur d'un bit différent
de celui qu'il émet. Cette erreur est désactivée pendant l'arbitrage ou l'acquittement.
• Les ACK ERROR (NO ACK) ou erreurs d'acquittement apparaissent lorsque le ACK SLOT
n'est pas passé à un état dominant après l'envoi d'un message.
• Les STUFF ERROR ou erreur de bit stuffing signifient que le nœud a détecté une série
de 6 bits consécutifs dans le même état.
• Les CRC ERROR ou erreurs de CRC apparaissent lorsque le champ de CRC ne
correspond pas aux données transmises.
• Les FORM ERROR ou erreurs de forme sont émises lorsque la trame n'est pas conforme
au format prédéfini (trame trop courte par exemple).

Les états
Chaque nœud dispose de 3 états de fonctionnement :
• L'état actif, qui est l'état normal de fonctionnement.
• L'état passif qui est un mode qui se différencie du mode actif par le signalement des
erreurs, qui se fait en envoyant des trames d'erreur passive.
• L'état déconnecté (état Off) qui interdit au contrôleur d'émettre (et d'acquitter).

Les trames d'erreur


Comme on l'a vu la trame d'erreur est composée de 2 champs, le ERROR FLAG et le ERROR
DELIMITER. Ce dernier est toujours composé de 8 bits à '1', tandis que le ERROR FLAG dépend de l'état
du nœud.

Ces deux trames d'erreur violent la règle du bit stuffing et ne lui sont pas soumises. Les trames
d'erreurs sont impérativement suivies d'un inter-trame de 3 temps bit pendant lesquels le bus est
laissé libre (donc à '1').
IUT de CACHAN Les réseaux en Page 88 sur 193
H. Angelis Informatique Industrielle Version 2017

Les compteurs d'erreur


Chaque nœud dispose de 2 compteurs d'erreurs, un en
réception (REC, pour Reception Error Counter), l'autre en émission
(TEC, pour Transmission Error Counter).
C'est compteurs évoluent en fonction des erreurs (ou de
l'absence d'erreur) entre 0 et 255. Ce sont eux qui déterminent l'état
du nœud (comme montré sur le diagramme ci-contre).
Un nœud est actif tant que ses deux compteurs restent
inférieurs à 128. Dès que l'un d'eux passe le seuil de 128, le nœud
devient passif, et il le reste tant que ses deux compteurs ne sont pas
repassés sous 128 ou que le compteur d'erreur de transmission (TEC)
n'a pas atteint 255.
Il est possible de quitter l'état Off pour revenir à l'état actif, en recevant 128 fois 11 bits à '1'
consécutivement, ce qui signifie qu'aucun nœud ne communique plus sur le réseau (en automobile
cela correspond à un arrêt, moteur coupé, du véhicule).

Règle de comptage de l'émetteur


Les règles de comptage de ces compteurs est assez complexe mais il faut retenir que l'émetteur
incrémente son compteur d'erreur de transmission (TEC) de 8 à chaque erreur (sauf un cas que l'on
verra juste après). Par contre si la transmission s'est effectuée sans erreur, le compteur se décrémente
d'une unité.
La seule exception à cette règle est l'absence de ACK lorsque l'émetteur est à l'état passif. Dans
ce cas, le compteur d'erreur ne s'incrémente pas.
Par cette règle, si le nœud est seul sur le réseau, il ne passe pas à l'état Off. Mais si une machine
prend la parole pendant que l'émetteur était en train de traiter son erreur NO ACK, le compteur
s'incrémentera de 8 unités.
Le moyen de savoir si l'émetteur doit incrémenter ou pas son compteur est simplement de voir
si le ERROR DELIMITER est séparé du ERROR FLAG. Si c'est le cas, cela signifie que quelqu'un parle (donc
qu'il s'agit bien d'une erreur de transmission), sinon cela signifie que le nœud est seul sur le réseau (et
qu'il ne s'agit donc pas d'une erreur de sa part).

Règle de comptage du récepteur


Là encore les règles sont assez complexes, la règle de base est : si une erreur se produit, on
incrémente le compteur d'erreur de réception (REC) de 1 et il se décrémente de 1 à chaque
transmission réussie.
L'exception à cette règle est assez obscure à comprendre, mais s'explique à postériori plutôt
facilement : Si le nœud doit temporiser de plus d'une période l'envoi de son ERROR DELIMITER après
avoir envoyé son ERROR FLAG, alors le compteur d'erreur de réception s'incrémente de 8 et non de 1.
L'explication à cette règle tient au fait que si un nœud ne déclenche pas d'erreur en même
temps que les autres, c'est qu'il est suspect. Or le seul moyen de savoir si tout le monde est du même
avis consiste à surveiller le décalage entre le ERROR FLAG et le ERROR DELIMITER (on verra dans les
exemples qui suivent que cela s'applique parfaitement). S'il est supérieur à une période cela signifie
obligatoirement que d'autres nœuds n'avaient pas détecté l'erreur.
Page 89 sur 193 Les réseaux IUT de CACHAN
Version 2017 en Informatique Industrielle H. Angelis

Processus de traitement des erreurs de réception


Empilement des trames d'erreur actives
Lorsqu'un nœud (B dans notre exemple ci-dessous) détecte une erreur, il émet
immédiatement une trame d'erreur, en interrompant la transmission du message (émis par A dans
notre exemple), du moins si la machine est à l'état actif.
B commence l'émission de sa trame d'erreur (en rouge). Cela entraine la détection d'une erreur
de type BIT ERROR sur A, qui émet à son tour une trame d'erreur (en vert) décalée par rapport à la
première.

L'accumulation des bits à '0' du ERROR FLAG déclenche finalement sur les autres nœuds (ici il
n'y en a qu'un de représenté, c'est C) une erreur de type STUFF ERROR (en bleu).
Pendant ce temps B a fini d'envoyer les 6 bits de son ERROR FLAG et commence à émettre les
bits à '1' de son ERROR DELIMITER, mais ils sont écrasés (nombres gris) par les ERROR FLAG des autres
nœuds. Il doit alors temporiser l'émission de son ERROR DELIMITER.
Lorsque tous les nœuds ont émis leurs ERROR FLAG, ils commencent tous en même temps
l'émission des 8 bits de leurs ERROR DELIMITER. Puis après un inter-trame, A retente la transmission
de son message en envoyant un bit de Start (à '0').
Comme on peut le voir dans cet exemple, les erreurs commencent à des moments différents,
mais tous les nœuds sont resynchronisés à la fin du traitement de l'erreur.

Gestion des compteurs d'erreur


Le nœud à l'origine du déclenchement de l'erreur (B) incrémente son compteur d'erreur en
réception (REC) de 8, l'émetteur (A) incrémente son compteur d'erreur de transmission (TEC) de 8 et
les autres nœuds (C) incrémentent leurs compteurs d'erreur de réception (REC) de 1.
Il peut sembler surprenant que B et C n'incrémentent pas leurs compteurs d'erreur de la même
manière, mais cela se comprend par la volonté d'éliminer les nœuds défaillants. Or quand on regarde
l'exemple précédent, on se rend compte que B a déclenché une erreur sans raison et sans que d'autres
nœuds aient détecté la moindre erreur. Il est donc probable que B soit défaillant.
Le principe d'incrémentation des compteurs d'erreur vu précédemment s'illustre alors
parfaitement : pour un nœud en réception, le fait de devoir temporiser de plus d'une période,
l'émission de son ERROR DELIMITER, l'oblige à incrémenter son compteur d'erreur de réception de 8
unités.
IUT de CACHAN Les réseaux en Page 90 sur 193
H. Angelis Informatique Industrielle Version 2017

Etat passif
Dès que l'un des compteurs d'un nœud atteint ou dépasse la valeur 128, le composant bascule
à l'état passif (le basculement se fait à la fin de la gestion de l'erreur). Dès lors, il n'est plus en capacité
de signaler une erreur puisqu'il n'émet plus que des bits à '1' dans la trame d'erreur.
Si on reprend l'exemple précédent (où la machine B déclenche une erreur lors d'une
transmission de A), si B est en mode passif, le comportement est radicalement différent.

Comme B est en mode passif, lorsqu'il détecte une erreur (fictive puisque les autres ne la
détectent pas), il émet son ERROR FLAG passif composé de 6 bits à '1'. Comme il ne monitore pas
l'envoi de ce champ sur le bus CAN, on retrouve sur le bus le message envoyé par A qui a écrasé le flag
d'erreur envoyé par B.
Une fois les 6 bits du ERROR FLAG passés, le nœud B doit temporiser l'envoi de son ERROR
DELIMITER, car A continue d'envoyer son message. Or le dernier bit à '0' dans une transmission
normale est le bit ACK (mis à '0' par les nœuds qui n'ont pas détecté d'erreur).
Juste après le ACK, on va trouver une série de 8 bits à '1' (le ACK DELIMITER, puis les 7 bits de
STOP), exactement la taille du ERROR DELIMITER. Tous les nœuds sont alors resynchronisés (d'où
l'explication d'un Stop de 7 bits de long).
Si on regarde alors le comptage d'erreur, on voit que seul le nœud B a détecté une erreur et,
comme il a dut temporiser l'envoi de son ERROR DELIMITER, il a incrémenté son compteur d'erreur de
réception de 8. Les autres n'ont pas détecté d'erreur et ont donc décrémenté d'une unité leurs
compteurs (TEC pour A et REC pour C).
Page 91 sur 193 Les réseaux IUT de CACHAN
Version 2017 en Informatique Industrielle H. Angelis

Evolution des nœuds


Si on résume, dans un tableau l'évolution des compteurs on arrive au tableau suivant :
Machine A Machine B Machine C
numéro d'étape
REC TEC REC TEC REC TEC
Etape 0 0 0 0 0 0 0
Etape 1 0 8 8 0 1 0
Etape 2 0 16 16 0 2 0
… … … … … … …
Etape 15 0 120 120 0 15 0
Etape 16 0 128 128 0 16 0
Etape 17 0 127 136 0 15 0
… … … … … … …
Etape 31 0 113 248 0 1 0
Etape 32 0 112 255 0 0 0

• Etape 0 : Les 3 machines sont à l'état initial, leurs compteurs sont tous à 0, la machine
A souhaite transmettre, mais la connexion du nœud B est défaillante et elle
déclenchera donc systématiquement une erreur à chaque transmission.
• Etape 1 : A commence à émettre son premier message. Comme B est défaillant, il
déclenche une erreur, qui, par effet domino, va déclencher une erreur sur A
puis sur C. Les compteurs d'erreur de A et de B s'incrémente de 8 unités tandis
que celui de C s'incrémente de 1 unité.
• Etape 2 : Comme le message de A n'a toujours pas été transmis, le nœud retente une
transmission (et il le fera tant que le message n'aura pas été transmis), B
toujours défaillant crée à nouveau une erreur. Les compteurs s'incrémentent
à nouveau.
• Etape 15 : A n'a toujours pas réussi à envoyer son message, il continue d'envoyer son
message avec toujours le même effet.
• Etape 16 : Suite à une nouvelle transmission de A, une erreur fait passer les nœuds A et
B en mode passif. Désormais, même si tous les nœuds peuvent toujours
détecter les erreurs, A et B n'envoient plus que de trames passives et seul C
peut encore envoyer des trames actives.
• Etape 17 : A émet à nouveau son message et B détecte encore une erreur, mais comme
il est à l'état passif, sa trame d'erreur n'empêche pas la transmission.
C acquitte la trame envoyée par A. Donc A et C ont le droit de décrémenter
leurs compteurs (respectivement TEC pour A et REC pour C) d'une unité. A
repasse à l'état actif. B par contre incrémente son compteur de 8 et reste donc
à l'état passif. Les communications se déroulent désormais normalement.
• Etape 31 : A continue à émettre, sans plus être gêné par B (qui émet uniquement des
trames passives). Son compteur d'erreur revient lentement vers 0, mais B est
quasiment arrivé à la limite de comptage de son compteur d'erreur.
• Etape 32 : C'est la 32ème erreur consécutive de la machine B en réception, son compteur
d'erreur de réception a atteint 255. Le nœud C est de retour à l'état initial et A
continue sa remontée vers son niveau initial.
Si on analyse ce qui vient de se passer, on voit qu'au bout de 16 erreurs successives, le nœud
défaillant en réception a été "empêché de nuire" aux communications des autres. Mais que se passe-
t-il si le nœud défaillant est, non pas récepteur, mais émetteur ?
IUT de CACHAN Les réseaux en Page 92 sur 193
H. Angelis Informatique Industrielle Version 2017

Processus de traitement des erreurs de transmission


Erreurs de CRC
Revenons à notre exemple précédent mais avec cette fois ci le nœud A comme émetteur et les
autres en récepteur. Imaginons aussi une défaillance du nœud A. Par exemple, A n'a qu'un contact
intermittent avec le bus. Il peut il y avoir 2 types d'erreurs alors, des erreurs de CRC ou des erreurs de
forme (par exemple un DLC différent du nombre réel d'octets transmis, où un bit qui n'a pas la valeur
théorique qu'il devrait avoir). Commençons par l'erreur de CRC.

Dans cet exemple, les nœuds B et C ont calculé un CRC différent de celui reçu, ils réagissent en
envoyant une trame d'erreur de CRC.
Le nœud émetteur détecte un '0' à la place de son CRC DELIMITER (qui aurait dut être à '1'). Il
déclenche alors une trame d'erreur BIT ERROR.
Lorsque B et C ont fini de transmettre leur ERROR FLAG, ils sont obligés de temporiser l'envoie
de leur ERROR DELIMITER pour attendre la fin du ERROR FLAG de A.
Lorsque A a terminé l'envoi de son ERROR FLAG, tous les nœuds émettent alors leurs ERROR
DELIMITER, puis il y a un inter-trame et A, qui n'a toujours pas envoyé son message, retente une
transmission.
Avant de commencer une nouvelle transmission, l'émetteur va incrémenter son compteur
d'erreur de transmission (TEC) de 8 et les récepteurs ne vont incrémenter leurs compteurs d'erreur de
réception que de 1, car ils n'ont pas eu à temporiser l'envoi de leur ERROR DELIMITER de plus d'un
temps bit.
A force d'envoyer des messages erronés, le compteur d'erreur de transmission va finir par
atteindre 128 et le nœud A va passer à l'état passif. Il dispose alors des mêmes fonctionnalités qu'à
l'état actif, à la simple différence que son ERROR FLAG est uniquement composé de bits à '1'.
Cette différence peut sembler sans importance, mais elle a un effet important, lorsque A envoi
à nouveau son message, alors les trames émises par les nœuds B et C vont introduire un décalage qui
va faire perdre la parole à l'émetteur.
Page 93 sur 193 Les réseaux IUT de CACHAN
Version 2017 en Informatique Industrielle H. Angelis

Comme on le voit, l'émetteur vient de perdre la parole, le nœud défaillant qui monopolisait le
bus avec un message dont l'identifiant était très faible, n'empêche plus la communication des autres
nœuds dès qu'il passe à l'état passif.
Qui plus est, comme pour lui l'inter-trame n'a pas été respecté, il déclenche une erreur
immédiatement au début de la trame de C qui augmente son compteur d'erreur en réception.
Le nœud A a perdu la parole pour un tour (puisqu'il doit gérer une erreur de forme, qui ne
s'achèvera qu'à la fin de la trame suivante), mais il pourra alors reprendre la parole et tenter à nouveau
d'envoyer son message dès la fin de la transmission de C.
Si on regarde l'évolution des compteurs d'erreurs, on voit que le nœud A s'enfonce assez vite
vers l'état Off.
Machine A Machine B Machine C
numéro d'étape
CER CET CER CET CER CET
Etape 0 0 0 0 0 0 0
Etape 1 0 8 1 0 1 0
… … … … … … …
Etape 15 0 120 15 0 15 0
Etape 16 0 128 16 0 16 0
Etape 17 8 136 17 0 17 0
… … … … … … …
Etape 31 120 248 31 0 31 0
Etape 32 120 255 32 0 32 0
Dès la 17ème étape, le nœud A ne monopolise plus le bus, et à la 32ème étape, il passe à l'état
Off et ne communique plus du tout.
IUT de CACHAN Les réseaux en Page 94 sur 193
H. Angelis Informatique Industrielle Version 2017

Erreurs de forme
A émet sa trame, mais vu des nœuds B et C, elle ne respecte pas la forme de la trame CAN. Ils
détectent une erreur de forme et émettent alors leur ERROR FLAG.

Au bout d'un moment (qui dépend du message qu'il envoie), A fini par détecter une erreur de
bit et émet à son tour son ERROR FLAG.
Lorsque B et C ont terminé l'envoi de leurs ERROR FLAG et cherche à envoyer leurs ERROR
DELIMITER, mais celui-ci est écrasé par les bits dominants du ERROR FLAG de A et ils doivent
temporiser l'envoi de leurs DELIMITER.
Lorsque A a terminé d'envoyer son ERROR FLAG, tous les nœuds envoient leurs ERROR
DELIMITER et la transmission recommence, sauf que A, B et C ont incrémenté leurs compteurs d'erreur
de 8 unités (pas obligatoirement pour B et C, qui auraient pu ne pas avoir de décalage).
Si les échanges continuent de la même manière, avec de forts décalages, on arrive à une
évolution des compteurs où tous les nœuds passent à l'état passif. Dès lors le comportement devient
différent :

Dans cet échange les nœuds B et C ont détecté une erreur très tôt dans la trame de A. Ils ont
émis leurs ERROR FLAG puis ont mis leurs ERROR DELIMITER en attente. Après le dernier bit à '0' de la
trame (j'ai choisi arbitrairement de le faire commencer au CRC DEL, mais cela aurait pu être avant), ils
commencent à égrener les bits de leurs ERROR DELIMITER. Pendant ce temps A qui n'a pas reçu
d'acquittement a commencé à envoyer son ERROR FLAG.
Page 95 sur 193 Les réseaux IUT de CACHAN
Version 2017 en Informatique Industrielle H. Angelis

Quand B et C ont terminé avec la gestion de la trame d'erreur et de l'inter-trame, C se met à


émettre. Il se passe alors 2 choses pour A : Il vient de perdre la parole sans même le savoir (il a
commencé la gestion de son erreur, elle s'achèvera à la fin de la trame de C), mais aussi comme il y a
une communication suite à une erreur de ACK en mode passif, alors il incrémente son compteur de 8.
Finalement A, B et C se resynchroniseront à la fin de la trame de C et A reprendra alors la
parole.
Si on regarde l'évolution des compteurs d'erreur on arrive au tableau suivant :
Machine A Machine B Machine C
numéro d'étape
CER CET CER CET CER CET
Etape 0 0 0 0 0 0 0
Etape 1 0 8 8 0 8 0
… … … … … … …
Etape 15 0 120 120 0 120 0
Etape 16 0 128 128 0 128 0
Etape 17 0 136 127 0 136 0
… … … … … … …
Etape 31 0 248 127 0 248 0
Etape 32 0 255 127 0 255 0
Il y a des choses surprenantes :
• Le compteur d'erreur de B reste à 127 : Une règle du comptage d'erreur (que je n'ai
pas encore citée) dit qu'une machine dont le REC a dépassé 128 et qui reçoit un
message convenablement revient automatiquement entre 119 et 127 (donc quitte le
mode passif)…
• C réussi des transmissions et pourtant, son compteur ne diminue pas : La règle
précédente parle uniquement du REC, pas du TEC et de réception, pas de
transmission…C subit des erreurs de réception, et des réussites en transmission… On
aurait eu quelques nœuds supplémentaires avec des messages à envoyer et C serait
juste un peu passif, et ne suivrait pas A dans sa chute.
• C ne passe pas à l'état Off : C'est le REC de C qui atteint 255 pas son TEC, il n'a donc
aucune raison de passer à l'état Off.
A partir de l'étape 17, le nœud A laisse passer une trame en perdant la parole
systématiquement après chaque transmission. A partir de l'étape 32, il ne gêne plus personne…

Conclusion
Comme vous pouvez le constater, la gestion des erreurs est d'une complexité sans nom, mais
son efficacité est redoutable puisqu'à chaque fois qu'un nœud a été défaillant, il a systématiquement
été mis hors-jeu en une trentaine de trames…
Cela peut sembler long, mais c'est totalement acceptable pour un véhicule où les constantes
de temps ne sont pas vraiment les même… On est donc en présence d'un "monument" d'intelligence.
IUT de CACHAN Les réseaux en Page 96 sur 193
H. Angelis Informatique Industrielle Version 2017

Synchronisation des échanges


Le bus CAN est asynchrone. Comme tous les bus asynchrone, on doit définir son débit avec
précision au niveau de l'émetteur et du récepteur et espérer que le bit stuffing et la qualité des
horloges permettra de maintenir une synchronisation du récepteur avec l'émetteur.
Là encore la norme CAN est beaucoup plus complexe que pour les autres réseaux où on se
contente généralement d'entrer un simple facteur de division entre l'horloge du système et l'horloge
du bus.

Décomposition d'un bit en segments


Pour le bus CAN, un bit est composé de 3 segments :
• Le segment de synchronisation qui dure une période de l'horloge du bus et qui sert à
resynchroniser les nœuds du réseau. C'est pendant ce segment qu'un changement
d'état de la ligne de donnée doit avoir lieu (s'il y en a un).
• Le segment n°1 qui se décompose en 2 éléments : la propagation qui permet de
prendre en compte le temps mis par un bit pour se propager sur l'ensemble du réseau,
et de la phase de pré-acquisition (aussi appelée segment 1 pour simplifier les choses,
ici elle sera appelée pré-acquisition).
• Le segment 2 ou post-acquisition.

Les segments de pré et post acquisition sont "la marge de manœuvre" du réseau, qui lui
permet de gérer les décalages des horloges des nœuds. On peut réduire ou allonger ces segments pour
prendre en compte l'accumulation d'erreur de vitesse des nœuds.

Prédiviseur d'horloge
L'horloge de transmission (TSCL ou System Clock)
est réalisée à partir de l'horloge du système (TSYS), via un
prédiviseur.
Ces deux horloges sont liées par le terme NBRP
ou Baud Rate Prescaler. On peut dont écrire la relation
suivante : 𝑇𝑆𝐶𝐿 = 1 + 𝑁𝐵𝑅𝑃 ∙ 𝑇𝑆𝑌𝑆 .

Réglage des segments


Le second étage de division va permettre de passer de l'horloge de transmission (TSCL) au temps
bit du bus (Tb) selon la formule : 𝑇𝑏 = 𝑁𝑁𝐵𝑇 ∙ 𝑇𝑆𝐶𝐿 = (1 + 𝑁𝑆𝐸𝐺1 + 𝑁𝑆𝐸𝐺2 ) 𝑇𝑆𝐶𝐿 . Qui est directement
dérivée du chronogramme ci-dessus :
𝑇𝑏 = 𝑇𝑆𝑌𝑁𝐶 + 𝑇𝑆𝐸𝐺1 + 𝑇𝑆𝐸𝐺2
𝑇𝑏 = (1 ∙ 𝑇𝑆𝐶𝐿 ) + (𝑁𝑆𝐸𝐺1 ∙ 𝑇𝑆𝐶𝐿 ) + (𝑁𝑆𝐸𝐺2 ∙ 𝑇𝑆𝐶𝐿 )
𝑇𝑏 = (1 + 𝑁𝑆𝐸𝐺1 + 𝑁𝑆𝐸𝐺2 ) ∙ 𝑇𝑆𝐶𝐿
Le but du calcul des paramètres de l'horloge du bus est de calculer NBRP, NSEG1 et NSEG2 pour
obtenir, à partir de TSYS, la durée Tb recherchée, sachant que Tb = 1/D, où D est le débit du réseau.
Page 97 sur 193 Les réseaux IUT de CACHAN
Version 2017 en Informatique Industrielle H. Angelis

La méthode la plus simple et la plus efficace consiste alors à rechercher le NNBT le plus grand
possible tout en restant inférieur ou égal à 25. Le nombre 25 est obtenu en ajoutant 1 à la taille
maximum de NSEG1 (qui vaut 16), plus celle de NSEG2 (qui vaut 8), 16 + 8 + 1 = 25.
L'autre règle importante concernant le choix de ces paramètres c'est le lien entre la taille des
deux segments d'un bit. Le point d'échantillonnage étant entre ces deux segments, on essaye dans la
mesure du possible de conserver le point d'échantillonnage entre 66 et 75% de la durée du bit. Cela se
traduit par l'inégalité :
2 ∙ 𝑁𝑁𝐵𝑇 3 ∙ 𝑁𝑁𝐵𝑇
≤ 1 + 𝑁𝑆𝐸𝐺1 ≤
3 4
De plus, pour permettre au système de se resynchroniser, on peut autoriser la trame à être
réduite ou au contraire allongée d'une valeur nommée SJW pour Synchronisation Jump Width.

Synchro Jump Width


Le principe de ce saut de resynchronisation consiste à scruter l'apparition d'un front sur la ligne
de données et à le comparer avec l'emplacement où il aurait dû apparaitre (c'est-à-dire dans le
segment SYNC).
• Si le front a eu lieu avant le segment SYNC (donc dans le segment 2 du message
précédent), cela signifie que le récepteur ne va pas assez vite. On va donc raccourcir
le segment 2
• Si le front a eu lieu dans le segment SYNC, cela signifie que la vitesse et bonne et on
ne modifie pas les durées.
• Si le front a eu lieu après le segment SYNC (donc dans le segment 1), cela signifie que
le récepteur va trop vite, on va donc le ralentir en augmentant la durée du segment 1.
Le paramètre SJW correspond au nombre de périodes dont on peut augmenter ou réduire la
longueur d'un bit pour l'adapter. Un NSJW à 0 signifie que si l'erreur cumulée sur 5 bits dépasse (en
valeur absolue) les temps TSEG1 - TPROP ou TSEG2, alors on aura une erreur.
A l'opposé le NSJW à 4 signifie que si l'erreur cumulée sur 5 bits dépasse (en valeur absolue)
les temps TSEG1 - TPROP + NSJW ou NSEG2 + NSJW, on aura une erreur.

Exemple de calcul
Prenons un composant avec une horloge à 24 MHz et un bus CAN avec un débit de 1 Mbit/s.
La première étape consiste à calculer le facteur de division :
𝐹𝑆𝑌𝑆 24 ∙ 106
= = 24
𝐷 106
Comme le prédiviseur a un facteur minimum de division de 2, on arrive à NBRP = 1 et NNBT = 12,
on cherche donc à respecter le critère du point d'échantillonnage :
2 ∙ 12 3 ∙ 12
≤ 1 + 𝑁𝑆𝐸𝐺1 ≤ ⟺ 8 ≤ 1 + 𝑁𝑆𝐸𝐺1 ≤ 9
3 4
On a donc un NSEG1 dont la taille devrait varier entre 7 et 8, d'où un NSEG2 entre 3 et 4, soit un
NSJW entre 2 et 3. On sait que plus NSJW est grand, plus le réseau est tolérant aux erreurs d'horloge et
que plus il est petit, plus on peut accepter des réseaux de grande taille. Pour pouvoir choisir, il faut des
informations supplémentaires.
IUT de CACHAN Les réseaux en Page 98 sur 193
H. Angelis Informatique Industrielle Version 2017

Rappel des règles de calcul


Contraintes Recommandation
𝐹𝑆𝑌𝑆 2 ∙ 𝑁𝑁𝐵𝑇 3 ∙ 𝑁𝑁𝐵𝑇
= (𝑁𝐵𝑅𝑃 + 1) ∙ (1 + 𝑁𝑆𝐸𝐺1 + 𝑁𝑆𝐸𝐺2 ) ≤ 1 + 𝑁𝑆𝐸𝐺1 ≤
𝐷 3 4
1 ≤ 𝑁𝐵𝑅𝑃 ≤ 64 𝑁𝑆𝐸𝐺2 > 𝑁𝑆𝐽𝑊
1 ≤ 𝑁𝑆𝐸𝐺1 ≤ 16
1 ≤ 𝑁𝑆𝐸𝐺2 ≤ 8 NNBT le plus grand possible
1 ≤ 𝑁𝑆𝐽𝑊 ≤ 4

Définition du temps de propagation


Le temps de propagation c'est le temps que met un bit pour partir du nœud à une des
extrémités du réseau pour atteindre le nœud à l'autre bout et revenir.
Ce temps à un rôle important dans le bus puisque c'est lui qui conditionne le temps de
pré-acquisition du segment 1.

Le temps de propagation dans notre exemple est :


𝑇𝑃𝑅𝑂𝑃 = 2(𝑇𝑠𝑑 + 𝑇𝐶𝐵𝐿 + 𝑇𝑑𝑟𝑖𝑣𝑒𝑟𝑅𝑋 + 𝑇𝑑𝑟𝑖𝑣𝑒𝑟𝑇𝑋 )
Tsd est le temps mis par le contrôleur pour réagir à l'arrivée d'une information sur l'entrée CAN
avant qu'il ne "réponde" sur la sortie CAN. Cette durée est d'environ 2 périodes d'horloge interne
(théoriquement 1,5).
Tdriver est le temps de propagation dans le driver CAN. Il peut être différent selon que l'on écrit
sur le bus (TTX) ou qu'on le lit (TRX). Dans les documents constructeurs des drivers, le temps d'écriture
vaut globalement 100 ns et le temps de lecture est quasi moitié moins (55 ns).
𝐿
TCBL est le temps de propagation dans le câble réseau. Il s'obtient par la formule 𝑇𝐶𝐵𝐿 = 𝑉 où
𝜑
Vϕ vaut 2,5.108.
En reprenant notre exemple précédent, on avait un NSEG1 de 7 ou 8 périodes de TSCL, et un NSJW
de 2 ou 3. Alors en prenant NSEG1 = 8 et NSJW = 3 on peut appliquer la formule :
𝑇𝑃𝑅𝑂𝑃𝑀𝐴𝑋 = (𝑁𝑆𝐸𝐺1 − 𝑁𝑆𝐽𝑊 ) ∙ 𝑇𝑆𝐶𝐿 = 5 ∙ 𝑇𝑆𝐶𝐿
Comme TSCL = 83,33 ns, alors pour une liaison de 1 m on aura les temps de propagation suivant
: Tsd = 62,5 ns, TTX = 100 ns, TRX = 55 ns et TCBL = 4 ns, d'où un TPROP = 443 ns, soit environ 5,4 TSCL.
Il faut mettre NSJW à 2 et NSEG1 à 8 pour obtenir un résultat acceptable.
La configuration est donc :
NSEG1 = 8 NSEG2 = 3
NBRP = 1 NSJW = 2
Page 99 sur 193 Les réseaux IUT de CACHAN
Version 2017 en Informatique Industrielle H. Angelis

Les registres du MSCAN


CANCTL0 (MSCAN Control Register 0) Base address + 0
Bit 7 6 5 4 3 2 1 0
Read RXACT SYNCH
RXFRM CSWAI TIME WUPE SLPRQ INITRQ
Write
Reset 0 0 0 0 0 0 0 1
Value
Accès : Toujours accessible en lecture et en écriture hors mode initialisation (sauf
INITRQ qui est accessible aussi en mode INIT1).
RXACT et SYNCH sont en lecture seule.
RXFRM Received Frame Flag Flag de fin de réception de trame
Fonction : Signale la fin de la réception d'une trame valide et complète (mais pas
forcément acceptée par les filtres).
Ce bit peut être effacé par l'utilisateur en écrivant un 1. Ecrire un '0' n'a pas
d'effet.
Etat : 0 : Aucune nouvelle trame reçu depuis la dernière mise à zéro.
1 : Nouvelle(s) trame(s) valide(s) et complète(s) reçue(s).
RXACT Receiver Active Status Flag d'activité en réception
Fonction : Signale si le contrôleur est en train de recevoir un message. Ce bit n'est pas
actif en mode rebouclage2.
Etat : 0 : Bus idle ou en transmission.
1 : En cours de réception.
CSWAI CAN Stop in Wait Mode Mise à l'arrêt quand le micro se met en sommeil
Fonction : Permet d'arrêter le module CAN lorsque le microcontrôleur passe ne mode
économie d'énergie (WAIT).
Etat : 0 : Le MSCAN reste actif quand le micro passe à l'état WAIT.
1 : Le MSCAN s'arrête quand le micro passe à l'état WAIT.
SYNCH Synchronized Status Flag de synchronisation
Fonction : Signale si le contrôleur est synchronisé avec le bus.
Etat : 0 : Non synchronisé.
1 : Synchronisé.
TIME Timer Enable Activation du timer d'horodatage
Fonction : Permet l’utilisation d’un timer interne 16 bits comme horodateur des trames.
Le compteur s'incrémente au rythme du temps bit.
Si le timer est activé, à chaque réception et/ou transmission, la valeur du
timer est stockée dans les registres du buffer3 actif.
Etat : 0 : Horodatage désactivé.
1 : Horodatage activé.
WUPE Wake-Up Enable Activation des fonctions de réveil automatique
Fonction : Autorise le MSCAN à sortir du mode SLEEP4 en cas d’activité sur le bus CAN.
Etat : 0 : Une activité sur le bus CAN ne fait pas sortir du mode SLEEP.
1 : Une activité sur le bus CAN fait sortir du mode SLEEP.

1 Voir : Mode initialisation, page 116.


2 Voir : Bit LOOPB de CANCTL1, page 100.
3 Voir : Buffer de transmission ou de réception, page 109.
4 Voir : Mise en sommeil et réveil, page 117.
IUT de CACHAN Les réseaux en Page 100 sur 193
H. Angelis Informatique Industrielle Version 2017

SLPRQ Sleep Mode Request Requête de passage en mode SLEEP


Fonction : Permet de faire passer le MSCAN en mode SLEEP1 ou de l'en faire sortir.
Si le bit est mis à '1' le MSCAN passera en mode SLEEP dès que le bus sera
inactif (pas de réception en cours) et que tous les buffers de transmission
seront vides.
La mise à '1' ne peut se faire que si le bit SLPAK2 = '0' et inversement pour la
mise à '0' (SLPAK = '1'). Toute modification est ignorée si cette règle n'est pas
respectée.
Etat : 0, mode RUN ;
1, mode SLEEP.
INITRQ Init Mode Request Requête de passage en mode initialisation
Fonction : Permet de faire passer le MSCAN en mode INIT3. Toute transmission est alors
abandonnée et la synchronisation avec le bus est perdue.
Le passage en mode INIT (indiqué par le passage à '1' de INITAK2) entraine le
passage (et le maintien) à l'état RESET de certains registres et autorise la
modification d'autres, comme décrit dans le chapitre sur les modes du MSCAN.
La mise à '1' de INITRQ ne peut se faire que si le bit INITAK = '0' et inversement
pour la mise à '0' (INITAK = '1'). Toute modification est ignorée si cette règle
n'est pas respectée.
Etat : 0 : mode RUN.
1 : mode INIT.

CANCTL1 (MSCAN control Register 1) Base address + 1


Bit 7 6 5 4 3 2 1 0
Read SLPAK INITAK
CANE CLKSRC LOOPB LISTEN BORM WUPM
Write
Reset Value 0 0 0 1 0 0 0 1
Accès : Toujours accessible en lecture.
Accès en écriture uniquement en mode INIT
CANE MSCAN Enable Activation du MSCAN
Fonction : Permet d’activer ou d’inactiver le module MSCAN du 9S12.
Etat : 0 : MSCAN inactif ;
1 : MSCAN actif.
CLKSRC MSCAN Clock Source Choix de l’horloge du MSCAN
Fonction : Permet de sélectionner l’origine de l’horloge du module MSCAN.
Etat : 0 : horloge du bus du 9S12 ;
1 : horloge de l'oscillateur
LOOPB Loopback Activation du mode rebouclage
Fonction : Permet au MSCAN de passer en mode rebouclage interne, ce mode permet
d’effectuer des fonctions de test sans utiliser le bus (la ligne TX passant à
l’état récessif et RX étant ignorée). Le bit ACK SLOT est ignoré, mais les
interruptions (réception et émission) sont générées normalement.
Etat : 0 : mode Normal ;
1 : mode Rebouclage.
LISTEN Listen Only Activation du mode réception seule
Fonction : Permet le passage du MSCAN en mode réception seul. Il permet au MSCAN de
bloquer l’émission de données sur le bus (pas d’acquittements, ni de trame
d’erreur, ni d’envoi de données). Seuls les messages correctement adressés
(identifiants reconnus par le MSCAN) sont susceptibles d’être lus.
Etat : 0 : mode Normal ;
1 : mode Réception seule.

1 Voir : Mise en sommeil et réveil, page 117.


2 Voir page suivante.
3 Voir : Mode initialisation, page 116.
Page 101 sur 193 Les réseaux IUT de CACHAN
Version 2017 en Informatique Industrielle H. Angelis

BORM Bus Off Recovery Mode Activation du mode de sortie de l'état Off
Fonction Permet d'activer le mode de sortie manuelle de l'état Off.
Etat 0 : Sortie automatique de l'état Off (128 x 11 bits à '1' consécutifs).
1 : Sortie du mode Off possible sur requête1.
WUPM Wake Up Protect Protection du mode SLEEP
Fonction : Permet d’éviter un éveil du MSCAN en cas d’apparition de parasite sur la ligne
(il faut un bit dominant sur la ligne pendant une durée minimale T WUP et que
WUPE2 = 1 pour passer en mode réveil).
Etat : 0 : Pas de filtrage ;
1 : Filtrage.
SLPAK Sleep Acknowledge Acquittement de passage en mode SLEEP3
Fonction : Indique que le MSCAN est passé en mode sommeil.
Etat : 0 : le MSCAN est en mode Normal.
1 : le MSCAN est en mode SLEEP.
INITAK Init Acknowledge Acquittement de passage en mode INIT4
Fonction : Indique que le MSCAN est passé en mode Initialisation.
Etat : 0 : le MSCAN est en mode Normal.
1 : le MSCAN est en Mode Initialisation.

CANBTR0 (MSCAN Bus Timing Register 0) Base address + 2


Bit 7 6 5 4 3 2 1 0
Read
SJW1 SJW0 BRP5 BRP4 BRP3 BRP2 BRP1 BRP0
Write
Reset Value 0 0 0 0 0 0 0 0
Accès : Toujours accessible en lecture.
Accès en écriture uniquement en mode INIT
SJWX Synchro Jump Width Saut de resynchronisation
Fonction : Définit la valeur (en nombre de périodes de TSCL) de NSJW
Formule : NSJW= (2*SJW1+SJW0+1).
BRPX Baud Rate Prescaler Prédiviseur d’horloge
Fonction : Définit la valeur du prédiviseur d’horloge du MSCAN.
Formule : NBRP= (32*BRP5+16*BRP4+8*BRP3+4*BRP2+2*BRP1+BRP0+1).

CANBTR1 (MSCAN Bus Timing Register 1) Base address + 3


Bit 7 6 5 4 3 2 1 0
Read
SAMP SEG22 SEG21 SEG20 SEG13 SEG12 SEG11 SEG10
Write
Reset 0 0 0 0 0 0 0 0
Value
Accès : Toujours accessible en lecture.
Accès en écriture uniquement en mode INIT
SAMP Sample Mode Mode d’échantillonnage
Fonction : Définit le nombre d’échantillons par bit (1 ou 3). Dans le mode 3 échantillons,
le résultat est l’état majoritaire lu sur la ligne.
Activer SAM utilise une période de TSCL, qu'il faut retirer à NNBT.
Etat : 0 : 1 échantillon.
1 : 3 échantillons.

1 Voir : Registre CANMISC, page 106


2 Voir : Bit WUPE, registre CANCTL0, page 99
3 Voir : Mise en sommeil et réveil, page 117.
4 Voir : Mode initialisation, page 116.
IUT de CACHAN Les réseaux en Page 102 sur 193
H. Angelis Informatique Industrielle Version 2017

SEG2X Segment 2 Taille du 2ème segment


Fonction : Définit la taille (en nombre de périodes de TSCL) du segment 2.
Formule : NSEG2 = (4*SEG22+2*SEG21+SEG20+1)
SEG1X Segment 1 Taille du 1er Segment
Fonction : Définit la taille (en nombre de périodes de TSCL) du segment 1.
Formule : NSEG1 = (8*SEG13+4*SEG12+2*SEG11+SEG10+1)

CANRFLG (MSCAN Receiver Flag Register) Base address + 4


Bit 7 6 5 4 3 2 1 0
Read RSTAT1 RSTAT0 TSTAT1 TSTAT0
WUPIF CSCIF OVRIF RXF
Write
Reset 0 0 0 0 0 0 0 0
Value
Accès : Toujours accessible en lecture.
Accès en écriture en dehors du mode INIT. En mode initialisation, il est
maintenu à l’état RESET.
Les bits de flag s'efface en écrivant un '1' dans le bit concerné.
WUPIF Wake Up Interrupt Flag Flag de sortie du mode SLEEP
Fonction : Indique, qu'une activité significative sur le bus exige la sortie du MSCAN du
mode SLEEP1.
Etat : 0 : Pas de sortie du mode SLEEP
1 : Requête de sortie du mode SLEEP
CSCIF Changing Status Flag de changement d’état
Fonction : Lorsque les registres d’erreurs (REC et/ou TEC) du MSCAN atteignent les seuils
définis dans le chapitre gestion des erreurs sur le BUS CAN, le bit CSCIF
indique le changement d’état (en compléments des bits RSTAT et TSTAT).
Etat : 0 : pas de changement d’état.
1 : changement d’état du MSCAN.
RSTATX Receive Status Etat de réception
Fonction : Indique l’état du MSCAN lié au compteur d’erreur en réception (REC).
Etat : 00 : 0 ≤ REC ≤ 96. RxOK Mode Normal ;
01 : 96 < REC ≤ 127 RxWRN Mode Warning ;
10 : REC > 127 RxERR Mode Passif ;
11 : TEC >255 Bus Off. Mode Off.
TSTATX Transmit Status Etat de transmission
Fonction : Indique l’état du MSCN lié au compteur d’erreur de transmission (TEC).
Etat : 00 : 0 ≤ TEC ≤ 96 TxOK Mode Normal. ;
01 : 96 < TEC ≤ 127 TxWRN Mode Warning ;
10 : 127 < TEC ≤ 255 TxERR Mode Passif ;
11 : TEC > 255 Bus Off Mode Off.
OVRIF Overrun Flag Flag d'écrasement des trames reçues
Fonction : Indique que le MSCAN vient de perdre une trame par manque de place dans
les buffers de réception.
Etat 0 : pas d’erreur ;
1 : Erreur d'écrasement d'une trame.
RXF Receive Buffer Full Flag de réception
Fonction : Indique que le buffer2de réception du MSCAN contient un message valide.
Tant que ce Flag n’est pas éliminé (par la lecture du buffer de réception puis
l’effacement du Flag), il n’est pas possible de stocker de nouvelles données
dans ce buffer (ou de visualiser le contenu d'un autre buffer).
Etat : 0 : Pas de nouveaux messages.
1 : un nouveau message est en attente de lecture.

1 Voir : Mise en sommeil et réveil, page 117.


2 Voir : Buffer de transmission ou de réception, page 109.
Page 103 sur 193 Les réseaux IUT de CACHAN
Version 2017 en Informatique Industrielle H. Angelis

CANRIER (MSCAN Receiver Interrupt Enable Register) Base address + 5


Bit 7 6 5 4 3 2 1 0
Read
WUPIE CSCIE RSTATE1 RSTATE0 TSTATE1 TSTATE0 OVRIE RXFIE
Write
Reset Value 0 0 0 0 0 0 0 0
Accès : Toujours accessible en lecture.
Accès en écriture en dehors du mode INIT. En mode initialisation, il est
maintenu à l’état RESET.
WUPIE Wake Up Interrupt Enable Activation d'interruption de réveil
Fonction : Permet le déclenchement d'une interruption lorsque le MSCAN sort de l'état
SLEEP1, c'est-à-dire si les bits WUPE2 et WUPIF3 sont actifs.
Etat : 0 : Interruption désactivée.
1 : Interruption activée.
CSCIE Status Change Interrupt Enable Activation d'interruption de changement d’état
Fonction : Permet le déclenchement d'une interruption en cas de changement d'état du
nœud CAN. L’état qui déclenche l'interruption est définit par les registres
RSTATEX et TSTATEX.
Etat : 0 : Interruption désactivée.
1 : Interruption activée.
RSTATEX Receiver Status Change Enable
[Etat du récepteur déclenchant une interruption
Fonction : Définit quel changement d’état du MSCAN, lié au compteur d’erreur de
réception (REC), est susceptible de déclencher une interruption (si CSCIE est
actif).
Etat : 00 : ne pas déclencher d’interruption en cas de changement d’état ;
01 : interruption exclusivement sur le passage à l’état Bus Off ;
10 : interruption dès le passage à l’état passif ;
11 : tous changement déclenche une interruption.
TSTATEX Transmit Status Change Enable
[Etat de l’émetteur déclenchant une interruption
Fonction : Définit quel changement d’état du MSCAN, lié au compteur d’erreur de
transmission (TEC), est susceptible de déclencher une interruption (si CSCIE
est actif).
Etat : 00 : ne pas déclencher d’interruption en cas de changement d’état ;
01 : interruption exclusivement sur le passage à l’état Bus Off ;
10 : interruption dès le passage à l’état passif ;
11 : tous changement déclenche une interruption.
OVRIE Overrun Interrupt Enable Activation d'interruption d'écrasement de données
Fonction : Permet le déclenchement d'une interruption en cas de débordement des
buffers4 de réception (tous les buffers de réception son plein et une nouvelle
donnée vient d'être reçue). Cela signifie une perte de données.
Etat : 0 : Interruption désactivée.
1 : Interruption activée.
RXFIE Receiver Full Interrupt Enable Activation d'interruption de réception
Fonction : Permet le déclenchement d'une interruption lorsque le buffer5 de réception
est plein.
Etat : 0 : Interruption désactivée.
1 : Interruption activée.

1 Voir : Mise en sommeil et réveil, page 117.


2 Voir : Bit WUPE, Registre CANCTL0, page 99
3 Voir : Bit WUPIF, Registre CANRLFG, page 102
4 Voir : Buffer de transmission ou de réception, page 109.
IUT de CACHAN Les réseaux en Page 104 sur 193
H. Angelis Informatique Industrielle Version 2017

CANTFLG (MSCAN Transmitter Flag Register) Base address + 6


Bit 7 6 5 4 3 2 1 0
Read
0 0 0 0 0 TXE2 TXE1 TXE0
Write
Reset Value 0 0 0 0 0 1 1 1
Accès : Toujours accessible en lecture.
Accès en écriture en dehors du mode INIT. En mode initialisation, il est
maintenu à l’état RESET.
TXEX Transmit buffer Empty Buffer de transmission vide
Fonction : Indique si le buffer1 de transmission associé est vide.
Ce Flag doit être effacé (par écriture d'un '1') après l'écriture d’un message
dans le registre de transmission correspondant. Le MSCAN remet
automatiquement le flag à '1' une fois le message transmis ou s'il vient d'être
annulé.
Etat : 0 : buffer non vide.
1 : buffer vide.

CANTIER (MSCAN Transmitter Interrupt Enable Register) Base address + 7


Bit 7 6 5 4 3 2 1 0
Read
0 0 0 0 0 TXEIE2 TXEIE1 TXEIE0
Write
Reset Value 0 0 0 0 0 0 0 0
Accès : Toujours accessible en lecture.
Accès en écriture en dehors du mode INIT. En mode initialisation, il est
maintenu à l’état RESET.
TXEIEX Transmit buffer Empty Interrupt Enable
[Activation d'interruption de buffer de transmission vide
Fonction : Permet le déclenchement d'une interruption si le buffer1 de transmission
correspondant est vide.
Etat : 0 : Interruption désactivée.
1 : Interruption activée.

CANTARQ (MSCAN Transmitter Message Abort Control) Base address + 8


Bit 7 6 5 4 3 2 1 0
Read
0 0 0 0 0 ABTRQ2 ABTRQ1 ABTRQ0
Write
Reset Value 0 0 0 0 0 0 0 0
Accès : Toujours accessible en lecture.
Accès en écriture en dehors du mode INIT. En mode initialisation, il est
maintenu à l’état RESET.
ABTRQX Abort Request Demande d’annulation
Fonction : Permet de demander l’annulation d’une transmission. Cette requête ne peut
aboutir que si le message n’est pas encore en cours de transmission. Ce bit
est automatiquement désactivé quand le buffer1 de transmission est vide.
Etat : 0 : Pas de demande d’annulation.
1 : Demande d’annulation.

1 Voir : Buffer de transmission ou de réception, page 109.


Page 105 sur 193 Les réseaux IUT de CACHAN
Version 2017 en Informatique Industrielle H. Angelis

CANTAAK (MSCAN Transmitter Message Abort Control) Base address + 9


Bit 7 6 5 4 3 2 1 0
Read 0 0 0 0 0 ABTAK2 ABTAK1 ABTAK0
Write
Reset Value 0 0 0 0 0 0 0 0
Accès : Toujours accessible en lecture. En mode initialisation, il est maintenu à
l’état RESET.
ABTAKX Abort Acknowledge Acquittement d’annulation
Fonction : Indique que la demande d'annulation a été exécutée.
Ce flag est automatiquement placé à l’état actif ou à l’état inactif par les
actions du MSCAN (inactivé lorsque le flag TXE1 correspondant est mis à 0,
activé après qu’une annulation ait eu lieu).
Etat : 0 : Pas demande d'annulation ou pas de message.
1 : Le message a été annulé.

CANTBSEL (MSCAN Transmitter Buffer Selection) Base address + 10


Bit 7 6 5 4 3 2 1 0
Read
0 0 0 0 0 TX2 TX1 TX0
Write
Reset Value 0 0 0 0 0 0 0 0
Accès : Toujours accessible en lecture.
Accès en écriture en dehors du mode INIT. En mode initialisation, il est
maintenu à l’état RESET.
TXX Transmit buffer Select Sélection du buffer2 de transmission
Fonction : Permet de sélectionner le premier buffer de transmission libre.
La lecture puis l'écriture du résultat dans la lecture dans ce registre oblige
le MSCAN à mapper le premier buffer de transmission vide sur le buffer de
transmission virtuel.
Etat : 0 : buffer non vide.
1 : buffer vide.

CANIDAC (MSCAN Identifier Acceptance Control Register) Base address + 11


Bit 7 6 5 4 3 2 1 0
Read IDHIT2 IDHIT1 IDHIT0
0 0 IDAM1 IDAM0 0
Write
Reset Value 0 0 0 0 0 0 0 0
Accès : Toujours accessible en lecture.
Accessible en écriture uniquement en mode initialisation, à l’exception des
bits IDHITX qui sont en lecture seule.
IDAMX Identifier Acceptance Mode Mode d’identification
Fonction : Permet de définir la méthode de filtrage3 utilisée.
Etat : 00 : 2 filtres de 32 bits.
01 : 4 filtres de 16 bits.
10 : 8 filtres de 8 bits.
11 : pas de filtres (rejet de tous les messages).
IDHITX Identifier Hit Indicator indicateur de réussite au filtrage d’identification
Fonction : Indique quel est le filtre3 qui a accepté le message actif (mappé sur le buffer2
de réception virtuel)
Etat : Correspond au numéro du filtre qui a été activé :
000 : Filtre 0 001 : Filtre 1 010 : Filtre 2 011 : Filtre 3
100 : Filtre 4 101 : Filtre 5 110 : Filtre 6 111 : Filtre 7

1 Voir : Bits TXE, Registre CANTFLG, page 104.


2 Voir : Buffer de transmission ou de réception, page 109.
3 Voir : Filtrage des messages, page 112.
IUT de CACHAN Les réseaux en Page 106 sur 193
H. Angelis Informatique Industrielle Version 2017

CANMISC (MSCAN Miscellaneous Register) Base address + 13


Bit 7 6 5 4 3 2 1 0
Read 0 0 0 0 0 0 0
BOHOLD
Write
Reset Value 0 0 0 0 0 0 0 0
Accès : Toujours accessible en lecture et en écriture (écrire un '0' n'a pas d'effet).
BOHOLD Bus-off State Hold User Request Demande de sortie de l'état Off
Fonction : Indique que le nœud est à l'état Off.
Lorsque le nœud passe à l'état Off, le bit est mis à '1' par le MSCAN. Ecrire un
'1' efface le flag. Si le bit BORM1 est actif, remettre à '0' le flag ramène le
nœud à l'état actif.
Etat : 0 : Le nœud est actif.
1 : Le nœud est à l'état Off.

CANRXERR (MSCAN Receive Error Counter Register) Base address + 14


Bit 7 6 5 4 3 2 1 0
Read RXERR7 RXERR6 RXERR5 RXERR4 RXERR3 RXERR2 RXERR1 RXERR0
Write
Reset Value 0 0 0 0 0 0 0 0
Accès : En lecture seule, uniquement en mode initialisation ou en mode SLEEP.
RXERRX Receive Error Counter Compteur d’erreur de réception
Fonction : La combinaison de ces bits indique la valeur du compteur d’erreur de
réception (REC). Une lecture de ce registre en dehors des modes INIT2 ou
SLEEP3 retourne une information erronée, une écriture peut empêcher le
MSCAN de fonctionner correctement.
Etat : De 0 à 255 (combinaison des 8 bits du registre).

CANTXERR (MSCAN Transmit Error Counter Register) Base address + 15


Bit 7 6 5 4 3 2 1 0
Read TXERR7 TXERR6 TXERR5 TXERR4 TXERR3 TXERR2 TXERR1 TXERR0
Write
Reset Value 0 0 0 0 0 0 0 0
Accès : En lecture seule, uniquement en mode initialisation ou en mode SLEEP.
TXERRX Transmit Error Counter Compteur d’erreur de transmission
Fonction : La combinaison de ces bits indique la valeur du compteur d’erreur de
transmission (TEC). Une lecture de ce registre en dehors des modes INIT ou
SLEEP retourne une information erronée, une écriture peut empêcher le
MSCAN de fonctionner correctement.
Etat : De 0 à 255 (combinaison des 8 bits du registre).

1 Voir : Bit BORM, Registre CANCTL1, page 100


2 Voir : Mode initialisation, page 116.
3 Voir : Mise en sommeil et réveil, page 117.
Page 107 sur 193 Les réseaux IUT de CACHAN
Version 2017 en Informatique Industrielle H. Angelis

CANIDARX (MSCAN Identifier Acceptance Registers) Base address + (16 - 19 & 24 - 27)
2 x 4 registres identiques en 2 blocs.
Le premier de l'adresses de base + 16 jusqu’à + 19 et le second de l'adresse de base + 24 jusqu'à +27.
Bit 7 6 5 4 3 2 1 0
Read
AC7 AC6 AC5 AC4 AC3 AC2 AC1 AC0
Write
Reset Value 0 0 0 0 0 0 0 0
Accès : Toujours accessible en lecture. Accessible en écriture uniquement en mode
initialisation.
ACX Acceptance Code Code d’accès
Fonction : Permet de définir les codes d’acceptation des messages reçus (l'un des
éléments qui filtre1 les numéros d’index).
En cas d’utilisation du MSCAN en mode standard (BASICAN ou CAN 2.0A), avec
index sur 11 bits, seuls les 2 premiers registres de chaque plage sont utilisés.
En mode étendu (PELICAN ou CAN 2.0B), avec index sur 29 bits, on utilise 4
registres par plage.
Etat : Selon le mode d'adressage conformément aux tableaux suivants :

Adressage en mode standard (11 bits), plage 1 :


Bit 7 6 5 4 3 2 1 0 Adresses
CANIDAR0 ID10 ID9 ID8 ID7 ID6 ID5 ID4 ID3 B + 16
CANIDAR1 ID2 ID1 ID0 RTR 0 B + 17
CANIDAR2 B + 18
CANIDAR3 B + 19

Adressage en mode standard (11 bits), plage 2 :


Bit 7 6 5 4 3 2 1 0 Adresses
CANIDAR4 ID10 ID9 ID8 ID7 ID6 ID5 ID4 ID3 B + 24
CANIDAR5 ID2 ID1 ID0 RTR 0 B + 25
CANIDAR6 B + 26
CANIDAR7 B + 27

Adressage en mode étendu (29 bits), plage 1 :


Bit 7 6 5 4 3 2 1 0 Adresses
CANIDAR0 ID28 ID27 ID26 ID25 ID24 ID23 ID22 ID21 B + 16
CANIDAR1 ID20 ID19 ID18 1 1 ID17 ID16 ID15 B + 17
CANIDAR2 ID14 ID13 ID12 ID11 ID10 ID9 ID8 ID7 B + 18
CANIDAR3 ID6 ID5 ID4 ID3 ID2 ID1 ID0 RTR B + 19

Adressage en mode étendu (29 bits), plage 2 :


Bit 7 6 5 4 3 2 1 0 Adresses
CANIDAR4 ID28 ID27 ID26 ID25 ID24 ID23 ID22 ID21 B + 24
CANIDAR5 ID20 ID19 ID18 1 1 ID17 ID16 ID15 B + 25
CANIDAR6 ID14 ID13 ID12 ID11 ID10 ID9 ID8 ID7 B + 26
CANIDAR7 ID6 ID5 ID4 ID3 ID2 ID1 ID0 RTR B + 27

1 Voir : Filtrage des messages, page 112.


IUT de CACHAN Les réseaux en Page 108 sur 193
H. Angelis Informatique Industrielle Version 2017

CANIDMRX (MSCAN Identifier Mask Registers) Base address + (20 – 23 & 28 à 31)
2 x 4 registres identiques en 2 blocs.
Le premier de l'adresses de base + 20 jusqu’à + 23 et le second de l'adresse de base + 28 jusqu'à +31.
Bit 7 6 5 4 3 2 1 0
Read
AM7 AM6 AM5 AM4 AM3 AM2 AM1 AM0
Write
Reset Value 0 0 0 0 0 0 0 0
Accès : Toujours accessible en lecture. Accessible en écriture uniquement en mode
initialisation.
AMX Acceptance Mask Masque d’accès
Fonction : Permet de définir les masques d’acceptation des messages reçus (l'un des
éléments qui filtres1 les numéros d’index.
En cas d’utilisation du MSCAN en mode standard (BASICAN ou CAN 2.0A), avec
index sur 11 bits, seuls les 2 premiers registres de chaque plage sont utilisés.
En mode étendu (PELICAN ou CAN 2.0B), avec index sur 29 bits, on utilise 4
registres par plage.
Etat : 0 : Le bit doit correspondre
1 : Le bit est ignoré.

Adressage standard (11bits), Plage 1 :


Bit 7 6 5 4 3 2 1 0 Adresse
CANIDMR0 ID10 ID9 ID8 ID7 ID6 ID5 ID4 ID3 B + 20
CANIDMR1 ID2 ID1 ID0 RTR 0 B + 21
CANIDMR2 B + 22
CANIDMR3 B + 23

Adressage standard (11bits), Plage 2 :


Bit 7 6 5 4 3 2 1 0 Adresse
CANIDMR4 ID10 ID9 ID8 ID7 ID6 ID5 ID4 ID3 B + 28
CANIDMR5 ID2 ID1 ID0 RTR 0 B + 29
CANIDMR6 B + 30
CANIDMR7 B + 31

Adressage étendu (29bits), Plage 1 :


Bit 7 6 5 4 3 2 1 0 Adresse
CANIDMR0 ID28 ID27 ID26 ID25 ID24 ID23 ID22 ID21 B + 20
CANIDMR1 ID20 ID19 ID18 1 1 ID17 ID16 ID15 B + 21
CANIDMR2 ID14 ID13 ID12 ID11 ID10 ID9 ID8 ID7 B + 22
CANIDMR3 ID6 ID5 ID4 ID3 ID2 ID1 ID0 RTR B + 23

Adressage étendu (29bits), Plage 2 :


Bit 7 6 5 4 3 2 1 0 Adresse
CANIDMR4 ID28 ID27 ID26 ID25 ID24 ID23 ID22 ID21 B + 28
CANIDMR5 ID20 ID19 ID18 1 1 ID17 ID16 ID15 B + 29
CANIDMR6 ID14 ID13 ID12 ID11 ID10 ID9 ID8 ID7 B + 30
CANIDMR7 ID6 ID5 ID4 ID3 ID2 ID1 ID0 RTR B + 31

1 Voir : Filtrage des messages, page 112.


Page 109 sur 193 Les réseaux IUT de CACHAN
Version 2017 en Informatique Industrielle H. Angelis

Buffer de transmission ou de réception


Un buffer est composé de 16 octets de mémoire, sur ces 16 octets, 13 sont l’image du message
et 3 servent à des options. Les buffers utilisés pour l’émission étant similaire à ceux liés à la réception,
on ne détaillera qu’un seul type de buffer.
Le MSCAN étant composé de plusieurs buffers de réception et d'émission, il n'y a pas adresse
de base unique pour ces buffers, elle est donc notée X dans notre exemple.
Adresse Acronyme Nom du registre Remarques
X+0 IDR0 Identificateur 0
X+1 IDR1 Identificateur 1
X+2 IDR2 Identificateur 2 Uniquement pour index 29 bits
X+3 IDR3 Identificateur 3 Uniquement pour index 29 bits
X+4 DATA0 1er octet de données
X+5 DATA1 2ème octet de données
X+6 DATA2 3ème octet de données
X+7 DATA3 4ème octet de données
X+8 DATA4 5ème octet de données
X+9 DATA5 6ème octet de données
X + 10 DATA6 7ème octet de données
X + 11 DATA7 8ème octet de données
X + 12 DLCR Longueur du champ de données
X + 13 TBPR Priorité de transmission Uniquement en transmission
X + 14 TSRH Octet de poids Fort
Horaire
X + 15 TSRL Octet de poids faible

L’identificateur
Il existe 2 formats d'index1, un format CAN 2.0A sur 11 bits, et un format étendu (CAN 2.0B)
sur 29 bits. Les registres IDRX répondent selon la norme du réseau aux caractéristiques suivantes :
Identificateur au format standard :
Bit 7 6 5 4 3 2 1 0 Adresse
IDR0 ID10 ID9 ID8 ID7 ID6 ID5 ID4 ID3 X+0
IDR1 ID2 ID1 ID0 RTR2 IDE3 X+1
IDR2 X+2
IDR3 X+3

Identificateur au format étendu :


Bit 7 6 5 4 3 2 1 0 Adresse
IDR0 ID28 ID27 ID26 ID25 ID24 ID23 ID22 ID21 X+0
IDR1 ID20 ID19 ID18 SRR4 IDE3 ID17 ID16 ID15 X+1
IDR2 ID14 ID13 ID12 ID11 ID10 ID9 ID8 ID7 X+2
IDR3 ID6 ID5 ID4 ID3 ID2 ID1 ID0 RTR2 X+3

Tous les champs grisés peuvent être remplis (dans le cas d'un buffer de transmission) avec
n’importe quelle valeur.

1 Voir : L'index ou l'identifiant, page 81.


2 Voir : Le bit RTR, page 82.
3 Voir : Le bit IDE, page 83.
4 Voir : Le bit SRR, page 86.
IUT de CACHAN Les réseaux en Page 110 sur 193
H. Angelis Informatique Industrielle Version 2017

Le champ de longueur des données


L’octet réservé à l’adresse X +12 contient donc les bits DLC1 rangé dans l’ordre suivant :

DLCR (Data Length Code Register) X+C


Bit 7 6 5 4 3 2 1 0
Valeur DLC3 DLC2 DLC1 DLC0

Les registres optionnels


TBPR (Transmit Buffer Priority Register) X+D
Bit 7 6 5 4 3 2 1 0
Valeur PRIO7 PRIO6 PRIO5 PRIO4 PRIO3 PRIO2 PRIO1 PRIO0
Fonction : Donne une priorité au message à transmettre. Plus la valeur entrée dans le
registre est élevée, moins le message est prioritaire.
Avant de démarrer une nouvelle transmission, le MSCAN compare les priorités
des différents messages près à être transmis (TXEX = 1), celui qui est le plus
prioritaire est alors émis. Si deux messages ont la même priorité, c’est celui
dont le numéro d’index est le plus petit qui l’emporte.
Ce registre n'existe pas pour les buffers de réception (pas de priorité pour la
réception de trame).

TSRH (Time Stamp Register High) X+E


Bit 7 6 5 4 3 2 1 0
Valeur TSR15 TSR14 TSR13 TSR12 TSR11 TSR10 TSR9 TSR8

TSRL (Time Stamp Register Low) X+F


Bit 7 6 5 4 3 2 1 0
Valeur TSR7 TSR6 TSR5 TSR4 TSR3 TSR2 TSR1 TSR0
Accès : Ces deux registres sont en lecture seule, ils sont disponibles à tout moment.
Fonction : Permet de noter la valeur du timer2 (s'il a été activé), lors du point
d’échantillonnage du champ ACK SLOT de la trame CAN. Cette valeur est un
nombre de période de l’horloge système depuis l'initialisation du bit TIME2 du
registre CANCTL0). Cette valeur est présente aussi bien pour les trames
reçues que pour les trames émises.

Gestion des buffers d'émission et réception


Le MSCAN dispose de 3 buffers de transmission (sélectionnable à l'aide du registre CANTBSEL).
Chacun de ces buffers est composé de 16 octets. Pour épargner l'espace mémoire du microcontrôleur,
un seul buffer de transmission est accessible via un buffer virtuel (TXFG ou Buffer de transmission de
premier plan) sur lequel pointe le buffer sélectionné.
Le MSCAN dispose de plus de 6 buffers de réception (1 virtuel et 5 réels) composés chacun de
15 octets (il n'y a pas de champs de priorité), mais un seul de ces registres est accessible par
l'utilisateur, on le nomme Foreground Buffer (RXFG ou buffer de premier plan), c'est le buffer virtuel,
par opposition aux 5 Background Buffer (RXBG ou buffers d'arrière-plan), bien réels eux, mais qui ne
sont pas accessibles. Les 5 buffers d'arrière-plan forment une FIFO où viennent s'empiler les trames
reçues.

1 Voir : Le DLC, page 83


2 Voir : Bit TIME, registre CANCTL0, page 99.
Page 111 sur 193 Les réseaux IUT de CACHAN
Version 2017 en Informatique Industrielle H. Angelis

Lors de la réception d'une trame, le MSCAN réalise en parallèle 3 opérations, d'une part, il
mémorise dans la FIFO le contenu du message au fur et à mesure de son arrivée, et d'autre part, il
vérifie si ce message lui est adressé (par comparaison avec les filtres1). Enfin, il met, dès le bit de Start,
à '1' le flag RXACT2.
A la réception du ACK SLOT (qui signifie que le message a été reçu dans son intégralité et qu'il
ne contenait pas d'erreur), le MSCAN met à '1' le flag RXFRM3.
Si l'index du message est validé par au moins un des filtres, le message est conservé dans la
FIFO, dans le cas contraire, il est détruit. Une fois le message validé, s'il n'y a pas d'autres messages
dans la FIFO, un lien est créé entre le buffer physique de réception (RXBG) et le buffer virtuel de
premier plan (RXFG). Puis le MSCAN met à 1 le bit RXF4 du registre CANRFLG.
Dès lors et tant que l'utilisateur n'aura pas effacé le bit RXF, le buffer de premier plan restera
figé sur le buffer d'arrière-plan qui vient d'être remplis et ce, même si le MSCAN reçoit de nouveaux
messages.
Si tous les registres d'arrière-plan sont remplis, la réception d'un nouveau message valide (sans
erreur et correctement adressé), déclenche la mise à '1' du bit OVRIF5 du registre CANRFLG. Le dernier
message qui vient d'être reçu est alors éliminé.
Par contre, dès que l'utilisateur met à zéro le bit RXF, le lien entre le RXFG et le RXBG est effacé
et un nouveau lien le remplace (si d'autres messages sont en attente). Dans ce cas, le MSCAN met alors
à nouveau à '1' le bit RXF.
Attention, il convient donc de lire le RXFG avant d'effacer le bit RXF faute de quoi le message
est définitivement perdu.
Il faut noter que le MSCAN reçoit les messages qu'il émet, mais il ne les acquitte pas (sauf en
mode LOOPBACK) .Les messages émis sont systématiquement détruit après réception, et le bit RXF
n'est pas affecté.

1 Voir : Filtrage des messages, page 112


2 Voir : Bit RXACT, Registre CANCTL0, page 99
3 Voir : Bit RXFRM, registre CANCTL0, page 99
4 Voir : Bit RXF, registre CANRFLG, page 102
5 Voir : Bit OVRIF, registre CANRFLG, page 102
IUT de CACHAN Les réseaux en Page 112 sur 193
H. Angelis Informatique Industrielle Version 2017

Filtrage des messages


Le MSCAN dispose grâce aux bits IDAMX1 du registre CANIDAC de 4 modes de filtrage des
messages.
Le mode 32 bits autorise la création de 2 filtres, le premier utilisant les registres 0 à 3 de
CANIDAR2 et CANIDMR3 et pour le second les registres 4 à 7. C'est à dire que le MSCAN dispose de 2
combinaisons d'un code d'acceptation (CANIDAR) et d'un masque (CANIDMR), codés chacun sur 32
bits, permettant d'effectuer un filtrage sur l'intégralité des 29 bits (plus SRR, IDE et RTR) de la norme
CAN 2.0B et par conséquent sur les 11 bits plus le RTR de la norme CAN 2.0A.
Le mode 16 bits autorise la création de 4 filtres, le premier utilisant les registres 0 et 1 de
CANIDAR et de CANIDMR, le deuxième les registres 2 et 3, le troisième les registres 4 et 5 et le
quatrième les registres 6 et 7. C'est à dire 4 combinaisons d'un code d'acceptation et d'un masque,
codés chacun sur 16 bits, permettant d'effectuer un filtrage sur les 14 premier bits (plus SRR et IDE) de
la norme CAN 2.0B (et par conséquent, sur les 11 bits plus le RTR de la norme CAN 2.0A).
Le mode 8 bits autorise la création de 8 filtres, c'est à dire 8 combinaisons d'un code
d'acceptation et d'un masque, codés chacun sur 8 bits, permettant d'effectuer un filtrage sur les 8
premier bits des normes CAN 2.0A et 2.0B.
Attention, le mode sans filtre rejette tous les messages que pourrait recevoir le MSCAN.

Principe du filtrage
Le principe du filtrage repose sur deux opérations logiques, un masque en NON OU EXCLUSIF
et un masque en OU.
L'index du message reçu est stocké dans les registres IDRX, il est ensuite comparé (NON OU
EXCLUSIF bit à bit) au code d'acceptation stocké dans les registres CANIDARX, le résultat de cette
comparaison est ensuite masqué par un
masque en OU avec le contenu des
registres CANIDMRX.
Le résultat de ce dernier
masquage est soit intégralement
composé de 1 logiques et le message est
accepté, soit il contient au moins un 0
logique et le message est rejeté.

ID28 IDR0 ID21 ID20 IDR1 ID15 ID14 IDR2 ID7 ID6 IDR3 RTR

NON OU EXCLUSIF Logique entre l'index reçu (IDRX) et CANIDARX

AC7 CANIDAR0 AC0 AC7 CANIDAR1 AC0 AC7 CANIDAR2 AC0 AC7 CANIDAR3 AC0

OU Logique entre le résultat du NON OU EXCLUSIF et le masque CANIDMRX

AM7 CANIDMR0 AM0 AM7 CANIDMR1 AM0 AM7 CANIDMR2 AM0 AM7 CANIDMR3 AM0

Si le résultat est FF FF FF FF, le message est accepté


autrement, il est rejeté et présenté au filtre suivant

1 Voir : Bits IDAMX, Registre CANIDAC, page 105


2 Voir : Registres CANIDAR, page 107
3 Voir : Registres CANIDMR, page 108
Page 113 sur 193 Les réseaux IUT de CACHAN
Version 2017 en Informatique Industrielle H. Angelis

Organisation des filtres


Selon le type de filtre que l'on choisit (avec les bits IDAMX1), il existe un nombre plus ou moins
important de filtres. Ces filtres sont agencés en cascade, l'un après l'autre les filtres sont appliqués au
même message. Dès qu'un filtre accepte le message, les tests s'arrêtent et les bits IDHIT X1 du registre
CANIDAC sont positionnés. Le buffer RXBG est alors mappé (si le bit RXF2 est à 0) sur le buffer RXFG.
Il est peu intelligent d'utiliser un filtre 8 bits avec un index étendu, tout comme il est bête
d'utiliser un filtre de 32 bits avec un index sur 11 bits. Je limite donc cette étude aux cas "intelligents".
A savoir utiliser les filtres 32 bits pour les index étendus et les filtres 16 et 8 bits pour les index 11 bits.

Filtres de 32 bits avec des index étendus (29 bits)


Traitement de la première partie de la trame (les 16 premiers bits)
Index IDR0 IDR1
reçu ID28 ID27 ID26 ID25 ID24 ID23 ID22 ID21 ID20 ID19 ID18 SRR IDE ID17 ID16 ID15

CANIDAR0 CANIDAR1
Premier AC7 AC6 AC5 AC4 AC3 AC2 AC1 AC0 AC7 AC6 AC5 AC4 AC3 AC2 AC1 AC0
filtre CANIDMR0 CANIDMR1
AM7 AM6 AM5 AM4 AM3 AM2 AM1 AM0 AM7 AM6 AM5 AM4 AM3 AM2 AM1 AM0

CANIDAR4 CANIDAR5
Second AC7 AC6 AC5 AC4 AC3 AC2 AC1 AC0 AC7 AC6 AC5 AC4 AC3 AC2 AC1 AC0
filtre CANIDMR4 CANIDMR5
AM7 AM6 AM5 AM4 AM3 AM2 AM1 AM0 AM7 AM6 AM5 AM4 AM3 AM2 AM1 AM0

Traitement de la seconde partie de la trame (les 16 derniers bits)


Index IDR2 IDR3
reçu ID14 ID13 ID12 ID11 ID10 ID9 ID8 ID7 ID6 ID5 ID4 ID3 ID2 ID1 ID0 RTR

CANIDAR2 CANIDAR3
Premier AC7 AC6 AC5 AC4 AC3 AC2 AC1 AC0 AC7 AC6 AC5 AC4 AC3 AC2 AC1 AC0
filtre CANIDMR2 CANIDMR3
AM7 AM6 AM5 AM4 AM3 AM2 AM1 AM0 AM7 AM6 AM5 AM4 AM3 AM2 AM1 AM0

CANIDAR6 CANIDAR7
Second AC7 AC6 AC5 AC4 AC3 AC2 AC1 AC0 AC7 AC6 AC5 AC4 AC3 AC2 AC1 AC0
filtre CANIDMR6 CANIDMR7
AM7 AM6 AM5 AM4 AM3 AM2 AM1 AM0 AM7 AM6 AM5 AM4 AM3 AM2 AM1 AM0

1 Voir : Registre CANIDAC, page 107


2 Voir : Bit RXF, Registre CANRFLG, page 102
IUT de CACHAN Les réseaux en Page 114 sur 193
H. Angelis Informatique Industrielle Version 2017

Organisation des filtres de 16 bits avec un index 11 bits


Index IDR0 IDR1
reçu ID10 ID9 ID8 ID7 ID6 ID5 ID4 ID3 ID2 ID1 ID0 RTR IDE

CANIDAR0 CANIDAR1
Premier AC7 AC6 AC5 AC4 AC3 AC2 AC1 AC0 AC7 AC6 AC5 AC4 AC3 AC2 AC1 AC0
filtre CANIDMR0 CANIDMR1
AM7 AM6 AM5 AM4 AM3 AM2 AM1 AM0 AM7 AM6 AM5 AM4 AM3 AM2 AM1 AM0

CANIDAR2 CANIDAR3
Second AC7 AC6 AC5 AC4 AC3 AC2 AC1 AC0 AC7 AC6 AC5 AC4 AC3 AC2 AC1 AC0
filtre CANIDMR2 CANIDMR3
AM7 AM6 AM5 AM4 AM3 AM2 AM1 AM0 AM7 AM6 AM5 AM4 AM3 AM2 AM1 AM0

CANIDAR4 CANIDAR5
Troisi-
AC7 AC6 AC5 AC4 AC3 AC2 AC1 AC0 AC7 AC6 AC5 AC4 AC3 AC2 AC1 AC0
ème
CANIDMR4 CANIDMR5
filtre
AM7 AM6 AM5 AM4 AM3 AM2 AM1 AM0 AM7 AM6 AM5 AM4 AM3 AM2 AM1 AM0

CANIDAR6 CANIDAR7
Quatri-
AC7 AC6 AC5 AC4 AC3 AC2 AC1 AC0 AC7 AC6 AC5 AC4 AC3 AC2 AC1 AC0
ème
CANIDMR6 CANIDMR7
filtre
AM7 AM6 AM5 AM4 AM3 AM2 AM1 AM0 AM7 AM6 AM5 AM4 AM3 AM2 AM1 AM0

Organisation des filtres de 8 bits avec un index standard (11 bits)


IDR0
Index reçu
ID10 ID9 ID8 ID7 ID6 ID5 ID4 ID3

CANIDAR0
AC7 AC6 AC5 AC4 AC3 AC2 AC1 AC0
Premier filtre
CANIDMR0
AM7 AM6 AM5 AM4 AM3 AM2 AM1 AM0

CANIDAR1
AC7 AC6 AC5 AC4 AC3 AC2 AC1 AC0
Second filtre
CANIDMR1
AM7 AM6 AM5 AM4 AM3 AM2 AM1 AM0

CANIDAR2
AC7 AC6 AC5 AC4 AC3 AC2 AC1 AC0
Troisième filtre
CANIDMR2
AM7 AM6 AM5 AM4 AM3 AM2 AM1 AM0

CANIDAR3
AC7 AC6 AC5 AC4 AC3 AC2 AC1 AC0
Quatrième filtre
CANIDMR3
AM7 AM6 AM5 AM4 AM3 AM2 AM1 AM0

CANIDAR4
AC7 AC6 AC5 AC4 AC3 AC2 AC1 AC0
Cinquième filtre
CANIDMR4
AM7 AM6 AM5 AM4 AM3 AM2 AM1 AM0

CANIDAR5
AC7 AC6 AC5 AC4 AC3 AC2 AC1 AC0
Sixième filtre
CANIDMR5
AM7 AM6 AM5 AM4 AM3 AM2 AM1 AM0

CANIDAR6
AC7 AC6 AC5 AC4 AC3 AC2 AC1 AC0
Septième filtre
CANIDMR6
AM7 AM6 AM5 AM4 AM3 AM2 AM1 AM0

CANIDAR7
AC7 AC6 AC5 AC4 AC3 AC2 AC1 AC0
Huitième filtre
CANIDMR7
AM7 AM6 AM5 AM4 AM3 AM2 AM1 AM0
Page 115 sur 193 Les réseaux IUT de CACHAN
Version 2017 en Informatique Industrielle H. Angelis

Il faut être extrêmement prudent avec les filtres de 8 bits qui ne testent pas la valeur du bit
RTR. Il est très fortement déconseillé de les utiliser, sauf à refaire un filtrage logiciel à postériori.
Il est conseillé d'utiliser des filtres de 16 bits (suffisant pour les trames au format standard),
mais seuls les filtres de 32 bits sont capables d'analyser les trames au format CAN 2.0B dans leur
intégralité. Il est donc fortement déconseillé d'utiliser les filtres de 16 bits pour les trames étendues.

Exemple de filtre
Un MSCAN est sensible aux adresses (400)16 et (401)16 utilise un filtre de 16 bits pour filtrer les
trames reçues, seul les trames standards l'intéressent.
Traitement de la trame avec un index (400)16
Index IDR0 IDR1
reçu ID10 ID9 ID8 ID7 ID6 ID5 ID4 ID3 ID2 ID1 ID0 RTR IDE
(400)16 1 0 0 0 0 0 0 0 0 0 0 RTR 0

CANIDAR0 CANIDAR1
AC7 AC6 AC5 AC4 AC3 AC2 AC1 AC0 AC7 AC6 AC5 AC4 AC3 AC2 AC1 AC0
1 0 0 0 0 0 0 0 0 0 0 0 0 X X X
NON OU EXCLUSIF
1 1 1 1 1 1 1 1 1 1 1 ? 1 ? ? ?
Premier
filtre
CANIDMR0 CANIDMR1
AM7 AM6 AM5 AM4 AM3 AM2 AM1 AM0 AM7 AM6 AM5 AM4 AM3 AM2 AM1 AM0
0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 1
OU
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

Résultat 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
Message accepté

Traitement de la trame avec un index (401)16


Index IDR0 IDR1
reçu ID10 ID9 ID8 ID7 ID6 ID5 ID4 ID3 ID2 ID1 ID0 RTR IDE
(401)16 1 0 0 0 0 0 0 0 0 0 1 RTR 0

CANIDAR0 CANIDAR1
AC7 AC6 AC5 AC4 AC3 AC2 AC1 AC0 AC7 AC6 AC5 AC4 AC3 AC2 AC1 AC0
1 0 0 0 0 0 0 0 0 0 0 0 0 X X X
NON OU EXCLUSIF
1 1 1 1 1 1 1 1 1 1 0 ? 1 ? ? ?
Premier
filtre
CANIDMR0 CANIDMR1
AM7 AM6 AM5 AM4 AM3 AM2 AM1 AM0 AM7 AM6 AM5 AM4 AM3 AM2 AM1 AM0
0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 1
OU
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

Résultat 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
Message accepté
IUT de CACHAN Les réseaux en Page 116 sur 193
H. Angelis Informatique Industrielle Version 2017

Traitement de la trame avec un index (402)16


Index IDR0 IDR1
reçu ID10 ID9 ID8 ID7 ID6 ID5 ID4 ID3 ID2 ID1 ID0 RTR IDE
(402)16 1 0 0 0 0 0 0 0 0 1 0 RTR 0

CANIDAR0 CANIDAR1
AC7 AC6 AC5 AC4 AC3 AC2 AC1 AC0 AC7 AC6 AC5 AC4 AC3 AC2 AC1 AC0
1 0 0 0 0 0 0 0 0 0 0 0 0 X X X
NON OU EXCLUSIF
1 1 1 1 1 1 1 1 1 0 1 ? 1 ? ? ?
Premier
filtre
CANIDMR0 CANIDMR1
AM7 AM6 AM5 AM4 AM3 AM2 AM1 AM0 AM7 AM6 AM5 AM4 AM3 AM2 AM1 AM0
0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 1
OU
1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1

Résultat 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1
Message refusé

Le Mode INIT
Le mode INIT permet d'effectuer des modifications pouvant compromettre le fonctionnement
du MSCAN. Cet état permet par exemple de modifier les registres CANBTR01 et CANBTR1, qui agissent
sur le synchronisme du bus CAN.
Le passage en mode INIT se fait en plaçant à '1' le bit INITRQ2 du registre CANCTL0.
Immédiatement le MSCAN stoppe sa transmission (s'il émet) ou arrête de recevoir (s'il est en
réception). Dans le cas d'une transmission, le buffer de transmission est restauré (pas de perte du
message), mais il est n'est plus possible d'émettre avant le retour à l'état normal. Dans le cas d'une
réception, le message en cours de réception est lui par contre perdu lors du passage en mode INIT. La
synchronisation avec la ligne est perdue puis le MSCAN met à '1' le bit INITAK3 du registre CANCTL1.
Dès lors les registres CANCTL0, CANRFLG, CANRIER, CANTFLG, CANTIER, CANTARQ CANTAAK
et CANTBSEL sont remis à l'état RESET et les registres CANBTR0, CANBTR1, les registres CANIDACX et
CANIDMRX sont accessibles en écriture.
Pour sortir du mode INIT, il est indispensable d'attendre que le MSCAN soit totalement passé
en mode INIT, cela veut dire qu'il n'est pas possible de mettre à '0' le bit INITRQ du registre CANCTL0
tant que le bit INITAK du registre CANCTL1 n'est pas passé à '1'.
A la mise à '0' du bit INITRQ du registre CANCTL0, le MSCAN va tout d'abord se synchroniser
avec l'horloge que lui fournit le 9S12, en synchronisant son horloge interne. Dès lors, le bit INITAK
passera à l'état bas. Puis en effectuant des changements de fréquence, via les registres CANBTR0 et
CANBTR1, afin de générer le temps bit, le MSCAN va se resynchroniser avec la ligne de transmission.
Le bit SYNCH sera alors mis à l'état '1'. Si le MSCAN n'est pas à l'état Off, le délai de resynchronisation
sera de 11 temps bit. A l'état Off, il faudra 128 fois 11 bits récessifs pour lui permettre de revenir à un
état de fonctionnement normal.
Il est conseillé de faire passer le MSCAN en mode SLEEP4 avant de le faire passer en mode INIT.

1 Voir : Registre CANBTR0 et CANBTR1, page 101


2 Voir : Bit INITRQ, Registre CANCTL0, page 99
3 Voir : Bit INITAK, registre CANCTL1, page 100
4 Voir : page suivante.
Page 117 sur 193 Les réseaux IUT de CACHAN
Version 2017 en Informatique Industrielle H. Angelis

Le Mode SLEEP
Le mode SLEEP est un mode faible consommation d'énergie qui permet de mettre le MSCAN
en sommeil. Le passage en mode SLEEP se fait en mettant à 1 le bit SLPRQ1 du registre CANCTL0.
Dès lors, le MSCAN va passer en mode SLEEP au plus tôt, c'est à dire, s'il est en réception ou
en transmission, après que le message ait été intégralement respectivement reçu ou transmis. Dans le
cas où le MSCAN est "inactif" (ni transmission, ni réception), il passe immédiatement en mode SLEEP.
Il valide son passage en mode SLEEP en mettant à '1' le bit SLPAK2 de CANCTL1.
En mode SLEEP, du côté bus CAN, le MSCAN est vu comme "déconnecté" cela signifie que la
patte TXCAN (sortie en transmission du MSCAN) est maintenue à l'état récessif. Le MSCAN n'est plus
synchronisé avec l'horloge du bus, il ne peut donc plus effectuer d'opération de réception, il ne peut
donc plus compter les 128 fois 11 bits récessifs qui lui permettent de quitter l'état Off.
Par contre du côté 9S12, le MSCAN est encore accessible. Toutefois, il n'est pas possible
d'annuler une transmission (CANTARQ3) ou de changer le lien entre le buffer de réception de premier
plan (RXFG) et les buffers de réception d'arrière-plan (RXBG). Par contre, le RXFG reste accessible en
lecture, et le bit RXF4 peut être effacé.
Selon l'état du bit WUPE5 du registre CANCTL0, le MSCAN peut se réveiller de deux façons, soit
par la mise à '0' du bit SLPRQ du registre CANCTL0, soit par détection d'une activité sur le bus lorsque
le bit WUPE est actif. Il est toutefois impossible de mettre le bit SLPRQ à '0' après l'avoir mis à '1', tant
que le bit SLPAK n'est pas passé à '1'.
Au réveil, le MSCAN met 11 temps bit à se resynchroniser, il n'est donc pas possible pour le
MSCAN, si il a été réveillé par une activité sur le bus CAN alors que le bit WUPE était actif, de lire la
trame qui l'a éveillée.

1 Voir : Bit SLPRQ, Registre CANCTL0, page 99


2 Voir : Bit SLPAK, registre CANCTL1, page 100
3 Voir : Registre CANTARQ, page 104
4 Voir : Bit RXF, Registre CANRFLG, page 102
5 Voir : Bit WUPE, Registre CANCTL0, page 99
IUT de CACHAN Les réseaux en Page 118 sur 193
H. Angelis Informatique Industrielle Version 2017

Etats du MSCAN
Le MSCAN peut être dans 4 modes généraux de fonctionnement. C'est modes sont :
OFF : Le MSCAN est éteint, seul le bit CANE du registre CANCTL1 est actif, toutes les horloges
sont arrêtées et les broches CANTX et CANRX sont maintenues à l'état récessif. Dans ce mode de
fonctionnement, le MSCAN consomme le minimum d'énergie.
POWER DOWN : Ce mode est déclenché par la mise en arrêt du 9S12 qui se propage à ses
périphériques. Il peut aussi être le fait du passage du 9S12 en mode WAIT, dans ce cas, si le bit CSWAI
est actif, le MSCAN passe en mode POWER DOWN. Ce mode est similaire au mode OFF en termes de
consommation, mais il est le fruit d'un changement d'état du 9S12 et non d'une volonté de
programmation du MSCAN.
SLEEP : Ce mode permet de limiter la consommation du MSCAN en ne maintenant à l'état actif
que les horloges le liant au 9S12 (et donc en désactivant celle du bus CAN). Ce mode permet de limiter
la consommation en gardant le MSCAN accessible.
NORMAL : C'est le mode de fonctionnement normal du MSCAN.
Modes du MSCAN
NORMAL SLEEP POWER DOWN OFF
CSWAI = X CSWAI = X CSWAI = X
RUN SLPRQ = 0 SLPRQ = 1 SLPRQ = X
Modes du 9S12

SLPAK = 0 SLPAK = 1 SLPAK = X


CSWAI = 0 CSWAI = 0 CSWAI = 1 CSWAI = X
WAIT SLPRQ = 0 SLPRQ = 1 SLPRQ = X SLPRQ = X
SLPAK = 0 SLPAK = 1 SLPAK = X SLPAK = X
CSWAI = X CSWAI = X
STOP SLPRQ = X SLPRQ = X
SLPAK = X SLPAK = X

Les interruptions du MSCAN


Le MSCAN est susceptible de déclencher des interruptions sur le 9S12. D'une part, si au moins
un buffer de transmission est vide (via les bits TXEIE du registre CANTIER). D'autre part, via le registre
CANRIER, le MSCAN peut déclencher des interruptions à la fin de la réception d'un nouveau message
(RXFIE), ou lorsqu'il est réveillé par l'activité du bus (WUPIE) ou lorsqu'il change d'état suite à une
accumulation d'erreurs (CSCIE et RSTATEX ou TSTATEX), enfin en cas d'écrasement de données (OVRIE).
Le 9S12 doit acquitter, après chaque interruption, le bit correspondant des registres CANTFLG
ou CANRFLG en mettant celui-ci à '1' et en éliminant les conditions de déclenchement de l'interruption.
Tant que celui-ci n'a pas été remis à zéro, ou tant que les raisons de son apparition sont
toujours présentes, cette interruption s'exécutera en boucle et aucune autre interruption ne sera
générée par le MSCAN.
Page 119 sur 193 Les réseaux IUT de CACHAN
Version 2017 en Informatique Industrielle H. Angelis

Procédure de mise en route du MSCAN


Le but de ce chapitre est de décrire la procédure à mettre en œuvre pour initialiser le MSCAN
et initier la transmission d'un message en configurant la vitesse du bus, en validant les interruptions.
On définira aussi les filtres de réception et on analysera la méthode d'émission et de lecture d'un
message.

Le choix de la vitesse
Commençons par les contraintes de vitesse. Le MSCAN est piloté par une horloge à 24 MHz et
doit transmettre avec un débit de 1 Mbits/s.
Par la méthode décrite dans le chapitre sur la synchronisation des échanges sur le bus, on a
trouvé :
NBRP = 1 NSEG1 = 8 NSEG2 = 3 NSJW = 2

On en déduit que CANBTR0 = 0b0100 0001 = 0x41 et CANBTR1 = 0b0010 0111 = 0x27.

Choix des filtres


On va considérer que le MSCAN doit émettre et recevoir des messages au format CAN2.0A
avec un index égal à 0x400 ou 0x401. On va utiliser pour cela un filtre de 16 bits (pour un traitement
complet de la trame). Un filtre de 8 bits ne permettrait pas une telle sélectivité (Le filtre de 8 bits
permettant de recevoir des messages avec un index compris entre 0x400 et 0x407). Le filtre de 16 bits
a le format suivant :
Index IDR0 IDR1
reçu ID10 ID9 ID8 ID7 ID6 ID5 ID4 ID3 ID2 ID1 ID0 RTR IDE

CANIDAR0 CANIDAR1
Premier AC7 AC6 AC5 AC4 AC3 AC2 AC1 AC0 AC7 AC6 AC5 AC4 AC3 AC2 AC1 AC0
filtre CANIDMR0 CANIDMR1
AM7 AM6 AM5 AM4 AM3 AM2 AM1 AM0 AM7 AM6 AM5 AM4 AM3 AM2 AM1 AM0

On doit donc remplir les registres CANIDAR0, CANIDAR1, CANIDMR0 et CANIDMR1 avec des
valeurs cohérentes avec le choix des index filtrés. Comme le filtre fait un NON OU EXCLUSIF entre
l'index et le masque d'acceptation puis un OU entre ce résultat et le masque d'acceptation. Avec les
valeurs suivantes pour l'index des messages que le MSCAN est sensé recevoir :
ID10 ID9 ID8 ID7 ID6 ID5 ID4 ID3 ID2 ID1 ID0 RTR IDE
1 0 0 0 0 0 0 0 0 0 X X 0 X X X
La seule solution est donc : Toutes les valeurs ayant un 1 ou un zéro doivent être entrées telle
qu'elle dans les registres CANIDAR0 et CANIDAR1 et sous forme de 0 dans les registres CANDIRM0 et
CANIDRM1. Toutes les valeurs ayant un X doivent être entrées dans les registre CANIDAR0 et CANIDAR1
sous une forme quelconque (1 ou 0) et sous forme de 1 dans les registres CANIDRM0 et CANIDRM1.
Cela donne donc :
CANIDAR0 = 0b1000 0000 = 0x80 CANIDRM0 = 0b0000 0000 = 0x00
CANIDAR1 = 0b0000 0000 = 0x00 CANIDRM1 = 0b0011 0111 = 0x37
IUT de CACHAN Les réseaux en Page 120 sur 193
H. Angelis Informatique Industrielle Version 2017

Initialisation du MSCAN
Le MSCAN est considéré comme Invalidé par le 9S12. On va tout d'abord l'activer
CANE = '1' :
Le MSCAN est maintenant activé, il est à l'état RESET, c'est à dire en mode INIT. On va
maintenant le configurer pour un fonctionnement normal.
On commence par configurer les 2 registres CANBTR0 et CANBTR1 avec les valeurs définies
précédemment. On va ensuite mettre en place les filtres. Pour cela, on va commencer par choisir le
mode de filtrage en modifiant la valeur des bits IDAMX du registre CANIDAC. Dans notre cas on va
choisir le mode 01 (4 filtres de 16 bits).
On va maintenant remplir les registres CANIDARX et CANIDMRX avec les valeurs décrites
précédemment. On remplira les registres inutilisés avec la valeur 0x00 pour éviter de recevoir des
données non souhaitées.
Il faut noter que l'on peut configurer dans n'importe quel ordre les registres décris
précédemment, le MSCAN étant en mode INIT, aucune transmission et aucune réception n'a lieu
pendant cette phase.
Le MSCAN est maintenant quasiment prêt à être activé. Il ne reste plus qu'à définir l'état de
certains bits "périphériques" :
• CSWAI : inutilisé, donc CSWAI = 0.
• TIME : inutilisé, donc TIME = 0.
• WUPE : inutilisé, donc WUPE = 0.
• CLKSRC : on utilise l'horloge interne, donc CLKSRC = 0.
• LOOPB : pas de rebouclage, donc LOOPB = 0.
• LISTEN : comme LOOPB, donc LISTEN = 0.
• BORM : On ne compte pas passer à l'état Off, donc BORM = 0
• WUPM : Peu importe, donc WUPM = 0.
On arrive à : CANCTL0 = 0x01 et CANCTL1 = 0xC0
Reste maintenant à quitter le mode INIT mettant INITRQ du registre CANCTL0 à '0'.
On est réellement sorti du mode INIT, lorsque l'on a INITAK à '0' et SYNCH à '1'.
On va initier maintenant une transmission. Pour cela, on va commencer par définir l'état des
bits d'interruption des registres de contrôle d'interruption CANRIER et CANTIER. Comme notre MSCAN
doit fonctionner en émission comme en réception, on doit donc traiter le déclenchement
d'interruption dans les cas suivants :
• A la réception d'un message.
• Si le MSCAN change d'état à cause de la réception de trames.
• Si le MSCAN change d'état à cause de la transmission de trames.
• S'il y a écrasement de messages en réception (la FIFO est pleine).
Cela reviens à dire que le MSCAN doit avoir la valeur 0x7F dans le registre CANRIER et la valeur
0x00 dans le registre CANTIER.
Reste maintenant à effectuer une transmission, par exemple à l'adresse 0x400, d'un message
de 3 octets (0x12, 0x34, 0x56).
Page 121 sur 193 Les réseaux IUT de CACHAN
Version 2017 en Informatique Industrielle H. Angelis

Exemple de la transmission d'un message


Pour initier une transmission, il faut avant tout choisir un buffer de transmission. Pour cela, il
suffit de copier le registre CANTBSEL dans lui-même. Cela reviens à dire que le selon l'état de CANTBSEL
on sélectionne le premier buffer disponible :
Valeur de CANTBSEL Registre sélectionné
0 Aucun (tous sont occupés)
1 TX0
2 TX1
3 TX0
4 TX2
5 TX0
6 TX1
7 TX0
On considère que le registre CANTBSEL contenait le code 0x07, on a donc sélectionné le
registre TX0. La structure de ce registre étant :
Adresse Acronyme Nom du registre Remarques
X+0 IDR0 Identificateur 0
X+1 IDR1 Identificateur 1
X+2 IDR2 Identificateur 2 Uniquement pour index 29 bits
X+3 IDR3 Identificateur 3 Uniquement pour index 29 bits
X+4 DATA0 1er octet de données
X+5 DATA1 2ème octet de données
X+6 DATA2 3ème octet de données
X+7 DATA3 4ème octet de données
X+8 DATA4 5ème octet de données
X+9 DATA5 6ème octet de données
X + 10 DATA6 7ème octet de données
X + 11 DATA7 8ème octet de données
X + 12 DLCR Longueur du champ de données
X + 13 TBPR Priorité de transmission Uniquement en transmission
X + 14 TSRH Octet de poids Fort
Horaire
X + 15 TSRL Octet de poids faible
On va maintenant procéder à son remplissage.

L'identificateur :
Le notre vaut 0x400 avec une trame au format CAN 2.0A. Cela revient à mettre dans les
registres IDRX les valeurs suivantes :
IDR0 = 0x80 IDR1 = 0x00 IDR2 = 0x00 IDR3 = 0x00
Remarque : peu importe les valeurs dans IDR2 et IDR3, elles ne seront pas prises en compte du
fait du bit IDE (ici à '0' car il s'agit d'une trame au format CAN 2.0A). De même IDR1 définit aussi l'état
du bit RTR (ici à '0' car il s'agit d'une trame de données).

Les données :
Il suffit de placer dans les registres DATA0, DATA1 et DATA2, respectivement les octets suivants
:
DATA0 = 0x12 DATA1 = 0x34 DATA2 = 0x56
IUT de CACHAN Les réseaux en Page 122 sur 193
H. Angelis Informatique Industrielle Version 2017

La longueur du champ de données :


Le champ de données étant composé de 3 octets, la valeur à entrer est donc 3. Le registre DLCR
doit donc être chargé avec la valeur 0x03.
DLCR = 0x03

La priorité :
Le registre TBPR peut être laissé vide (il n'y a qu'un seul buffer d'utilisé, il n'y a donc pas de
priorité à respecter). Toutefois, on pourra le mettre à 0.
TBPR = 0x00
Reste à autoriser l'émission du message en mettant à '1' le bit TXE0 du registre CANTFLG.
Attention seul le bit TXE0 doit être modifié, il est donc indispensable de faire cette opération par
masquage :
1. Lecture du registre CANTFLG.
2. OU logique entre le registre lu et la valeur 0X01
3. Ecriture du résultat du OU dans CANTFLG.
Ou par une modification de bit, à l'aide d'un opérateur adapté. En aucun cas, il ne faut écrire
une valeur "immédiate" dans ce registre.
Le message est alors programmé pour une transmission. Lorsque le bus CAN sera libre et que
la priorité du message lui permettra d'être émis (par comparaison des index dans le champ
d'arbitrage), le message sera transmis. Une fois le message transmis, le bit TXE0 du registre CANTFLG
va passer à "1", sans déclencher d'interruption sur le 9S12.
On peut noter que le bit RXACT du registre CANCTL0 restera à "0" pendant toute la
transmission.

Exemple de réception d'un message


Le MSCAN est maintenant à l'état idle (pas d'activité, ni en réception, ni en transmission), une
activité apparaît alors sur le bus.
Le MSCAN met immédiatement à "1" le bit RXACT du registre CANCTL0, puis, en considérant
que sa FIFO de réception est vide, il y a mise en mémoire dans l'un des RXBG du message en cours de
réception.
Lorsque la trame a été intégralement reçue, le bit RXFRM est activé (cela signifie qu'une trame
a été reçue, pas qu'elle nous est destinée), puis les index sont comparés aux filtres réalisés par les
registres CANIDARX et CANIDMRX. Si le message correspond à l'un des filtres, le message est mis en
mémoire, autrement, il est rejeté et le buffer de réception est automatiquement vidé.
Si le message est accepté, par exemple si son index est 0x401, le bit RXF du registre CANRFLG
passe à '1', en même temps que le buffer de réception RXBG est mappé sur le RXFG. De plus, le filtre
qui a autorisé le passage du message dans la FIFO met à '1' les bits IDHITX du registre CANIDAC qui
correspondent à son numéro.
Du fait des valeurs des registres d'interruption CANRIER et CANTIER, une interruption est
déclenchée sur le 9S12. Celle-ci doit donc venir lire la FIFO et copier son contenu dans la mémoire du
microcontrôleur. Une fois cette manipulation effectuée, le 9S12 doit effacer le bit RXF en écrivant un
'1' à sa place.
Attention, cette opération doit être faite par une opération sur un bit ou par masquage
(comme expliqué précédemment lors de l'étude de la transmission).
Page 123 sur 193 Les réseaux IUT de CACHAN
Version 2017 en Informatique Industrielle H. Angelis

Ethernet
Ethernet est un réseau local inventé en 1974 pour XEROX PARC, dans leurs laboratoires de
Palo-Alto par :

Robert Metcalfe David Boggs

Basé sur les travaux de Robert Metcalfe, Ethernet est le standard réseau le plus utilisé au
monde. Il est né de la volonté de XEROX de créer une alternative au réseau Token Ring d'IBM et Token
bus de General Motor, qui était alors les réseaux les plus utilisés au monde, en se basant sur les travaux
de l'université de Hawaï et de son réseau universitaire (sans fil) ALOHANet.
Il doit son développement à l'association de 3 industriels de la silicon valley DEC, fabricant
d'ordinateurs, Xerox, fabricant d'équipements informatiques (imprimantes, ordinateurs, etc.) et
d'Intel, fabricants de composants. Cette alliance, connue sous le nom de DIX (Dec Intel Xerox), et
inventée pour standardiser et diffuser le réseau Ethernet, fut accompagnée par la fondation par
Metcalfe de la société 3Com qui a conçu les premiers équipements Ethernet "grand public".
Ethernet s'est avec le temps transformé, technologiquement (comme on le verra plus loin),
mais aussi économiquement puisque d'un réseau propriétaire, il est devenu un réseau ouvert. Ses
promoteurs ont volontairement ouvert le protocole pour permettre sa diffusion plus efficace et en se
concentrant sur leurs spécialités respectives.
Conçu à l'origine comme un réseau portant les protocoles d'impression de Xerox (XPS), il a
évolué pour devenir le conteneur "universel" des transmissions de données. Contrairement aux
réseaux vu précédemment, Ethernet n'est pas fait pour transmettre des commande, mais bien pour
des échanges de données en grande quantité et à fort débit.

Evolution technologique
Premiers prototypes
En 1973 apparait la première version
d'Ethernet. C'est un prototype à 2,94 Mbit/s (voir
ci-contre le dessin original de Robert Metcalfe).
Le réseau par lui-même est représenté par le gros
trait jaune (qui plus tard deviendra un gros câble
jaune) sur lequel on connecte un Transciever qui
est relié par un câble à la station de travail.
C'est David Boggs qui va développer
l'ensemble technologique du réseau en se basant
sur son savoir-faire d'ingénieur spécialisé dans les communications hertziennes et de radioamateur.
IUT de CACHAN Les réseaux en Page 124 sur 193
H. Angelis Informatique Industrielle Version 2017

10 Base 5
Xerox va continuer le développement de ce réseau et porter en 1978 son débit à 10 Mbits/s.
Le réseau est alors capable de faire communiquer une centaine de nœuds sur un réseau de 500m de
long en bande de base à 10 Mbits/s, c'est donc sous le nom de Ethernet 10 (pour 10 Mbit/s) BASE (pour
bande de base) 5 (pour 500 m) que Bob Metcalfe va le commercialiser en mars 1981.
L'idée de Robert Metcalfe mise en œuvre par David Boggs fut de séparer la partie numérique
(la carte réseau de la station de travail) ou NIC pour Network Interface Card de la partie analogique (le
transciever) ou MAU pour Medium Attachment Unit.

Le transciever Ethernet 10 BASE 5 Câble 10 BASE 5 avec 4


Transciever 10 BASE 5 "moderne"
personnel de D. Boggs transcievers.

Sur l'image centrale on voit sur le câble jaune des bandes noires, elles indiquent où peuvent
être connectés les transcievers. Au-dessus des transcievers (particulièrement bien visible sur l'image
de gauche), on voit la prise vampire qui permet de se raccorder au câble réseau. De même on y voit le
câble d'interfaçage (AUI) entre la station de travail et le transciever.
Ce réseau va être un grand succès et va obtenir en 1983 sa standardisation sous le nom de IEEE
802.3. Ethernet évolue alors très vite vers d'autres types de supports de communication, poussé par
la multitude de société qui se créent pour développer des offres Ethernet.

10 BASE 2
En 1983 apparait une version d'Ethernet sur câble coaxial fin et
souple (ce qui n'était pas le cas du câble jaune qui mesurait 1 cm de
diamètre et qui était rigide). Ce nouveau support est plus pratique mais
moins performant que le 10 BASE 5. La longueur maximum du réseau
devient 185 m (ramené au niveau de la dénomination commerciale à
200 m) avec 30 nœuds par segments et 3 segments maximum.
Là encore le succès est au rendez-vous et le réseau 10 BASE 2 va
obtenir sa standardisation sous le nom de IEEE 802.3a.
Cette fois ci il n'y a plus de séparation entre la carte réseau (NIC) et le transciever (MAU), ce
n'est plus la MAU qui va au câble, mais le câble qui va à la MAU.

10 Base T
En 1990, apparait la version en paire torsadée d'Ethernet appelée 10 BASE T avec un T pour
Twisted pair. Elle permet de connecter jusqu'à 1024 nœuds sur un segment de 100m de long et d'avoir
un réseau composé d'au maximum 4 segments de paires torsadée de catégorie 3.
Plus qu'un simple changement de support, c'est surtout un changement de topologie qui se
cache derrière cette norme avec une disparition du bus au profit de l'étoile (un peu moins fragile que
le bus).
Page 125 sur 193 Les réseaux IUT de CACHAN
Version 2017 en Informatique Industrielle H. Angelis

Avec la topologie étoile, arrivent le Hub et le Switch (le switch arrivera un peu plus tardivement
que le hub).

Cette nouvelle topologie rencontre elle aussi un énorme succès, elle est quasi immédiatement
normalisée sous la norme IEEE 802.3i

10 BASE FL
Ethernet existe désormais en technologie COAX à moyenne et courte distance, il dispose d'une
topologie de distribution, il ne lui manque plus que la liaison longue distance.
Il y a eu des tentatives en particulier avec
10 BROAD 36 (liaison de 3,6 Km sur du câble coaxial télévision
à 75Ω) ou FOIRL (Fiber-Optic Inter-Repeater Link), mais sans
succès commercial.
En 1993, apparait 10 BASE FL (FL pour Fiber-Link) qui
permet des liaisons de 2 km par fibre optique entre n'importe
quel équipement du réseau (nœud, hub, répéteur, etc.), alors
que FOIRL ne fonctionnait qu'entre répéteur (ou autres DCE).
Là encore cette norme sera standardisée sous la référence
IEEE 802.3j.
Ethernet offre alors un protocole réseau porté par tout type de support (coax, paire torsadée,
fibre optique) à 10Mbit/s. En un peu plus de 10 ans, Ethernet a prouvé qu'il s'avait s'adapter, là où les
autres réseaux mettait beaucoup de temps à faire évoluer leur technologie, Ethernet offre des
nouveautés à un rythme d'environ un progrès majeur tous les 3 ans…

100 Mbit/s
Les supports différent existant et avec le boom d'internet, Ethernet doit augmenter son débit,
ce qu'il n'arrêtera pas de faire. En 1995 apparait Fast-Ethernet en plusieurs versions :
• 100 BASE TX : transmission sur une paire torsadée de catégorie 5 (par sens) en full duplex.
• 100 BASE T4 : transmission sur 4 paires torsadées (T4) de catégorie 3 (pour pouvoir utiliser les
infrastructures existantes) en half duplex.
• 100 BASE FX : transmission sur une fibre optique multimode à 1300 nm sur 400 m (en half duplex)
et 2 km en full duplex.
• 100 BASE SX : transmission sur une fibre optique multimode à 850 nm sur 500 m en full duplex
avec des fibres low-cost.
• 100 BASE LX10 : transmission sur deux fibres optiques monomodes à 1310 nm sur 10 Km en full-
duplex.
Apparait aussi un progrès technologique notable : l'auto-négociation.
IUT de CACHAN Les réseaux en Page 126 sur 193
H. Angelis Informatique Industrielle Version 2017

Auto-négociation
Le principe de l'auto-négociation repose sur l'envoi par chacun des deux nœuds en
communication d'une série d'impulsions qui décrivent leurs modes de fonctionnement possibles. Les
nœuds choisissent alors le mode de fonctionnement qui est le plus efficace pour la communication via
une liste de priorité.
La trame d'auto-négociation est composée d'une série de 16 impulsions de 125 µs chacune
(soit 2 ms par trame), envoyée toutes les 16ms lorsque le bus est inutilisé. Dans cette série d'impulsion
les '1' sont représenté par une impulsion à mi-période et les '0' par l'absence de cette impulsion.
La trame est structurée en 3 zones :

• Bits 0 à 4 (Sélecteur de norme réseau) : Seules 2 normes existent, mais il est possible
d'en augmenter le nombre puisque ce champ dispose de 5 bits, il s'agit de IEEE 802.3
(Ethernet) et IEEE 802.9 (ISO Ethernet).
• Bits 5 à 12 (Capacité technologique) : Comme indiqué dans l'illustration ci-dessus,
chaque nœud doit décrire les technologies qu'il accepte.
• Bit 13 à 15 (Flags) :
o RF (Remote Fault) est actif (à '1') quand le récepteur a détecté un problème.
o Ack (Acknowledge) est actif (à '1') pour signaler une réception correcte du
paquet précédent.
o NP (Next Page) est actif (à '1') pour signaler que d'autres pages sont à
récupérer.

1 Gbit/s
En 1998, la norme IEEE 802.3z standardise la transmission à 1 Gbit/s, au début limitée aux
fibres optiques avec les normes 1000 BASE SX (220m sur fibres multimode low-cost ou 550 m sur des
fibres optiques de bonne qualité, à 850 nm) et 1000 BASE LX (550 m sur fibres multimode à gradient
d'indice ou 5 km sur des fibres optiques monomode, à 1300 nm).
Un an plus tard (1999), Les versions de Gigabit sur paires torsadées sont standardisées sous la
référence IEEE 802.3ab. La norme 1000 BASE T utilise 2 fois 2 paires pour une transmission full-duplex
avec auto-négociation.
Arriveront plus tard 1000 BASE TX (Gigabit full-duplex sur 2 paires torsadées, et non plus 4
comme avec 1000 BASE T), 1000 BASE LX10 (Gigabit sur 10 km en fibre monomode), 1000 BASE EX
(40 km), 1000 BASE ZX (70 km à 1550 nm) et 1000 BASE BX10 (10 km en full-duplex dans 1 fibre unique
avec 2 longueurs d'onde de 1550 et 1310 nm, une pour chaque sens de communication).
Page 127 sur 193 Les réseaux IUT de CACHAN
Version 2017 en Informatique Industrielle H. Angelis

10 Gbit/s
En 2002 apparaissent sous la norme IEEE 802.3ae, les réseaux :
• 10G BASE SR (Short Range) : 2 fibres multimodes sur 400 m à 850 nm.
• 10G BASE LR (Long Range) : 2 fibres monomodes sur 10 km à 1310 nm.
• 10G BASE ER (Extended Range) : 2 fibres monomodes sur 40 km à 1550 nm.
• 10G BASE LX4 : 2 fibres multimodes (300 m) ou monomode (10 km) à 1310 nm en
WDM (Wavelength Division Multiplexing).
Et les réseaux 10G BASE SW, LW et EW, qui sont des versions de
10 Gigabit Ethernet intégrant un protocole SONET/SDH qui est celui des
télécoms internationales. Cette norme sera complétée en 2006 par la
norme IEEE 802.3an instaurant le 10 Gigabit sur cuivre avec 10G BASE T
(2 fois 2 paires torsadées, full-duplex sur du câblage de catégorie 6a, 7 ou
plus).

Power over Ethernet (PoE)


L'année suivante (2003), apparait la norme IEEE 820.3af qui introduit la possibilité d'utiliser
des paires libres dans une liaison pour leur faire transporter une alimentation électrique continue,
initialement de 15,4 W sous la forme d'une tension d'environ 44 V et un courant ne dépassant pas
350 mA. En 2009, cette puissance sera portée à 25,5W (IEEE 802.3at).

40 Gbit/s, 100 Gbit/s et plus


Ethernet ayant remplacé à peu près tous les autres réseaux de transmission haut débit et
longue distance, il continue son évolution en vitesse et en diversification.
En 2010, apparait la norme IEEE 802.3ba (liaisons à 40 et 100 Gbit/s sur fibre optique).
En 2011, Alcatel-Lucent a annoncé travailler à une version 400 Gbits/s.
En 2013, Arista annonce le premier switch 30 Tbit/s avec 96 canaux à 100 Gbit/s
En 2014 la norme IEEE 802.3bp (Gigabit sur une seule paire pour l'automobile et l'industrie).
Et, attendue pour 2016, IEEE 802.3bq (40G BASE T ou 40 Gbit sur cuivre).

Le protocole CSMA/CD
Ethernet ne décrit que les deux couches les plus basses de la structure OSI.
La couche physique permet de se connecter via 3 familles de média : paire torsadée (UTP),
Câble coaxial et fibre optiques.
La couche d'accès au médium utilise le protocole CSMA/CD normalisé (IEEE 802.3) et c'est elle
qui caractérise le réseau Ethernet et cela malgré le fait que les collisions aient totalement disparu de
nos jours avec l'utilisation de Switchs et de liaisons full-duplex.
CSMA/CD signifie Carrier Sens Multiple Access with Collision Detection ou Accès multiple par
détection de porteuse avec détection de collisions.
Le principe du protocole CSMA/CD repose sur la détection des collisions et l'arrêt des
communications en cas de collision. Comme pour les autres réseaux, un nœud est systématiquement
récepteur lorsqu'il émet. Il compare donc les données qu'il envoie avec celles qu'il lit et en cas de
différence, il interprète cela comme une collision, c'est-à-dire l'empilement de 2 messages.
Pour que cela puisse se produire, il est indispensable de 2 nœuds puissent émettre sur un
même canal, mais comme les réseaux modernes utilisent une voie par sens de communication avec
des liaisons point à point, il est devenu totalement impossible d'avoir des collisions.
IUT de CACHAN Les réseaux en Page 128 sur 193
H. Angelis Informatique Industrielle Version 2017

Exemple
Analysons le principe de la détection de collision :
Etape 0 Etape 1

Etape 2 Etape 3

Etape 4 Etape 5

Etape 6 Etape 7

Etape 8 Etape 9

Etape 10 Etape 11

Etape 12 Etape 13
Page 129 sur 193 Les réseaux IUT de CACHAN
Version 2017 en Informatique Industrielle H. Angelis

Analyse
Dans cet exemple, A et C sont placés aux deux extrémités du réseau et B est une machine
placée quelque part sur la ligne.
A cherche à émettre, comme le bus est libre, il émet (temps T0 = 0). Son message se propage
et atteint B (temps T1), qui détecte un message et sait que la ligne est occupée. Le message continue à
se propager. Peu de temps avant que le message n'atteigne C, celui-ci qui constate que le bus est libre
envoie son message (temps T2). Le message de A atteint C (temps T3), qui se rend compte que le
message qu'il envoie n'est pas celui qu'il lit.
Il émet alors du brouillage. Après quelques instants, B détecte du brouillage (temps T4), il
rejette tout le message qu'il a lu jusqu'à présent. Le message envoyé par C finit par arriver sur A (temps
T5) qui détecte que ce qu'il envoie n'est pas ce qu'il lit.
A envoie du brouillage à son tour.
Au bout d'un certain temps (T6), C a terminé
d'envoyer son brouillage, mais il lit toujours celui de A.
Enfin, A a fini d'envoyer son brouillage (temps T7) et
détecte que la ligne est libre, le temps que la fin du
brouillage se propage, C aussi détecte que la ligne est libre (temps T8).
Connaissant la vitesse de propagation et les longueurs du réseau, on trouve :
𝐿1 𝐿 𝐿 2𝐿 − 𝐿1 2𝐿 3𝐿 4𝐿 5𝐿
𝑇1 = 𝑇2 = −𝜀 𝑇3 = 𝑇4 = 𝑇5 = −𝜀 𝑇6 = −𝜀 𝑇7 = −𝜀 𝑇8 =
𝑉𝜑 𝑉𝜑 𝑉𝜑 𝑉𝜑 𝑉𝜑 𝑉𝜑 𝑉𝜑 𝑉𝜑

Si on fait abstraction de B qui est une machine placée de façon quelconque sur le réseau, les
temps entre A et C s'expriment en L/Vϕ. Si L est la longueur maximum du réseau alors, le temps de
faire un aller-retour est 2L/ Vϕ. C'est le temps après lequel, si on n'a pas reçu le brouillage d'une
collision, on est certain d'avoir gagné la parole. Ce temps est appelé Time Slot. La durée d'émission du
brouillage est égale au Time Slot.
Si on analyse maintenant la sortie de collision, c'est-à-dire ce qui se passe après l'étape 11, on
constate que si au bout mettons d'un Time Slot, A décide de parler (le bus est libre, il a le droit de le
faire), alors si C aussi décide d'envoyer son message, on aura une nouvelle fois une collision.
On va donc procéder sur les nœuds à une attente aléatoire après chaque collision et on fera
en sorte que ce temps augmente à mesure que les collisions s'accumulent. Tant et si bien que si
beaucoup de nœuds sont sur un réseau et qu'ils collisionnent, on peut avoir un effet domino : un
effondrement de réseau.
Dans ce cas tous les nœuds sont en attente de la parole et personne ne parle sur le réseau, et
si quelqu'un parle, il y a de bonne chance qu'il collisionne, le forçant à revenir à l'attente, jusqu'à ce
que le nombre de collisions successives atteigne un seuil et que la carte réseau arrête de
communiquer.
IUT de CACHAN Les réseaux en Page 130 sur 193
H. Angelis Informatique Industrielle Version 2017

La trame Ethernet

La trame Ethernet est sur 2 niveaux de la structure OSI, une partie de la trame appartient à la
couche physique, elle peut donc être présente sur le bus (selon la couche physique que l'on utilise),
mais elle n'est pas visible lorsque l'on analyse les trames. L'autre partie de la trame est liée à la couche
de liaison, on la retrouve donc systématiquement quelle que soit la couche physique ou la vitesse du
réseau. La couche physique associée à la trame ci-dessus est Ethernet 10 BASE 5.

Attention, Ethernet utilise un codage de l'information Little-Endian.

Le préambule
Le préambule est constitué de 7 octets permettant la régénération de l'horloge de l'émetteur.
Il est composé d'une alternance de '1' et de '0', formant l'octet : 1010 1010, qui se lit de la gauche vers
la droite soit 0x55 (format Little-Endian)

Le Start Frame Delimiter


Le SFD (noté S dans l'illustration) est l'octet qui indique le début de la trame Ethernet II (c'est-
à-dire la trame Ethernet conçue à l'époque du 10 BASE 5). C'est l'octet 10101011 (0x5D en format
Little-Endian).

Les adresses de destination et de source


Page 131 sur 193 Les réseaux IUT de CACHAN
Version 2017 en Informatique Industrielle H. Angelis

L'adresse Ethernet est sur 48 bits ce qui signifierait 248 adresses disponibles soit environ
256 Téra adresses (de quoi rendre chaque nœud unique). Mais l'IEEE a défini deux classes d'adresses :
Une adresse peut être universelle, c'est-à-dire composé d'un numéro constructeur fourni par l'IEEE et
d'un numéro de série donné par le constructeur (et théoriquement unique), ou une adresse peut être
administrée localement, c'est-à-dire entrée par l'utilisateur.

Le bit U/L
Les numéros constructeurs sont fournis par l'IEEE et appelés "Organizationally Unique
Identifier" ou "OUI". Pour chacun de ces identificateurs uniques, il y a (théoriquement) 224 numéros de
série soit 16 Méga adresses, dont la gestion est confiée au constructeur.
Pour une adresse administrée localement, il n'y a pas de règle précise, cela laisse à l'utilisateur
la possibilité de faire un choix parmi 247 adresses de disponibles soit 128 Téra adresses.

Le bit I/G
Uniquement pour l'adresse de destination, il est possible de faire du multicast en activant le
bit I/G. Lorsqu'il est à '1' le bit I/G signale que le message est à destination de plusieurs nœuds
(Multicast) ou de tous (Broadcast). L'adresse de Broadcast est la plus connue de toutes les adresses
MAC : FF FF FF FF FF FF où encore 48 bits à '1'…
Lorsque le bit I/G est à '0', on est en dialogue Unicast. C'est-à-dire le dialogue 1 vers 1.

Le type
Si à l'origine Xerox a publié une norme où le champ Type est nommé Length (longueur en
Anglais), l'IEEE, en se basant sur les travaux de l'alliance DIX, à normalisé Ethernet, en en faisant un
conteneur pour les trames d'autres protocoles, et en affichant dans ces 2 octets un code "l'Ethertype"
qui définit le contenu du champ de donnée de la trame Ethernet.
Il y a de très nombreux Ethertypes (plusieurs centaines). Les Ethertypes que nous utiliserons
dans ce document sont IP (0x0800), ARP (0x0806) et IPv6 (0x86DD).

Le champ de donnée
Le champ de données est utilisé par les couches supérieures pour y placer des données. Ce
champ doit contenir au moins 46 octets. Si une trame ne contient pas assez de données pour remplir
cet intervalle, on utilise des octets de remplissage pour compléter l'espace.

Le FCS
Le FCS (Frame Check Sequence) utilise un polynôme de CRC pour coder la trame précédente
et apporter ainsi une validation de contenu. Le polynôme générateur est :
CRC-32
width=32, poly=0x04c11db7, init=0xffffffff, refin=true, refout=true, xorout=0xffffffff,
check=0xcbf43926, name="CRC-32"
Sous forme mathématique on obtient :
𝐺(𝑥) = 𝑥 32 + 𝑥 26 + 𝑥 23 + 𝑥 22 + 𝑥 16 + 𝑥 12 + 𝑥 11 + 𝑥 10 + 𝑥 8 + 𝑥 7 + 𝑥 5 + 𝑥 4 + 𝑥 2 + 𝑥 + 1
Son implémentation est donnée dans la norme par un schéma :
IUT de CACHAN Les réseaux en Page 132 sur 193
H. Angelis Informatique Industrielle Version 2017

Intertrame
L'intertrame n'est pas à proprement parlé une émission, puisqu'il s'agit d'un silence obligatoire
entre 2 trames pour permettre : Le traitement de la trame précédente, mais aussi, la détection du
début de la trame suivante. Il a la durée de 12 octets.
Page 133 sur 193 Les réseaux IUT de CACHAN
Version 2017 en Informatique Industrielle H. Angelis

TCP/IP
Le 4 Octobre 1957, le vol du premier satellite soviétique : Spoutnik (qui se signifie satellite en
Russe) est un choc pour les Etats-Unis. Le Department Of Defence (DOD) (le ministère de la défense
Etatsunien) initie en réponse, le DARPA (Defence Advanced Research Project Agency) pour permettre
aux USA de reprendre le leadership dans les domaines technologiques et militaires.
Parmi les nombreux projets, l'idée de mettre en œuvre une interconnexion de réseaux les
rendant "invulnérables" aux attaques nucléaires (idée de Paul Baran du RAND) apparaît très tôt.
Internet ne sera toutefois pas développé à des fins militaires mais éducationnelles le DoD financera
pourtant la recherche en lançant un projet qui deviendra ARPANET.
En mai 1961, Leonard Kleinrock (ci-contre) étudiant au MIT présente dans sa
thèse, les bases mathématiques de la commutation de données dans des réseaux à
grande échelle. En 1964 il publie un
article sur le routage par paquet, qui est
à la base du protocole IP et qui s'opposait
aux méthodes de commutation de réseaux des télécoms.
En 1966 Larry Robert (responsable du projet
ARPANET) délègue à Frank Heart (au centre avec la
cravate) et son équipe de la société BBN, la création du
premier IMP (Interface Message Processor), ancêtre de nos
routeurs (la grosse armoire à droite). A gauche de
Frank Heart, en T-Shirt noir, on voit Robert Kahn, alors
chargé par le DARPA de la coordination avec les autres équipes.
En Avril 1969, à l'université de Californie – Los Angeles (UCLA), un groupe de
chercheur conduit par Steeve Crocker (ci-contre) fonde le Network Working Group
(NWG), un groupe ouvert de réflexion et de mise en commun des compétences basé
sur l'utilisation d'un nouvel outil (pour l'instant papier), les RFC (Request for
Comments, ou appel à commentaires).
Le premier IMP est livré le 30 Aout 1969 à l'équipe de Leonard Kleinrock à
l'UCLA et le second le 1 octobre 1969 à celle de Bill Duvall au SRI (Stanford Research Institure).
Le 29 octobre 1969 vers 21h, le premier message sur internet est envoyé par Charley Kline
(UCLA, à gauche) à Bill Duvall (SRI, à droite) en utilisant les IMP de BBN (l'armoire entre les deux).

Le message d'origine devait être "login", Charley envoyait lettre par lettre le message et Bill lui
disait ce qui s'affichait à Stanford. Seul le "lo" arriva l'IMP ayant planté après le "o"… Mais dans les
heures qui suivirent, le message entier fut envoyé, la première communication d'internet venait
d'avoir lieu, faisant de Bill Duvall et Charley Kline les 2 premiers internautes.
IUT de CACHAN Les réseaux en Page 134 sur 193
H. Angelis Informatique Industrielle Version 2017

Le 5 décembre 1969 le premier


réseau ARPANET (à l'époque reliant 4
"supercalculateurs") est mis en œuvre
entre l'UCLA (University of California –
Los Angeles), le Stanford Research
Institute (SRI), l'UCSB (University of
California – Santa Barbara) et l'université
de l'Utah. Il utilise des lignes dédiées
mise en service par AT&T avec un débit
de 50kbit/s.
Le Network Working Group de
Steve Crocker (au centre sur l'image) est renforcé par Vinton Cerf (SRI, à
droite), Jon Postel (UCLA, à gauche). En plus de Leonard Kleinrock (UCLA),
Steve Carr (Utah) et Robert Kahn (DARPA), d'autres participent comme le
Français Michel Elie (UCLA).
En 1970, ARPANET passe à 9 nœuds (juin), puis 13
(décembre). Le protocole NCP (Network Control Protocol) est
adopté comme couche de transport. Le réseau s'étend d'un
bord à l'autre des états unis. UNIX (un autre projet financé par
le DARPA et qui a pour but un langage unique d'utilisation des
ordinateurs) est achevé et commence à se déployer sur les
supercalculateurs DEC.
En 1971, ARPANET commence l'année à 13 nœuds, en
a 15 en Avril et 19 à la fin de l'année. Les protocoles FTP (File Transfert Protocol, protocole d'envoi de
fichier) et Telnet (envoi de commande à distance) sont créés par Abhay Bhushan (FTP, RFC 114) et le
Network Working Group (Telnet, RFC 15).
Page 135 sur 193 Les réseaux IUT de CACHAN
Version 2017 en Informatique Industrielle H. Angelis

En 1972, ARPANET est composé de 30 nœuds. Le NWG devient le INWG


(International Network Working Group) pour inclure les réseaux (non connectés
encore) CYCLADES (réseau Français de la CII) développé par Louis Pouzin (ci-
contre) et le réseau Anglais Mark I. Sa direction est confiée à Vinton Cerf.
Le premier programme permettant d'envoyer des E-mail apparaît
(SNDMSG, développé par Ray Tomlinson de BBN). Il choisit d'utiliser le @ comme
sigle de ponctuation entre l'utilisateur et l'adresse. Son premier mail s'intitulait
"test" et il contenait comme message "QWERTYUIOP". Plus tard Leonard
Kleinrock regrettera (en rigolant) qu'internet ait commencé avec les mots "login", "test" et
"QWERTYUIOP" alors que les astronautes avait "It's a great leap for mankind"…
BBN produit ses premiers TIP (des IMP à 64 connexions) beaucoup plus fiable que les IMP
capables de 4 connexions seulement.
En 1973, ARPANET devient international avec le raccordement du University College of London
et du NORSAR (organisme Norvégien recherche sismique). ALOHANET est le premier réseau sans fil, il
relie 7 supercalculateurs sur 4 îles de l'archipel d'Hawaï. ARPANET est composé de 40 nœuds. Les mails
représentent 75% du traffic.

En 1974, Vinton Cerf, Robert Kahn et Jon Postel présentent le protocole TCP/IP. Le trafic
quotidien sur ARPANET dépasse les 3 millions de paquets.

Robert Kahn Vinton Cerf Jon Postel


En 1975, en plus du DARPA, la NSF (National Science Foundation, une agence américaine pour
le développement des science) commence à financer le développement du réseau, ce qui lui permet
un développement accéléré.
John Vittal invente MSG, le premier logiciel E-mail complet (lecture, tri, transfert, réponse).
ARPANET est composé de 61 nœuds.
IUT de CACHAN Les réseaux en Page 136 sur 193
H. Angelis Informatique Industrielle Version 2017

En 1979, DARPA et NSF commencent à étudier la possibilité de créer le CSNET (Computer


Science research Network), mais le coût de 3 millions de dollars est jugé prohibitif. Naissance des
USENET (les newsgroups automatisés).
Avec les USENET arrive la technique de la requête sur server : Le serveur effectue des tâches
automatisées (dans le cas des USENET, récupérer les messages des autres serveurs) et attends des
requêtes de client pour leur répondre. Auparavant la méthode consistait plutôt à se connecter sur une
machine et en prendre le contrôle à distance.
En 1981, le CSNET est créé pour les universités et les organisations
gouvernementales non reliées à ARPANET, il est financé par la NSF, BBN et le
DARPA. La disparition de NCP au profit de TCP est planifiée. En France on voit
apparaître le Minitel (premier accès à la télématique pour les particuliers). IBM
fabrique son premier Personal Computer (PC) avec MS-DOS (de Microsoft).
En 1982, L'ensemble des réseaux mondiaux commence leur
migration en abandonnant le protocole NCP au profit de TCP/IP.
Scott Fahlman (à droite de l'image) crée les premiers émoticons :
:-) et :-(.
En 1983, NCP a disparu et ARPANET se scinde en 2 entités, d'un
côté MILNET, un réseau militaire et sécurisé) et de l'autre un ARPANET "public" (avec seulement 45
nœuds) qui va être rattaché à CSNET.
L'Europe se connecte (Hollande, Suède, Norvège, Angleterre, Allemagne) à EUNET (European
UNIX Network) version européenne de CSNET qui permet le transfert d'E-mail et l'utilisation des
USENET.
Devant l'augmentation du nombre de nœuds, Jon Postel commence à structurer l'utilisation
des adresses IP et crée le DNS (Domain Name System) avec Paul Mockapetris et Craig Partridge. Jon
Postel sera jusqu'à sa mort en 1998 le grand gestionnaire d'internet d'où son surnom : God (dieu).
On date en général de cette date la création du IANA (Internet Assigned Number Autority).
Page 137 sur 193 Les réseaux IUT de CACHAN
Version 2017 en Informatique Industrielle H. Angelis

En 1984, le Japon crée JUNET, la version asiatique de CSNET, et le Canada fait de même avec
NorthNet. L'URSS implémente une version russe d'USENET. L'ensemble du réseau contient plus de
1 000 nœuds. Le DNS est adopté comme service de nom unique pour tous les réseaux
En 1985, le 1er mars la racine .com est créée vont suivre : .edu, .gov et .org en juin et .uk en
juillet. Le réseau compte 2 000 nœuds
En 1986, la NSF crée NSFNET le réseau des universités américaines sur un backbone à 56 Kbit/s,
regroupant 5 supercalculateurs.
En 1987, plus de 10 000 nœuds sont connectés aux réseaux mondiaux. Plus de 1 000 RFC ont
été créées.
Le NSFNET commence à déployer des liaisons T1 (1,544 Mbit/s).
En 1988, naissance officielle du nom d'internet pour le réseau mondial (alors que c'est le nom
d'un de ses protocoles), lors de la connexion de 7 nouveaux pays (Canada, Danemark, Finlande, France,
Islande, Norvège et Suède) au réseau NSFNET qui fédère déjà les réseaux américains.
Le 2 novembre, le premier vers (worm) réseau est officiellement déclaré. Conçu par Robert
Tappan Morris (d’où son nom de Morris Worm), il infecte à peu près 6 000 des 60 000 nœuds
connectés à internet causant plusieurs millions de dollar de perte par déni de service : en se dupliquant
et en partant infecter d'autres machines, le vers s'accaparait un peu de la mémoire de son hôte, mais
son inventeur n'avait pas prévu qu'il pourrait infecter des machines déjà infectés, d'où une
surconsommation de mémoire qui faisait planter les ordinateurs.
Naissance aussi du protocole IRC (le chat).
En 1989, Internet dépasse les 100 000 nœuds avec la connexion de 10 nouveaux pays à NSFNET
(Allemagne, Angleterre, Australie, Hollande, Israël, Italie, Japon, Mexique, Nouvelle Zélande et Porto
Rico). NSFNET commence à utiliser des liaisons T3 (44,736 Mbit/s).
Les entreprises de télécommunications obtiennent l'autorisation d'utiliser les liaisons internet
existantes (moyennant finance) pour faire transiter des mails et des accès USENET, pour des
utilisateurs privés. Les premiers opérateurs grand public sont MCI Mail, America On Line (AOL),
OnTyme, Telemail et CompuServe aux Etats-Unis et World on Line en Europe.
En 1990, ARPANET disparait, ne reste aux USA que NSFNET auquel viennent se raccorder 11
nouveaux pays (Argentine, Autriche, Belgique, Brésil, Chili, Corée du sud, Espagne, Grèce, Inde, Irlande
et Suisse)
En 1991, NSFNET accueille 10 nouveaux pays (beaucoup du bloc de l'Est puisque le mûr viens
de tomber).
Au CERN à Genève Tim Berners-Lee (à
gauche) crée le World Wide Web en développant le
protocole HTTP (Hyper Text Transfert Protocol). Le
premier site Web (historiquement) est
http://info.cern.ch (à droite).
On recense un trafic mensuel de 1012 octets (1000 milliards) généré par
les 600 000 nœuds dans plus de 100 pays. La NSF lève toutes les interdictions
concernant l'usage commercial de son
réseau.
La première Webcam apparait avec la Trojan Room
Coffee Pot, une caméra qui filme le pot de café de la cafetière du
laboratoire d'informatique de l'université de Cambridge pour éviter de se déplacer inutilement quand
IUT de CACHAN Les réseaux en Page 138 sur 193
H. Angelis Informatique Industrielle Version 2017

le pot est vide. Elle restera fonctionnelle jusqu'en 2001 date de son extinction définitive. La cafetière
aura été changée plusieurs fois, pas la webcam.
En 1992, 13 nouveaux pays rejoignent NSFNET (dont la Russie). Il y a plus de 1 000 000 de
nœuds connectés à internet.
En 1993, 17 nouveaux pays rejoignent NSFNET.
Le premier navigateur Web (Mosaic) apparaît. La croissance du service http est de 341 634%
sur l'année. Naissance des moteurs de recherche.
En 1994, Le trafic mensuel sur Internet dépasse les 1013 octets (dix mille milliards d'octet).
AOL et Compuserve sont les principaux FAI (Fournisseur d'Accès à Internet) pour les
particuliers, par voie de conséquence on voit apparaitre les première publicités sur Internet et une
société d'avocat de l'Arizona envoi le premier SPAM identifié comme tel.
22 pays rejoignent NSFNET (dont la Chine).
En 1995, NSFNET redevient un réseau exclusivement dédié à la recherche, les fournisseurs
d'accès à internet ne transitent plus sur NSFNET. Le service HTTP dépasse en quantité le service FTP.
22 nouveaux pays rejoignent l'internet.
En 1996, les backbone ont des débits variant entre 155 et 622 Mbit/s. 29 nouveaux pays
rejoignent internet (on peut noter que la Guadeloupe est dans cette liste avec l'extension .gp). Les
piratages se multiplient (NASA, CIA, Air Force,…).
En 1997, le 2 000ème RFC est publié. 47 nouveaux pays rejoignent internet. Il y a plus de 100 000
serveurs de noms.
En 1998, Première fête de l'internet (20 et 21 mars) sous l'initiative de
Jack Lang. L'internet compte 43 230 000 clients.
Le 16 Octobre, décès de Jon Postel (ci-contre). Viton Cerf lui rédige un
hommage sous forme d'une RFC : (2468) "I remember IANA".
L'ICANN (Internet Corporation for Assigned Names and Numbers)
devient le gérant de l'internet mondial. L'ICANN est une société à but non-lucratif
de droit Californien, ce qui fait qu'elle reste dépendante du gouvernement
Américain (comme l'était le IANA avant elle). De nombreux pays réclament son
rattachement à l'ONU.
Naissance de Google (qui est ton ami), Larry Page et Sergueï Brin en étant les heureux parents…
Le moteur de recherche va écraser la concurrence (Yahoo, Lycos, Altavista, etc.) en quelques années
et se retrouver dans une position monopolistique avec comme "seul" concurrent Bing (de Microsoft).
En 1999, on estime à 1 milliard le nombre de pages web sur Internet. L'ADSL commence à être
commercialisé en France par France Telecom. Le MP3 est l'invention de l'année (même s'il existait
depuis un bon moment, puisqu'inventée en 1991).
La norme IEEE 802.11b aussi appelée WIFI est commercialisée par Interband. Oui ! On dit
LE WIFI ! il évoluera en 2003 avec la norme IEEE 802.11g et en 2009 avec la norme 802.11n.
Le programme SETI@Home permet au projet de recherche d'intelligence extra-terrestre de
récupérer plus de puissance de calcul que le plus gros super-ordinateur de l'époque.
En 2000, pas de bug en vue à part quelques très rares sites qui passent du jour au lendemain
en 19 100. IPv6 commence son déploiement sur internet qui au passage devient internet2, un internet
très haut débit. Napster invente la "musique gratuite". Le P2P (Peer to Peer) est l'invention de l'année…
Page 139 sur 193 Les réseaux IUT de CACHAN
Version 2017 en Informatique Industrielle H. Angelis

En 2001, Jimmy Wales et Larry Sanger inventent l'arme absolue de l'étudiant : Wikipédia. Le
Wiki (encyclopédie coopérative) est l'invention de l'année.
En 2002, Free (illiad) propose sa Freebox à ses abonnés. C'est la première box triple play et
c'est l'invention de l'année… Elle a été conçue par Sébastien Boutruche et Xavier Niel.
En 2004, naissance de "The Facebook", inventé par Mark Zuckerberg. Les réseaux sociaux sont
l'invention de l'année.
En 2005, La terre est ronde et c'est Google Earth qui le dit en publiant les travaux de la société
Keyhole qu'il vient de racheter. En 2012, Google Earth a été téléchargé plus d'un milliard de fois.
En 2006, Twitter commence à gazouiller et Google après avoir photographié la terre vue de
l'espace commence à la cartographier avec Google Maps qui sort en Europe le 27 Avril.
En 2007, le 9 janvier, Steve Jobs présente l'iPhone. Même si le smartphone existait avant (IBM
a inventé le premier smartphone en 1992, le Simon et depuis 2005 HTC produit des smartphones),
mais le sens marketing et esthétique de Steve Jobs fait de l'IPhone le point de départ de la mode des
smartphones. En 2009 Android viendra tailler des croupières au quasi-monopole d'Apple.
En Aout 2010, plus de 200 millions de domaines ont été enregistré chez les registars.
Le 3 Février 2011, l'annonce est faite par le NRO (Number Ressource Organisation) que le pool
complet d'adresses IPv4 est totalement épuisé…
En 2012, Facebook annonce plus d'un milliard de comptes dont 640 millions actif
quotidiennement et 500 à partir de téléphones portables.
Le minitel s'éteint en juin, à peu près en même temps que l'achèvement du passage à IPv6 des
éléments de structure des réseaux mondiaux. Désormais il n'y a plus de routeurs WAN qui ne soit pas
IPv6.
"Gangnam Style" est la première vidéo à atteindre 1 milliard de vue sur Youtube. Youtube et
Netflix se partagent à eux deux 50% de la quantité mondiale de données circulant sur internet.
En 2013, le plus grand site de sauvegarde de données au
monde est révélé par Edward Snowden, qui apprend à tout le monde
qu'en cas de perte de données, la NSA en a une copie, mais il n'est
pas certain qu'ils accepteront de vous la rendre…
Depuis 1969, Internet est passé de 4 nœuds à 2 802 418 934
utilisateurs (estimés fin 2013) soit 40% de la population mondiale.
L'idée des fondateurs de commuter les paquets plutôt que les lignes semble donc avoir été la bonne.

Débits Up et Down en fonction des applications.


IUT de CACHAN Les réseaux en Page 140 sur 193
H. Angelis Informatique Industrielle Version 2017

Le protocole IP
Le protocole IP a pour rôle de router l'information, c'est à dire de permettre le transport des
informations d'un réseau vers un autre à travers plusieurs routeurs et atteindre sa cible en prenant le
plus court chemin. Pour cela on utilise un nouveau format d'adressage, l'adresse IP.
L'adresse IP est un numéro unique pour chaque machine composée de 32 bits, mais pour en
simplifier l'usage (on pourra juger cette simplification un peu trop "informaticienne") on a regroupé
ces termes par octet et énuméré l'adresse en décimal pointé (4 nombres décimaux inférieurs à 256 et
séparés par des points). Elle est placée à l'intérieur de l'entête IP.

L'entête IP
L'entête IP est présent au début de
chaque trame IP. Il est composé d'une partie
fixe de 20 octets et d'une partie optionnelle de
N fois 4 octets qui permet de rajouter des
fonctions optionnelles.

Les champs de l'entête IP


Version
Le premier champ de l'entête IP est Ver.
(pour version), il indique quelle est la version de
la trame IP. Je ne sais pas s'il y a jamais eu de
version 1, 2 ou 3, mais la trame dont nous
parlons est la V4. Ce champ contient donc la
valeur 4.

IHL
Le champ suivant est le champ IHL pour IP Header Length (longueur de l'entête IP). Ce champ
indique de combien de mots de 32 bits est composé l'entête IP. Par défaut la valeur est 5 (20 octets
d'entête), mais en cas de présence d'options la taille peut augmenter.

Services
Si ce champ était à l'origine appelé ToS (Type of Services), en 1998, il a été renommé en DSCP
ou "Differentiated Services Code Point" (ou code des services différentiés) et ECN ou "Explicit
Congestion Notification" (ou notification explicite d'engorgement) qui permet de mettre ne œuvre des
QoS (Quality of Services ou qualité de service), en particulier pour le streaming ou la VOIP.
Les 6 premiers bits de ce champ décrivent les 8 classes de message associées (avec plusieurs
codes par classe), ce qui influe sur le comportement des routeurs face à elle ou PHB (Per-Hop
Behavior), et sur 2 bits restant les 4 états de congestion d'un réseau.

Total Length
Ce champ code la longueur totale de la trame IP, incluant les données, exprimé en octets.

Identification
Ce champ contient un numéro d'identification unique de la trame qui est utilisé en cas de
fragmentation pour le réassemblage du message.
Page 141 sur 193 Les réseaux IUT de CACHAN
Version 2017 en Informatique Industrielle H. Angelis

Flags
Il y a 3 bits de flag :
• 0 : un bit toujours à '0'.
• D : "Don't Fragment", permet d'interdire la fragmentation de la trame (D = '1', valeur
pour une trame TCP) ou la possibilité de fragmenter la trame (D = '0', valeur pour une
trame UDP).
• M: "More Fragment", indique en cas de fragmentation de la trame que le fragment
n'est pas le dernier (M = '1') ou est le dernier (M = '0').

Offset
Ce champ permet de calculer le décalage (en octets) entre le premier octet du fragment et le
premier octet de la trame. Le décalage se calcule en multipliant la valeur de l'offset par 8.

TTL
Le champ TTL indique l'espérance de vie du paquet en cours de transmission. Théoriquement
la valeur du champ au départ de la trame devrait être de 64 (valeur recommandée par la RFC 1340),
dans les faits, on trouve plein de valeurs différentes.
A chaque fois que la trame passe par un routeur, la valeur de son TTL est décrémenté d'une
unité. Arrivé à '0', le message est détruit et une trame d'erreur est émise pour prévenir l'émetteur. Ce
processus est utilisé par la fonction "Traceroute" pour identifier le chemin des informations.

Protocol
Le champ protocole permet de définir quel est le protocole présent dans le champ de donnée
de la trame IP. Il y a 3 protocoles de fréquemment rencontrés :
• ICMP (Gestion des erreurs et signalisation) : 0x01.
• TCP (Protocole de transport en mode connecté) : 0x06
• UDP (Protocole de transport en mode non connecté) : 0x11

Header Checksum
Le checksum (vu dans le chapitre sur la détection d'erreur) est une somme modulaire qui
permet de détecter les erreurs dans les entêtes IP. On le calcule en sommant le complément de chaque
octet de l'entête (en mettant la valeur initiale du checksum à 0).
Entête 4500 016D 6E25 4000 8006 0000 81AF E0D1 D41B 3FA9
Complément à 1 BAFF FE92 91DA BFFF 7FF9 FFFF 7E50 1F2E 2BE4 C056
Somme 6151A > FFFF donc on découpe en 2 mots : 0006 et 151A
Somme modulaire 151A + 6 = 1520
Message transmis 4500 016D 6E25 4000 8006 1520 81AF E0D1 D41B 3FA9

Source address
C'est l'adresse IP de l'émetteur de la trame.

Destination address
C'est l'adresse IP du nœud à qui est destinée la trame.

Options
Les options permettent d'échanger des informations entre l'émetteur et l'ensemble des
nœuds mis en œuvre dans la communication (les routeurs).
IUT de CACHAN Les réseaux en Page 142 sur 193
H. Angelis Informatique Industrielle Version 2017

Adresse IPv4
L'adresse IP est un nombre sur 32 bits, unique, représenté sous la forme de 4 nombres
décimaux représentant chacun des octets de l'adresse et séparés par des points.
Avec 32 bits, le nombre d'adresses disponible était de 232 soit 4 milliard d'adresses
A l'origine et jusqu'à 1990, les adresses se classaient selon 5 catégories appelées classes.
Chaque classe représentant un domaine de fonctionnement et un but.
La classe A représentait la classe "intercontinentale" avec peu de réseaux différents, mais un
très grand nombre de points d'accès. Elle se caractérisait par un bit de poids fort à '0'. C’est-à-dire des
adresses allant de 0 à 127, mais beaucoup de ces adresses avait été "prises" par des sociétés ou des
institutions.
La classe B représentait la classe "fédérale" avec un à peu près similaire de réseau et de points
d'accès par réseau. Elle se caractérisait par ses 2 bits de poids fort à '10'.
La classe C représentait la classe "locale" avec un grand nombre de réseaux avec peu de points
d'accès par réseau. Elle se caractérisait par ses 3 bits de poids fort à '110'.
La classe D servait au multicast (1 émetteur vers plusieurs destinataires). Elle se caractérisait
par ses 4 bits de poids fort à '1110'.
Enfin la classe E était réservée à un usage futur, elle se caractérisait par ses 4 bits de poids fort
à '1'.

En 1992, devant l'augmentation quasi exponentielle de l'utilisation des adresses IP, le NWG
propose de supprimer la notion de classes d'adresses pour la remplacer par la notion de sous-réseau.
Le pool d'adresses IP est alors décomposé en 223 blocs (les ex classes A, B et C) de 65 536 sous
réseaux de 256 nœuds avec quelques exceptions historiques liées au fait que certaines adresses de
classe A sont la propriété de groupe privés ou d'administrations (adresses obtenues au début du
développement d'Internet, avant la création du IANA).
On ne va donc plus parler de classe mais de sous réseaux identifiés par des masques. Il existe
3 grands types de masques : 255.0.0.0, 255.255.0.0 et 255.255.255.0, souvent associés (à tort) aux
classes.
L'adresse d'un réseau se déduit par un masquage en ET de l'adresse du nœud par le masque :
IP du nœud 129 175 224 209
& Masque 255 255 255 0
= Réseau 129 175 224 0
Page 143 sur 193 Les réseaux IUT de CACHAN
Version 2017 en Informatique Industrielle H. Angelis

Et pour simplifier l'écriture des adresses des nœuds on intègre le masque sous la forme d'un
nombre associé à l'adresse qui représente le nombre de bits du masque mis à '1' en commençant
depuis le poids fort. Dans notre exemple précédent, le nœud a pour adresse 129.175.224.209 / 24.
Toutes les adresses du pool ne sont pas disponibles :
• 0.0.0.0/ 8 (donc toutes les adresses de 0.0.0.0 à 0.255.255.255) : réservées par le IANA.
• 10.0.0.0/8 (de 10.0.0.0 à 10.255.255.255) : Adresses privées (non routables).
• 100.64.0.0/10 (de 100.64.0.0 à 100.127.255.255) : Réservé "Carrier Grade NAT".
• 127.0.0.0/8 : adresses de rebouclage.
• 169.254.0.0/16 : Adresses d'erreur de DHCP (adresses APIPA).
• 172.16.0.0/12 (de 172.16.0.0 à 172.31.255.255) : Adresses privées (non routables).
• 192.0.0.0/24 (de 192.0.0.0 à 192.0.0.255) : Réservées par l'IETF.
• 192.0.2.0/24 : Réseau utilisé afin de test et de documentation (TEST-NET-1).
• 192.88.99.0/24 : Relay IPv6 vers IPv4
• 192.168.0.0/16 : Adresses privées (non routables).
• 198.18.0.0/15 (de 198.18.0.0 à 198.19.255.255) : Tests de performances.
• 198.51.100.0/24 : Réseau utilisé afin de test et de documentation (TEST-NET-2).
• 203.0.113.0/24 : Réseau utilisé afin de test et de documentation (TEST-NET-3).
• 224.0.0.0/4 : Ex classe D, réservé au multicast
• 240.0.0.0/4 : Ex classe E, interdit.
• 255.255.255.255/32 : Broadcast limité.
Les blocs d'adresses TEST-NET-1, TEST-NET-2 et TEST-NET-3 permettent d'effectuer à des fins
documentaires des tests utilisant de vraies adresses, routables, en dehors de tout contrôle de la part
du IANA.
Le bloc d'adresse 198.18.0.0/15 permet aux constructeurs de disposer d'adresses permettant
de faire des tests de leurs équipements dans un cadre réel et routable.
L'adresse 255.255.255.255 permet d'envoyer un message en broadcast dans un domaine
multi-réseau (qui utilise plusieurs réseaux) en acceptant un routage local et en filtrant la sortie de ce
message hors du domaine pour éviter une diffusion planétaire.
Les blocs d'adresses 10.0.0.0/8 (16 millions de nœuds), 172.16.0.0/12 (1 million de nœud) et
192.168.0.0/16 (65 536 nœuds) sont réservé à un usage local, non routé.
A toutes ces adresses s'ajoute une interdiction d'usage de l'octet de poids faible à 0 (qui
indique le numéro réseau ou du sous réseau par lui-même) et à 255 (0xFF), qui est le broadcast local.
Du fait de toutes les restrictions d'usage et des adresses de classe A qui appartiennent aux
pionniers d'internet, il reste pour l'usage mondial 3 014 392 576 adresses IP, soit une adresse pour
41,8 % de la population mondiale.
Ces adresses sont attribuées
par le IANA aux RIR (Regional
Internet Registries ou Registre
Internet Régionaux), au nombre de
5, qui gèrent localement le pool
d'adresse qu'on leur a confié. Les RIR
confient ensuite la gestion des
adresses aux LIR (Local Internet
Registries) qui sont des fournisseurs
d'accès ou des universités. Selon le RIPE NCC, il y a plus de 600 LIR fournissant des adresses en France.
IUT de CACHAN Les réseaux en Page 144 sur 193
H. Angelis Informatique Industrielle Version 2017

Fragmentation
Lors de la transmission d'un message, il peut arriver qu'un paquet soit trop long pour être
transmis en une seule trame. Il existe alors deux façons de traiter cette situation : éliminer le message
en envoyant un message d'erreur à l'émetteur (charge à lui d'envoyer un paquet plus petit) ou
fragmenter le message en morceaux plus petits pouvant être contenus dans une trame.
Chaque routeur connait la capacité d'emport des réseaux sur lesquels il communique grâce à
un paramètre le MTU (Maximum Transfert Unit ou unité de transfert maximum). Tandis que pour un
nœud, il ne connait le MTU que du seul le réseau auquel il est connecté. Avec Ethernet, le MTU est de
1500 octets.
Le nœud envoi donc son message avec le MTU dont il dispose. A chaque paquet reçu, le
routeur vérifie si la taille du paquet est supérieure au MTU. Si c'est le cas, il regarde alors l'état des
flags de la trame IP.
Si le flag D est activé (à '1'), le paquet est rejeté et l'émetteur prévenu de l'élimination de son
message. Si le flag est désactivé (à '0'), alors le routeur fragmente le message pour l'adapter au format
de la trame. Chaque fragment du message devant être identifiable, tous les fragments commence par
un entête IP qui recopie en partie l'information du paquet.
Page 145 sur 193 Les réseaux IUT de CACHAN
Version 2017 en Informatique Industrielle H. Angelis

Dans l'exemple ci-dessous, on a 3 réseaux reliés entre eux. Le premier a un MTU de 1500
octets, le second un MTU de 620 octets et le dernier un MTU de 420 octets.

L'émetteur envoie une trame de 1500 octets composée de 20 octets d'entête et de 1480 octets
de données. L'entête IP de cette trame a un identifiant qui vaut X, les flags D et M sont tous les deux à
'0', l'offset est à 0 (normal l'offset n'apparait que suite à la fragmentation de la trame)
Arrivée au premier routeur, le MTU passe à 620 octets, la trame doit alors être fragmentée.

Pour connaitre la taille d'un fragment, on commence par calculer l’entier directement inférieur
obtenu par la division par 8 du résultat de la soustraction du MTU par la taille de l'entête IP. Dans notre
cas cela donne : (620 – 20) / 8 = 75.
La taille du champ de données s’obtient alors en multipliant par 8 le nombre obtenu lors du
précédent calcul. Dans notre cas, on va donc transmettre une trame de 75 x 8 = 600 octets de données,
soit avec un entête de 20 octets, une trame de 75 x 8 + 20 = 620 octets.
Cela peut sembler compliqué mais comme l'offset est codé sur 13 bits et que la taille de la
trame est codée sur 16 bits (donc 3 bits de plus), on doit créer des fragments dont la taille est divisible
par 8 (8 = 23) pour permettre de conserver des nombres entiers pour l'offset des fragments tout en
étant capable de traiter la taille maximum d'une trame.
Dans notre exemple on va donc décomposer le champ de données de la trame de 1500 octets
en fragments de 600 octets de données. On aura donc 3 fragments, le premier et le second de
600 octets et le dernier de 280 octets. En ajoutant les entêtes IP on arrive à 2 fragments de 620 octets
et un de 300 octets.
L'offset représente le décalage entre le premier octet de donnée du fragment et le premier
octet de données de la trame de départ divisé par 8. Ainsi notre premier fragment aura un offset de 0,
le second aura un offset de 600 / 8 = 75 et le troisième un offset de 1 200 / 8 = 150.
Pour compléter les entêtes, il reste à définir les identifiants des fragments et les flags. Pour les
identifiants, la règle est simple, les fragments portent le même identifiant que la trame d'origine (X
dans notre exemple). Pour les flags, le dernier fragment hérite du flag du message d’origine (en
l’occurrence 0) alors que tous les autres fragments activent leur flag M.
IUT de CACHAN Les réseaux en Page 146 sur 193
H. Angelis Informatique Industrielle Version 2017

Arrivé sur le deuxième routeur, le MTU du 3ème réseau est à 400, la fragmentation se fait alors
sur les fragments précédents (fragments de 620 octets), sans les réassembler pour reformer la trame
d'origine. En effet, dans un réseau avec une structure maillée, les fragments peuvent avoir pris des
chemins différents, il est donc inutile de chercher à les réassembler.

En reprenant la méthode de calcul utilisée pour la première fragmentation, on arrive à la


formule : (400 - 20) / 8 = 47,5 soit en arrondissant 47. La taille du champ de données des fragments
devra donc être inférieure ou égale à 47 x 8 = 376 octets, soit une trame de 396 octets avec l’entête.
Toute trame ou fragment ayant une taille supérieure à 396 octets devra alors être fragmenté.
Dans notre cas, seul les deux premiers fragments de la trame d’origine vont devoir être découpé (le
3ème étant d’une taille inférieure, il n’a pas besoin d’être refragmenté.
Le premier fragment découpé dans le premier fragment de 620 octets aura une taille de 396
octets (376 octets de données et 20 d’entête), le second une taille de 600 – 376 + 20= 244 octets (dont
224 de données). Il en sera de même pour le second fragment de 620 octets. Enfin le 3ème et dernier
fragment de la trame d’origine dont la taille est de 300 octets ne sera pas fragmenté à nouveau.
On aura donc 5 fragments à la fin de l’opération, les fragments 1 et 2 pour le premier morceau
de 620 octets, les fragments 3 et 4 pour le second et enfin le 5ème fragment qui est la recopie du 3ème
morceau.
On sait que les offsets des fragments 1, 3 et 5 sont ceux des trames d’origine, de même les
flags des fragments 2, 4 et 5 qui sont eux aussi ceux des trames d’origines, on sait aussi que pour les
fragment 1 et 3, le flag M sera activé, reste donc à définir les offsets des fragments 2 et 4.
L'offset du 2ème fragment s’obtient en calculant le décalage par rapport à l’origine (376 octets)
divisé par 8, soit 376 / 8 = 47. Pour le 4ème fragment le calcul consiste à ajouter à l’offset du 3ème
fragment (75), le décalage, lié aux 376 bits de données divisé par 8 (soit 47), ce qui donne 122.
Page 147 sur 193 Les réseaux IUT de CACHAN
Version 2017 en Informatique Industrielle H. Angelis

Encore une fois, comme les fragments peuvent prendre des chemins différents, chaque
routeur lorsqu'il fragmente un message le fait sans savoir si ce qu'il fragmente est une trame complète
ou déjà fragmentée, il doit donc conserver les caractéristiques du message reçu, en reprenant : pour
le premier fragment, l'offset du fragment d'origine, et pour le dernier fragment, le flag d'origine.
Au niveau du récepteur, il est facile de réassembler les fragments puisque chacun dispose d'un
offset et de flags qui permettent de les replacer précisément dans la suite des fragments. Prenons
l'exemple d'un récepteur qui recevrait les fragments dans l'ordre 1, 3, 2, 5 et 4.

Le fragment n°1 a un offset nul et un TL de 396, c'est donc lui le premier morceau du message.
Il occupe donc les octets de 0 à 375. Comme son flag M est à 1, cela signifie que la trame d'origine ne
faisait pas 376 octets, mais plus (on ne sait pas combien), il faut donc continuer la réception.
A cette étape, on dispose des octets de 0 à 375.

Le fragment 3 a un offset de 75 et un TL de 396, il va donc occuper les octets de 600 (75 x 8) à


975 (600 + 375). Comme son flag M est à '1', on sait qu'il ne s'agit toujours pas de la fin du message.
A cette étape, on dispose des octets de 0 à 375 et de 600 à 975.

Le fragment 2 a un offset de 47 et un TL de 244, il va donc occuper les octets de 376 (47 x 8) à


599 (376 +223). Son flag M est à '1' (logique puisque c'est un morceau qui s'insère entre les fragments
1 et 3 déjà reçus).
A cette étape, on dispose de tous les octets de 0 à 975.
IUT de CACHAN Les réseaux en Page 148 sur 193
H. Angelis Informatique Industrielle Version 2017

Le fragment 5 a un offset de 150 et un TL de 300, il va donc occuper les octets de 1 200 (150 x 8)
à 1 479 (1 200 + 279). Comme son flag M est à '0', on sait qu'il s'agit du dernier fragment du message,
donc le message occupera les octets de 0 à 1 479.
A cette étape, on dispose des octets de 0 à 975 et de 1 200 à 1 479.

Enfin, le fragment 4 arrive, avec un offset de 122 et un TL de 244, il va donc occuper les octets
de 976 (122 x 8) à 1 199 (976 + 223).
On dispose alors de tous les octets entre 0 et 1 479. Le message est complet.

Maintenant que vous avez compris ce processus, il convient d’en donner ses limitations :
• la fragmentation n’est utilisée qu’avec le protocole UDP (car il ne dispose pas des outils
pour permettre de gérer les fragmentations), par contre TCP ayant un outil au moins
aussi efficace que le protocole IP.
• En cas de perte d’un segment, c’est l’ensemble des segments qu’il faut transmettre à
nouveau.
• TCP n’est soumis à aucune des règle imposées par la fragmentation.
Page 149 sur 193 Les réseaux IUT de CACHAN
Version 2017 en Informatique Industrielle H. Angelis

Options
La trame IP peut contenir des options qui permettent de mettre en place des règles de
communication entre tous les éléments mis en œuvre dans le routage de l'information.

Les options sont structurées sous la forme de mots de 32 bits qui se décomposent en 3 champs
: le type, la longueur et la donnée.
Les options sont de taille variable. Bien que structurées en mots de 32 bits, il peut il y avoir des
options sur 8 bits, on complète alors avec des mots de remplissage (NOP) pour atteindre 32 bits.
Le champ type définit l'option par elle-même et les champs suivants sont réservés aux données
associées. Par exemple pour trouver le plus petit MTU des réseaux mis en œuvre dans le transport de
l'information, on peut utiliser l'option MTU_probe. Dans cette option, le champ type contient la valeur
11 (0x0B), le champ longueur la valeur 2 (pour 2 octets de données) et un champ de donnée qui
contient la valeur du plus petit MTU du réseau.
Le type est composé de 3 champs :
• Le champ "Copied" (sur 1 bit) signifie que l'option doit être recopiée dans les fragments
du message (en cas de fragmentation).
• Le champ "Class" (sur 2 bits) permet de spécifier le rôle de l'option :
o 0 : Commande
o 1 : Réservé
o 2 : Tests & Mesures
o 3 : Réservé
• Le champ "Number" (sur 5 bits) permet de spécifier la fonction de l'option
Numéro Option Numéro Option
0 EOOL (End Of Option List) – RFC 791 16 IMITD
1 NOP (No Operation) – RFC 791 17 EIP
2 SEC (Security) – RFC 1108 18 TR
3 LSR (Loose Source Routing) – RFC 791 19 ADDEXT
4 TS (Time Stamp) – RFC 791 20 RTRALT (Router Alert) – RFC 2113
5 E-SEC (Extended Security) – RFC 1108 21 SDB
6 CIPSO (Commercial Security) – RFC 1108 22
7 RR (Record Route) – RFC 791 23 DPS
8 SID 24 UMP
9 SSR (Strict Source Route) – RFC 791 25 QS (Quick Start) – RFC 4782
10 ZSU 26
11 MTUP (MTU Probe) – RFC 1191 27
12 MTUR (MTU Reply) – RFC 1191 28
13 FINN 29
14 VISA 30 EXP (Experimental) – RFC 4727
15 ENCODE 31

Inutilisé ou désuet Interdit d'usage Non documenté


IUT de CACHAN Les réseaux en Page 150 sur 193
H. Angelis Informatique Industrielle Version 2017

Ethernet et IP
IP n'étant qu'un protocole et pas un réseau, le transfert des paquets IP doit être opéré par un
réseau physique. Bien que n'étant pas le seul réseau capable de porter des paquets IP, Ethernet en est
le support le plus fréquent, on va donc étudier comment Ethernet et IP cohabitent.
Tout commence par la configuration des nœuds sur le réseau. On verra plus loin comment on
configure automatiquement les paramètres IP d'un nœud (protocole DHCP), on va donc considérer
que le nœud A du réseau ci-dessous a été configuré manuellement avec l'adresse 192.168.89.1, le
masque 255.255.255.0 et la passerelle 192.168.89.254 (le routeur R1 qui lui permet d'accéder à
internet).

Lorsqu'un utilisateur sur le nœud A essaie de se connecter à B via son adresse IP


(192.168.89.2), le nœud A doit alors identifier le réseau sur lequel la cible est connectée et le compare
à son propre réseau :
192 . 168 . 89 . 2 192 . 168 . 89 . 1
& 255 . 255 . 255 . 0 & 255 . 255 . 255 . 0
192 . 168 . 89 . 0 192 . 168 . 89 . 0

Réseau de B = Réseau de A

Comme les numéros des deux réseaux sont identique, le nœud A sait qu'il est sur le même
réseau que B, il peut donc lui parler en direct (sans passer par le routeur), reste à trouver l'adresse
MAC (Ethernet) du nœud cible. Pour cela, A va envoyer sur le réseau une demande d'indentification
de l'adresse physique de la cible : une trame ARP (Address Resolution Protocol).

Protocole ARP
Le protocole ARP permet d'identifier l'adresse MAC d'une machine à partir de son adresse IP.
Son principe d'utilisation est simple et une allégorie permet de bien le comprendre :
Considérons une classe dans laquelle les étudiants ne se connaissent pas et dont l'enseignant
ne connait pas les étudiants. Si l'enseignant doit transmettre un message à un étudiant en particulier
(dont il connait le nom), il a plusieurs possibilités :
Méthode n°1 : L'enseignant peut tout simplement dire à voix haute le message à l'ensemble
des étudiants. Le message devrait atteindre son destinataire, mais le principal inconvénient de cette
communication c'est que tout le monde a entendu le message donc la confidentialité des échanges
n'est pas respectée…
Page 151 sur 193 Les réseaux IUT de CACHAN
Version 2017 en Informatique Industrielle H. Angelis

Méthode n°2 : L'enseignant demande à chaque élève à tour de rôle s'il s'appelle X (X étant le
nom de l'étudiant recherché), l'inconvénient c'est que si la classe est un grand amphithéâtre de 16
millions de personnes, cela risque de lui prendre un certain temps…
Méthode n°3 : L'enseignant demande à voix haute "Qui est X ?". Seul X lèvera la main,
l'enseignant pourra alors lui transmettre le message à lui seul.
C'est cette méthode qui est utilisée par ARP, on envoie en BROADCAST (c'est-à-dire à tout le
monde) une demande d'identification : "Qui est X ?" où X est une adresse IP et on recevra une réponse
"Je suis X !", incluant l'adresse MAC du nœud, ce qui permettra de ne dialoguer qu'avec lui.
Dans le protocole ARP (Adress Resolution Protocol), l'émetteur envoi en Broadcast (à tous les
nœuds du réseau) une trame de requête ARP contenant : ses identifiants (adresses MAC et IP) et
l'adresse IP de la cible. Tous les nœuds comparent alors leur adresse IP avec celle reçue. Seul celui qui
s'identifie peut alors envoyer une réponse ARP contenant ses identifiants, directement à l'émetteur
de la requête.
Les 2 nœuds (l'émetteur de la requête et celui qui lui a répondu) enregistrent alors dans leurs
tables ARP respectives, les adresses MAC et IP de leur interlocuteur qui leur permet de ne plus envoyer
de requêtes ARP pour toute la durée de l'échange.
A la fin de l'échange, les informations d'adressage seront purgées de la table ARP après une
trentaine de secondes, pour ne pas encombrer la table ARP et pour permettre le renouvellement des
adresses IP (voir le protocole DHCP).

Entête ARP
Le protocole ARP repose
uniquement sur l'entête ARP, en
dehors de l'entête, aucunes données
ne sont transmises entre l'émetteur
et le récepteur.

Les champs de la trame ARP


• Hardware Type : décrit le réseau physique porteur de la communication (dans notre cas,
Ethernet, identifié par la valeur 0x0001).
• Protocol Type : décrit le protocole de communication qui fournit l'adresse de la cible de la
communication (dans notre cas IP, identifié par la valeur 0x0800).
• HL (pour Hardware Length) : définit la taille en octet de l'adresse physique utilisée sur le
réseau porteur de la communication (dans notre cas, le réseau étant Ethernet, la taille de
l'adresse est 6 octets, HL vaut donc 0x06).
• PL (pour Protocol Length) : définit la taille en octet de l'adresse cible utilisée pour
l'identification de l'adresse physique (dans notre cas, il s'agit du protocole IP dont l'adresse
est codée sur 4 octets, PL vaut donc 0x04).
• Operation : définit si la trame ARP est une requête (0x0001) ou une réponse (0x0002).
• Sender Hardware Address : C'est l'adresse Ethernet du nœud qui émet la trame ARP (de
requête ou de réponse). La taille de ce champ est définie par la valeur de HL.
• Sender Protocol Address : C'est l'adresse IP du nœud qui émet la trame ARP. La taille du
champ est définie par la valeur de PL.
• Target Hardware Address : C'est l'adresse Ethernet du nœud destinataire de la trame ARP
(de requête ou de réponse). La taille de ce champ est définie par la valeur de HL.
• Target Protocol Address : C'est l'adresse IP du nœud destinataire de la trame ARP. La taille
du champ est définie par la valeur de PL.
IUT de CACHAN Les réseaux en Page 152 sur 193
H. Angelis Informatique Industrielle Version 2017

Exemple de communication locale


Reprenons notre exemple précédent. Lorsque le nœud A essaye de contacter B, il envoie une
trame ARP :

Cette trame de requête ARP (Type = 0x0806 = ARP et OP = 0x0001 = Requête) est envoyé à
l'ensemble des nœuds du réseau (DA = FF:FF:FF:FF:FF:FF) depuis A (SA = 00:00:10:00:00:01). On
retrouve donc les adresses MAC et IP du nœud A dans la trame ARP (SHA = 00:00:10:00:00:01 et SPA
= 0xC0A85901, soit 192.168.89.1).
Le nœud que A cherche à identifier l'adresse Ethernet du nœud B (THA) à partir de son adresse
IP (TPA = 0xC0A85902, soit 192.168.89.2), comme il ne connait pas l'adresse MAC de la machine B, le
champ THA reste à 0 (THA = 00:00:00:00:00:00).
Comme la trame ARP ne contient que 28 octets et que la trame IP ne peut pas avoir un champ
de donnée inférieur à 46 octets, alors la trame ARP est complétée par 18 octets de remplissage
(padding).
La réponse que recevra A sera alors la trame ARP :

Cette fois ci, l'émetteur de la trame de réponse (OP = 0x0002) ARP (Type = 0x0806) est le nœud
B (SA = SHA = 00:10:00:00:00:02 et SPA = 0xC0A85902, soit 192.168.89.2) et son destinataire n'est pas
l'ensemble des nœuds du réseau mais exclusivement le nœud A (DA = THA = 00:00:10:00:00:01 et TPA
= 0xC0A85901, soit 192.168.89.1).
Le nœud A a alors dans sa table ARP une équivalence entre l'adresse IP 192.168.89.2 et
l'adresse MAC 00:10:00:00:00:02 et le nœud B une équivalence entre l'adresse IP 192.168.89.1 et
l'adresse MAC 00:00:10:00:00:01.
Le nœud A peut enfin envoyer sa trame IP à B :
Page 153 sur 193 Les réseaux IUT de CACHAN
Version 2017 en Informatique Industrielle H. Angelis

Exemple de communication au travers d'un routeur


Imaginons maintenant que le nœud A souhaite communiquer avec la machine d'adresse IP
192.168.71.2 (nœud D).

A commence donc par comparer l'adresse du réseau de la machine cible au sien en appliquant
son masque aux adresses des nœuds A et D :
192 . 168 . 71 . 2 192 . 168 . 89 . 1
& 255 . 255 . 255 . 0 & 255 . 255 . 255 . 0
192 . 168 . 71 . 0 192 . 168 . 89 . 0

Réseau de D ≠ Réseau de A

Comme les 2 nœuds ne sont pas sur le même réseau, A doit communiquer avec son
routeur (R1) pour lui transmettre la trame IP à destination du nœud D, charge à lui de la renvoyer via
internet au routeur du réseau 192.168.71.0, c'est-à-dire R2, pour qu'il la transmette à son tour au nœud
D. C'est donc l'adresse MAC de R1 que A doit identifier par une trame ARP.

En retour, R1 lui répond :


IUT de CACHAN Les réseaux en Page 154 sur 193
H. Angelis Informatique Industrielle Version 2017

A peut alors lui transmettre la trame à destination du nœud D :

On constate que le destinataire de la trame Ethernet est R1, mais que le destinataire de la
trame IP est le nœud D.
Le routeur va alors faire appel aux fonctions de routage pour transmettre à R2 (on verra
comment juste après) la trame, puis R2 va récupérer le message en vue de le transmettre à D. Là encore
si R2 ne connait pas l'adresse MAC de D, il va devoir l'identifier par une requête ARP :

Suivie de sa réponse :

Et enfin, le message atteint son destinataire :

Cet échange a imposé l'envoi d'un grand nombre de trames, mais c'est le prix à payer pour
découvrir le réseau. Pour la réponse, le nœud D connaissant déjà l'adresse de son routeur (R2), il n'aura
pas à lui envoyer de requête ARP, de même que R1 n'aura pas à questionner pour connaitre l'adresse
de A puisqu'elle est encore présente dans sa table ARP.
Pour les plus observateurs, vous vous êtes rendu compte que les adresses MAC des nœuds D
et A sont les mêmes. Si ces nœuds avaient été sur le même réseau, cela aurait entrainé une défaillance
du réseau, mais comme ils sont sur 2 réseaux physiquement différents, séparés par un ou plusieurs
routeurs, cela ne pose aucun problème.
Page 155 sur 193 Les réseaux IUT de CACHAN
Version 2017 en Informatique Industrielle H. Angelis

Routage
Maintenant que l'on sait comment les nœuds communiquent localement, il reste à
comprendre comment on va faire transiter leurs messages depuis un routeur vers un autre. Ce
processus est appelé le routage (la commutation de paquet, inventée par Léonard Kleinrock).
On ne va étudier ici qu'un seul protocole de routage, le protocole RIP v2 (Routing Internet
Protocol), un protocole maintenant éteint mais qui fut l'un pendant plus de 20 ans le plus utilisé, sa
disparition étant due au succès d'internet, succès qu'il avait contribué à créer.
Le protocole RIP est basé sur l'utilisation de l'algorithme de Bellmann-Ford (algorithme à
vecteur de distance) qui cherche, dans un ensemble de lien à trouver le plus court chemin pour se
rendre d'un point à un autre. Indépendamment des considérations historiques, le principe du routage
consiste toujours à transmettre le paquet de routeur à routeur, par le chemin le plus court depuis la
source vers la cible et de préférence en ne créant pas de congestion (goulet d'étranglement).

RIP v2
Le protocole RIP est un dérivé du protocole de routage inventé par BBN pour ses IMP. Il est
basé sur la diffusion (toutes les 30 secondes) d'une table des meilleurs chemins par chaque routeur à
destination des routeurs adjacents pour fusion des informations.
Prenons l'exemple du réseau ci-dessous, qui contient 6 routeurs (de A à F). Chaque routeur
contient un certain nombre d'interface réseau, symbolisées par des croix et des nombres en italiques,
à l'intérieur du routeur, et numérotés (de 1 à 4 pour ceux qui ont 4 interfaces).
De plus chaque interface a une adresse IP dans le réseau où elle est connectée par exemple
l'adresse IP de l'interface 3 du routeur A est 70.0.0.254. Je choisi (mais c'est totalement arbitraire),
d'utiliser des masques de réseau valant 255.0.0.0 (ce qui correspond, par exemple pour le réseau de
l'exemple précédent à l'indication : 70.0.0.0 / 8).

Chaque routeur dispose d'une table de routage qui contient :


• L'adresse IP du réseau connu.
• Sa distance en nombre de saut (ou HOP, le HOP étant le saut d'un réseau à un autre
par passage dans un routeur)
• L'adresse IP du nœud suivant dans le chemin (Next HOP)
• L'interface sur laquelle il faut transmettre le message.
IUT de CACHAN Les réseaux en Page 156 sur 193
H. Angelis Informatique Industrielle Version 2017

Ainsi si on regarde les tables des routeurs A et B avant que leurs tables RIP ne soient mise à
jour, elles ne contiennent que les réseaux directement reliés à A et à B :
Routeur A Routeur B
N° du réseau Distance Next-HOP Interface N° du réseau Distance Next-HOP Interface
10.0.0.0 / 8 0 1 10.0.0.0 / 8 0 3
40.0.0.0 / 8 0 2 20.0.0.0 / 8 0 2
50.0.0.0 / 8 0 4 60.0.0.0 / 8 0 4
70.0.0.0 / 8 0 3 80.0.0.0 / 8 0 1

Lorsque A diffuse sa table de routage (par exemple à B), il envoie l'intégralité de sa table via
des trames RIP (que l'on n'étudiera pas ici), on a alors dans la table de routage de B :
Routeur B
N° du réseau Distance Next-HOP Interface
10.0.0.0 / 8 0 3
20.0.0.0 / 8 0 2
60.0.0.0 / 8 0 4
80.0.0.0 / 8 0 1
10.0.0.0 / 8 1 10.0.0.1 3
40.0.0.0 / 8 1 10.0.0.1 3
50.0.0.0 / 8 1 10.0.0.1 3
70.0.0.0 / 8 1 10.0.0.1 3

Une fois la table de routage de A incluse dans celle de B (en mettant à jour la distance et en
entrant comme NEXT HOP l'adresse de la machine qui lui a transmis sa table), B procède à un nettoyage
de la table en éliminant les réseaux en double et en éliminant les chemins les plus longs (ceux présent
à plusieurs reprises dans la table et dont la distance est la plus longue). Dans notre cas, le réseau
10.0.0.0 est présent en double dans la table de routage, une fois avec une métrique de 0, et une autre
fois avec une métrique de 1. On supprime alors de la table celui qui a la métrique la plus longue.
Enfin, une fois la table nettoyée, et triée, elle est renvoyée au routeur A pour qu'il l'intègre à
son tour :
Routeur A
N° du réseau Distance Next-HOP Interface
10.0.0.0 / 8 0 1
40.0.0.0 / 8 0 2
50.0.0.0 / 8 0 4
70.0.0.0 / 8 0 3
10.0.0.0 / 8 1 10.0.0.2 1
20.0.0.0 / 8 1 10.0.0.2 1
40.0.0.0 / 8 1 10.0.0.2 1
50.0.0.0 / 8 1 10.0.0.2 1
60.0.0.0 / 8 1 10.0.0.2 1
70.0.0.0 / 8 1 10.0.0.2 1
80.0.0.0 / 8 1 10.0.0.2 1

Les tables de routage des nœuds A et de B sont maintenant fusionnées :


Routeur A Routeur B
N° du réseau Distance Next-HOP Interface N° du réseau Distance Next-HOP Interface
10.0.0.0 / 8 0 1 10.0.0.0 / 8 0 3
20.0.0.0 / 8 1 10.0.0.2 1 20.0.0.0 / 8 0 2
40.0.0.0 / 8 0 2 40.0.0.0 / 8 1 10.0.0.1 3
50.0.0.0 / 8 0 4 50.0.0.0 / 8 1 10.0.0.1 3
60.0.0.0 / 8 1 10.0.0.2 1 60.0.0.0 / 8 0 4
70.0.0.0 / 8 0 3 70.0.0.0 / 8 1 10.0.0.1 3
80.0.0.0 / 8 1 10.0.0.2 1 80.0.0.0 / 8 0 1
Page 157 sur 193 Les réseaux IUT de CACHAN
Version 2017 en Informatique Industrielle H. Angelis

En considérant maintenant que A et F fusionnent leurs tables de routage respectives, on va


trouver pour ces 2 routeurs :
Routeur A Routeur F
N° du réseau Distance Next-HOP Interface N° du réseau Distance Next-HOP Interface
10.0.0.0 / 8 0 1 10.0.0.0 / 8 1 50.0.0.2 2
20.0.0.0 / 8 1 10.0.0.2 1 20.0.0.0 / 8 2 50.0.0.2 2
40.0.0.0 / 8 0 2 40.0.0.0 / 8 1 50.0.0.2 2
50.0.0.0 / 8 0 4 50.0.0.0 / 8 0 2
50.0.0.0 / 8 1 50.0.0.1 4 50.0.0.0 / 8 1 50.0.0.2 2
60.0.0.0 / 8 1 10.0.0.2 1 60.0.0.0 / 8 2 50.0.0.2 2
60.0.0.0 / 8 1 50.0.0.1 4 60.0.0.0 / 8 0 1
70.0.0.0 / 8 0 3 70.0.0.0 / 8 1 50.0.0.2 2
80.0.0.0 / 8 1 10.0.0.2 1 80.0.0.0 / 8 2 50.0.0.2 2
140.0.0.0 / 8 1 50.0.0.1 4 140.0.0.0 / 8 0 3

Là encore, les nœuds A et F vont effacer de leurs tables les valeurs des chemins les plus longs.
Mais par exemple, pour le routeur A, le réseau 60.0.0.0 / 8 est accessible par 2 chemins de longueurs
identiques, dans ce cas, il privilégie le premier chemin qu'il a appris.
En continuant ainsi, après de multiples diffusions, le routeur A aura récupéré l'ensemble des
routes du réseau et aura mis à jour sa table :
Routeur A
Chemin
N° du réseau Distance Next-HOP Interface
10.0.0.0 / 8 0 1 Local
20.0.0.0 / 8 1 10.0.0.2 1 En passant par B
30.0.0.0 / 8 1 40.0.0.2 2 En passant par D
40.0.0.0 / 8 0 2 Local
50.0.0.0 / 8 0 4 Local
60.0.0.0 / 8 1 10.0.0.2 1 En passant par B
70.0.0.0 / 8 0 3 Local
80.0.0.0 / 8 1 10.0.0.2 1 En passant par B
90.0.0.0 / 8 2 10.0.0.2 1 En passant par B
100.0.0.0 / 8 1 40.0.0.2 2 En passant par D
110.0.0.0 / 8 2 10.0.0.2 1 En passant par B
120.0.0.0 / 8 1 40.0.0.2 2 En passant par D
130.0.0.0 / 8 2 40.0.0.2 2 En passant par D
140.0.0.0 / 8 1 50.0.0.1 4 En passant par F

Tout message qui arrive alors sur le routeur à destination d'un des réseaux connu de la table
de A pourra être transmis au routeur suivant (si la métrique est supérieure à 0) ou directement au
client (si la métrique est nulle), et ce sera pareil pour tous les autres routeurs du réseau.
Par exemple, si sur le réseau 70.0.0.0 arrive un paquet IP à destination de 130.0.0.0, alors, A
identifie grâce à sa table de routage que le paquet doit être transmis sur l'interface 2 à la machine
d'adresse IP = 40.0.0.2. Alors, en considérant que les routeurs sont reliés entre eux par des réseaux
Ethernet, le routeur A va envoyer une requête ARP à la machine d'adresse IP 40.0.0.2 et récupérer
l'adresse MAC de D, puis comme on l'a vu dans le traitement d'ARP, il va lui transmettre le paquet IP,
charge à lui de le transmettre à E.

Limitations et gestion des liens rompus


Le principal défaut du protocole RIP vient du fait qu'il nécessite, pour permettre d'établir les
tables de routage, des échanges qui potentiellement pourraient être à l'échelle mondiale. On limite
donc volontairement à 15 la métrique maximum de la table de routage ainsi toutes les entrées avec
une métrique supérieure à 15 en sont automatiquement éliminées.
Or si un routeur ne trouve pas dans sa table l'adresse du réseau cible, il rejette le message, ce
qui signifie qu'une liaison par plus de 15 routeurs entre un émetteur et sa cible entraine un échec
systématique de la transmission.
IUT de CACHAN Les réseaux en Page 158 sur 193
H. Angelis Informatique Industrielle Version 2017

De
plus, si par hasard, D ne répond pas à A lors d'une requête ou si plus de 180 secondes ne s'écoulent
sans qu'il n'y ait de trafic entre A et D, alors A identifie que la route n'est plus valable. Il diffuse alors
sur le réseau (par l'adresse IP de multicast associé à RIP = 224.0.0.9) une information de suppression
(en mettant à 16 la métrique de toutes les routes passant par D). La table de routage de A devient alors
:
Routeur A
Chemin
N° du réseau Distance Next-HOP Interface
10.0.0.0 / 8 0 1 Local
20.0.0.0 / 8 1 10.0.0.2 1 En passant par B
30.0.0.0 / 8 1 40.0.0.2 2 En passant par D
40.0.0.0 / 8 0 2 Local
50.0.0.0 / 8 0 4 Local
60.0.0.0 / 8 1 10.0.0.2 1 En passant par B
70.0.0.0 / 8 0 3 Local
80.0.0.0 / 8 1 10.0.0.2 1 En passant par B
90.0.0.0 / 8 2 10.0.0.2 1 En passant par B
100.0.0.0 / 8 1 40.0.0.2 2 En passant par D
110.0.0.0 / 8 2 10.0.0.2 1 En passant par B
120.0.0.0 / 8 1 40.0.0.2 2 En passant par D
130.0.0.0 / 8 2 40.0.0.2 2 En passant par D
140.0.0.0 / 8 1 50.0.0.1 4 En passant par F

Les autres routeurs mettent alors à jour leur table de routage éliminant les chemins passant
par A et accédant à D. Mais pour C qui a un lien direct avec le routeur D, cette mise à jour n'est pas
prise en compte, il répond alors en diffusant son chemin propre. Les tables sont alors mise à jour :
Routeur A
Chemin
N° du réseau Distance Next-HOP Interface
10.0.0.0 / 8 0 1 Local
20.0.0.0 / 8 1 10.0.0.2 1 En passant par B
30.0.0.0 / 8 2 10.0.0.2 1 En passant par B
40.0.0.0 / 8 0 2 Local
50.0.0.0 / 8 0 4 Local
60.0.0.0 / 8 1 10.0.0.2 1 En passant par B
70.0.0.0 / 8 0 3 Local
80.0.0.0 / 8 1 10.0.0.2 1 En passant par B
90.0.0.0 / 8 2 10.0.0.2 1 En passant par B
100.0.0.0 / 8 3 10.0.0.2 1 En passant par B
110.0.0.0 / 8 2 10.0.0.2 1 En passant par B
120.0.0.0 / 8 3 10.0.0.2 1 En passant par B
130.0.0.0 / 8 3 10.0.0.2 1 En passant par B
140.0.0.0 / 8 1 50.0.0.1 4 En passant par F
Page 159 sur 193 Les réseaux IUT de CACHAN
Version 2017 en Informatique Industrielle H. Angelis

Les autres protocoles de routage


Outre la limitation à 15 routeurs des chemins les plus longs, RIP présente de plus l'inconvénient
de ne pas prendre en compte les paramètres de la liaison entre 2 routeurs. Par exemple, si dans notre
exemple précédent A et F sont reliés par une liaison à 512 Kbits/s alors que la liaison entre A et B et
celle entre B et F sont des liaisons 10 Gbits/s, pour RIP le meilleur chemin sera la liaison directe et les
paquets à destination de F et passant par A prendront la liaison à 512 Kbits/s.
Qui plus est, le protocole RIP est figé, il ne se met à jour qu'en cas de rupture de lien, mais
sinon, 2 paquets passent toujours par le même chemin, même si celui-ci est en surcharge.
Le protocole RIP a donc été progressivement remplacé par des protocoles plus efficaces basés
sur la notion d'AS (Autonomous System).

IGP, EGP et AS
Un système autonome (Autonomous System ou AS en Anglais) est un réseau autonome des
autres, n'ayant le plus souvent qu'un seul point d'accès (par exemple le réseau que vous avez chez
vous ou le réseau de GE1 ou de GE2 par rapport à celui de l'IUT et encore au-dessus, celui de l'IUT par
rapport à l'université ou bien, encore plus gros, le réseau de l'université Paris Sud) vis-à-vis du reste du
monde.
Ce système autonome (AS) est géré en interne par un protocole IGP (Interior Gateway
Protocol) et en externe, il est raccordé aux autres AS par des EGP (Exterior Gateway Protocol).
Les principaux IGP utilisés de par le monde sont :
• RIP v2 : Vieux et périmé, mais très utilisé pour la gestion locale de petits réseaux et qui a
l'avantage de l'antériorité.
• IGRP : Un protocole inventé par Cisco (donc que l'on trouve essentiellement dans les
routeurs Cisco) et basé sur le même principe que RIP à la différence près, qu'il remplace la
distance en HOP par un nombre qui est calculé par une formule (paramétrable) sur la base
du débit, du MTU, de la charge, etc.
• OSPF : C'est le protocole des réseaux de grande taille, il est très complet et adapté à
l'utilisation de IPv6, mais il est aussi très compliqué et très gourmand en ressources. Il
utilise un algorithme totalement différent de celui de RIP basé sur l'état des liens
(l'algorithme de Dijkstra) pour trouver le chemin le plus court. Le protocole OSPF est le
seul recommandé par l'IETF (Internet Engineer Task Force, l'une des principales autorités
d'internet).
IGRP et OSPF calculent pour chaque paquet la route la plus efficace en fonction des paramètres
du réseau et de ses conditions de fonctionnement ce qui nécessite des échanges fréquents qui génère
un trafic important qui peut vite créer des saturations sur les réseaux à faible débit.
Le principal EGP utilisé dans le monde est BGP (Border Gateway Protocol), il utilise des
processus de décision multicritère : choix des administrateurs généraux, de l'AS et du routeur,
antériorité du chemin (plus il est vieux plus il y a de chance qu'il soit fiable), métrique, etc. BGP est
quasi le seul protocole EGP, ce qui en fait un standard.

Gestion des erreurs de routage sous IP


L'utilisation de IP nous découple des réseaux physiques, il faut donc établir une liaison entre
les erreurs de routages (gérées au niveau de IP) et le comportement du réseau (géré par la couche
MAC). Si une machine cible (par exemple aux USA) est éteinte, la machine source (par exemple en
France) doit recevoir une erreur de routage si elle tente d'y accéder.
IUT de CACHAN Les réseaux en Page 160 sur 193
H. Angelis Informatique Industrielle Version 2017

Le protocole ICMP
Il existe un protocole de control des communications sur IP, nommé ICMP (Internet Control
Message Protocol ou protocole des messages
de contrôle sur internet), dont la trame est
présentée ci-contre et qui s'encapsule dans les
trames IP en mettant à 1 la valeur du champ
protocole de la trame IP. Dans l'entête ICMP
seuls les 3 premiers champs sont utilisés systématiquement (le checksum se calculant sur l'ensemble
de la trame ICMP).
ICMP a pour rôle de transmettre les messages d'erreurs liés à la couche IP au travers des
différents réseaux grâce à 2 champs codés chacun sur un octet : Type et Code.
Type Code Description Erreur Test
0 0 Réponse à l'écho PING •
Destination inaccessible
0 Réseau Inaccessible •
1 Machine Inaccessible •
2 Protocole Inaccessible •
3 Port Inaccessible •
4 Fragmentation nécessaire mais non autorisée •
5 Echec de la route source •
6 Réseau inconnu •
3
7 Machine inconnue •
9 Réseau Interdit par le routeur local •
10 Machine interdite par le routeur local •
11 Réseau interdit •
12 Machine interdite •
13 Communication interdite par filtrage •
14 Violation de la précédence de machine •
15 Coupure de la précédence de l'action •
4 0 Débit trop élevé •
Redirection
0 Redirection pour un réseau •
5 1 Redirection pour une machine •
2 Redirection pour un type de service et réseau •
3 Redirection pour un type de service et machine •
8 0 Requête d'écho PING •
9 0 Alerte du routeur •
10 0 Sollicitation du routeur •
Dépassement de temps
11 0 TTL à 0 pendant le transit •
1 TTL à 0 à la recomposition •
Mauvais paramétrage
12 0 Erreur d'entête IP •
1 Option non reconnue •
13 0 Requête TIMESTAMP •
14 0 Réponse TIMESTAMP •
17 0 Requête ADRESS MASK •
18 0 Réponse ADRESS MASK •
L'utilisation d'ICMP permet de tester ou de signaler les erreurs, mais on lui a ajouté des
fonctions de test comme par exemple les commandes PING (malheureusement très souvent filtrées
dès que le réseau est jugé assez stable par ses administrateurs) et TRACEROUTE.
Page 161 sur 193 Les réseaux IUT de CACHAN
Version 2017 en Informatique Industrielle H. Angelis

La commande PING
La commande PING (pour Packet InterNet Groper) est un logiciel de test écrit en 1983 par Mike
Muuss et dont le nom est tiré du bruit des sonars de sous-marin. Il permet de tester la réponse d'une
machine cible à une sollicitation de la part d'une machine source. Cette sollicitation est un écho, que
la machine cible doit retourner.

L'entête ICMP associé à la fonction PING est uniquement composé des 2 premières lignes de
l'entête ICMP (les 8 premiers octets), c'est à dire qu'en plus des champs de type et de code et du
checksum, on trouve 2 autres champs :
• Un champ d'identification qui transmet l'identité de la source (au cas où plusieurs
sources tenteraient de communiquer avec la même cible en même temps).
• Un champ de numéro de séquence qui sert à indiquer quel est le numéro du message
transmis (tous les échos étant sinon totalement identiques les uns aux autres).
Le message émis est donc composé d'un entête IP avec l'adresse de la machine source et de la
machine cible, en suite on trouve, encapsulé dans le champ de donnés de IP l'entête ICMP qui possède
un type 8 et un code à 0, suivent le code d'identification de la machine source et le numéro de
séquence.
Le message retourné par la cible est lui aussi composé d'un entête IP et d'un entête ICMP où
le type et le code valent tous les deux 0, le champ d'identification et le numéro de séquence sont ceux
de la requête d'écho (le message émis).

La commande TRACEROUTE
La commande TRACEROUTE est souvent considérée (à tort) comme une implémentation de la
commande PING (en réalité, il s'agit d'un paquet UDP et très rarement d'un écho PING, trop
fréquemment filtré) et qui permet de connaitre les routeurs qui composent le chemin suivit par le
paquet IP.
Son principe consiste à créer volontairement des erreurs de routage, pour recevoir les trames
ICMP d'erreur et obtenir ainsi les adresses IP des routeurs successif du chemin de données.
On commence par envoyer une première trame IP (en réalité une trame UDP contenant une
trame IP, voir le chapitre suivant) à destination de la cible, en fixant volontairement son TTL à 1. Au
passage par le premier routeur, celui-ci décrémente le TTL de la trame qu'il vient de recevoir et comme
ce TTL vaut alors 0, le routeur détruit le message et retourne à l'émetteur une trame ICMP, dont le
contenu est un type 11, code 0, contenant dans l'entête IP son adresse.
Ainsi en incrémentant la valeur du TTL (avec un TTL valant 1 on identifie le premier routeur,
avec un TTL valant 2, le second, etc.) jusqu'à la cible, on peut retrouver (s'il n'y a pas de filtrage des
trames ICMP) le chemin suivi par les datagrammes.
IUT de CACHAN Les réseaux en Page 162 sur 193
H. Angelis Informatique Industrielle Version 2017

IPv6
Initié en 1990 pour pallier au futur manque d'adresse IPv4, le protocole IPv6 a été validé en
1998 (RFC 2460). Il fait appel à une adresse IP codée sur 128 bits (soit un pool d'environ 256 x 1036
adresses ou encore 668 x 1021 adresses par m² sur l'ensemble de la surface de la terre).
Sa philosophie est résumée par ses inventeurs par l'expression : "96 more bits, no magic", bien
que dans les faits cette affirmation ne soit pas totalement vrai (la trame IPv6 étant assez différente de
la trame IPv4), sa signification doit se comprendre comme "C'est pas pareil, mais ça marche pareil"…
Comportant 16 octets (contre 4 pour IPv4), la trame IPv6 abandonne la représentation
décimale pointée d'IPv4 pour revenir à l'hexadécimal (comme les adresses MAC), par soucis
d'économie d'écriture (3 nombres par octets en décimal pointé contre 2 en hexadécimal) séparé de 16
bits en 16 bits (4 quartes hexadécimales) par un ":".
Il n'en reste pas moins qu'écrire une adresse IPv6 revient à saisir 32 termes hexadécimaux et
7 ":". On a donc cherché à simplifier la représentation de l'adresse en autorisant les élisions, par
exemple, l'adresse : 2001:db8:2e0d::3564:0:9b6f:de0 se traduit de la façon suivante :
2001 0db8 2e0d 0000 3564 0000 9b6f 0de0
Où le "::" signifie donc "autant de 0 qu'il faut pour compléter (il ne peut donc s'employer
qu'une seule fois dans une adresse), et par la suppression des 0 de tête (par exemple de0 signifie
0de0).
De plus comme pour IPv4, il est possible de décrire des groupes d'adresse, par exemple
2001:db8::/32 signifie toutes les adresses entre 2001:0db8:0000:0000:0000:0000:0000:0000
et 2001:0db8:ffff:ffff:ffff:ffff:ffff:ffff.

L’adresse IPv6
Même si l’adresse IPv6 est 4 fois plus grande qu’une adresse IPv4, elle n’en reste pas moins
très proche dans le concept de son ancêtre sans toutefois commettre les mêmes erreurs qu’elle : plus
de classe, pas de zone réservée, pas de distribution anarchique, etc. Elle est organisée en 2 champs de
64 bits (un peu comme une adresse MAC) : le préfixe et l’interface.
Fort de l’expérience d’IPv4, l’adresse IPv6 a été pensée en terme d’efficacité de routage, c’est-
à-dire qu’on a inclus en plus des classiques unicast (dialogue 1 vers 1) et multicast (monologue 1 vers
plusieurs), un anycast qui permet d’optimiser le routage en délivrant le message à la première interface
rencontrée dans un groupe de nœuds utilisant la même adresse (mode qui n’existait pas en IPv4). On
a aussi supprimé toute notion de broadcast.

Contrairement à IPv4 où un nœud ne peut avoir qu’une seule adresse à la fois, avec IPv6,
chaque nœud peut accepter un nombre illimité d’adresses qui lui permettent de dialoguer en unicast,
en anycast et en multicast, simultanément, sans avoir à être reconfiguré.
Page 163 sur 193 Les réseaux IUT de CACHAN
Version 2017 en Informatique Industrielle H. Angelis

Le préfixe
Le préfixe représente les 64 bits de poids fort de l’adresse. Il est découpé en 3 catégories :
• Les adresses unicast (et anycast) globales : Ce sont des adresses uniques permettant
une communication directe (routables). Pour l’instant, le IANA limite cette catégorie
au préfixe 2000::/3 (c’est-à-dire, toutes les adresses qui commencent par 2 ou 3),
mais, à quelques rares exceptions près (voir plus bas), toutes les valeurs d’adresse non
définies ailleurs devrait appartenir à cette catégorie.
• Les adresses unicast link-local : Ce sont des adresses non routables permettant des
échanges au sein d’un réseau local (sans mettre en œuvre de routeur). Les adresses
link-local commencent par fe80::/64.
Chaque machine dispose par défaut, avant l’obtention de son adresse globale unique,
d’une adresse unicast link-local (qui n’a besoin d’être unique que sur le réseau local,
puisqu’elle n’est pas routable) lui permettant de dialoguer même en l’absence d’une
adresse globale (ce qui permet d’avoir des machines invisibles du monde extérieur).
• Les adresses multicast : Ce sont des adresses potentiellement routables, selon le
champ d’application choisi (scope), permettant de diffuser à plusieurs nœuds en
même temps des paquets. Les adresses multicast commencent par ff00::/8.
1 1 1 1 1 1 1 1 0 R P T scope
F F X X
Les bits R, P et T sont des flags (à 0 dans la plupart des cas et que je ne présenterai pas
ici). Le champ d’application des adresses multicast est définit par la valeur du champ
scope. Il peut prendre 8 valeurs :
scope Nom Zone
0 Réservé
1 Interface Interne au nœud (rien n’est visible sur le réseau)
2 Link Diffusion sur le réseau local (non routable)
4 Admin
5 Site Diffusion à plus ou moins grande échelle (routable)
8 Organisation
E Global Diffusion à la planète entière
F Réservé

Dans les adresses unicast globales, le préfixe est généralement composé de manière
hiérarchique par les autorités fournissant l’accès au réseau :
Taille (en bits) 3 61 bits à répartir en fonction des besoins
Autorité IANA RIR LIR ou FAI Sous-réseau

Les 3 premiers bits du préfixe sont définit par le IANA (le 2::/3 des adresses unicast globales),
ce même IANA fournit en suite au RIR (Regional Internet Registar, le RIPE-NCC en Europe) un bloc de
taille variable (par exemple le bloc RIPE-NCC associé au réseau de l’université est 2001:0600::/23),
il en fait de même avec les autres RIR en fonction de la demande.
Ce bloc est alors partagé par le RIR entre ses différents LIR (Local Internet Registar, RENATER
pour les universités françaises) ou les FAI (Fournisseur d’Accès à Internet). Par exemple, le bloc utilisé
par RENATER (et qui englobe toutes les universités de France) est 2001:0660::/32. Là encore la
taille des blocs est variable en fonction des demandes (Orange utilise un bloc /19, Free, un bloc /26).
Au bout de la chaine le LIR, ou le FAI, structure son réseau en fonction de zones géographiques
et ou de sa clientèle. Par exemple RENATER fournit à l’université de Paris-Sud le bloc
2001:660:3201::/48. L’université dispose donc de 16 sous-réseaux de 264 machines chacun, soit
la capacité de fournir 280 adresses soit tout de même environ 1024 machines ou encore 1 million de
milliard de milliard de machines.
IUT de CACHAN Les réseaux en Page 164 sur 193
H. Angelis Informatique Industrielle Version 2017

L’interface
L’interface ou plutôt l’identification de l’interface est composée des 64 bits de la partie basse
de l’adresse IP. La norme impose que cette identification soit unique sur le réseau local.
Bien que non interdit, il est très fortement déconseillé de coder en dur l’adresse IPv6 d’un
nœud, toutefois dans le cas où on ne disposerai pas de machines capable d’effectuer une requête
DHCP (Dynamic Host Configuration Protocol), il est possible de créer des adresses à définition locale,
moyennant (comme pour les adresses MAC) la mise à 1 d’un bit de l’adresse.

Les adresses réservées


Il existe quelques adresses de réservées en IPv6, mais premier gros changement par rapport à
IPv4, c’est que les 0 et les FF (255) sont à nouveau autorisés (en IPv4, le 0 code le n° du réseau et FF
toutes les machines sur un réseau), ainsi un nœud peut avoir une adresse qui se termine par un 0 ou
un FF.
::/128 (tous les bits à 0) Inexistante (adresse donnée à toute machine non connectée)
::1/128 Rebouclage (équivalent de 127.0.0.1 en IPv4)
64:ff9b::/96 Adresse de passage IPv4 -> IPv6
2001::/32 Utilisé par Teredo (tunnel IPv6 dans IPv4)
2001:db8::/32 Réservées à la documentation (par exemple les exemples de ce poly)
2002::/16 Adresse de passage de IPv6 -> IPv4
fc00::/7 Adresse non routables (un peu comme 10.0.0.0/8 ou 192.168.0.0/16)
fe80::/10 Adresse non routable, disponible par défaut (l’équivalent en IPv6 de l’adresse
IPv4 : 169.254.0.0/16) pour permettre une requête DHCPv6.

Entête IPv6
Comme pour l’adresse, IPv6 a bénéficié de l’expérience d’IPv4, résultat un entête simplifié ne
conservant que les champs réellement nécessaires :
Version : champ constant qui vaut 6 pour IPv6.
Traffic Class : Comme le champ service de la
trame IPv4, il contient les flags des services ECN
(Explicit Congestion Notification) et les services
de différentiation, qui classifient les paquets.
Flow Label : Ce champ a été ajouté pour
permettre la gestion des applications temps réel,
il a depuis évolué pour permettre un routage
plus efficace.
Payload Length : La taille en octet des données de la trame IPv6 (sans l’entête).
Next Header : Indique à quel protocole appartient l’entête qui suit l’entête IPv6. Il peut s’agir d’un
protocole de couche 4 (TCP ou UDP ou autre, partagé avec IPv4), on retrouvera alors la valeur prévue
dans IPv4 (TCP = 6, UDP = 17, etc.), mais on peut aussi introduire une option (qui n’est plus gérée
comme avec IPv4 comme une extension de l’entête, mais comme l’entête d’un protocole embarqué
dans la tame IPv6.
HOP limit : C’est l’équivalent du TTL d’IPv4 (il est décrémenté à chaque passage par un nœud, arrivé à
0, le paquet est éliminé).
Ici s’arrête le chapitre sur IPv6, auquel il manque des informations importantes sur les
extensions d’entête (Extension Headers), des informations qui peuvent être retrouvées facilement sur
internet, et sur les champs Traffic Class et Flow Label, dont l’étude est trop complexe et appelle des
connaissances non présentes dans ce document.
Page 165 sur 193 Les réseaux IUT de CACHAN
Version 2017 en Informatique Industrielle H. Angelis

TCP et UDP
Jusqu'à présent, on n'a vu dans internet que la mécanique de transfert, c'est-à-dire partir d'un
point pour arriver à un autre, ce sur quoi les ingénieurs et chercheurs de l'UCLA ou du BBN travaillait
lorsqu'ils essayaient de créer leurs premières communications. Mais maintenant que l'on sait partir
d'une machine pour en rejoindre une autre, il reste à trouver une utilité à cet échange, de mettre en
place les services que l'on utilise sur internet…
Le protocole IP permet, comme on l'a vu dans le chapitre précédent, de transférer une
information vers une machine cible, de façon non connecté, c'est à dire en ne s'occupant ni de la façon
dont les données sont transmise, ni de l'ordre dans lequel elles arrivent, ni même en se posant la
question de la capacité de la machine cible à les recevoir. Il manque donc un élément très important
dans le dialogue sur les réseaux, le contrôle du flux. C'est le rôle de la couche de transport autrement
dit de TCP ou de UDP.
Avant de détailler ces deux protocoles, il existe une notion importante liée aux protocoles de
transport, c'est la notion de port.

Les Ports
Un port (traduction erronée du latin porta, la porte, et non de portus, le port) est un point
d'accès à un nœud, qui est soit associé à un service (well-known port), soit associé à une
communication (ephemeral port).
Lorsqu'un client cherche à se connecter à un serveur, il vient sur le port associé au service qu'il
recherche et, si le service est actif et s'il en respecte bien le formalisme de communication, il réussit à
établir un dialogue avec lui.
Un port est donc un simple moyen d'associer un processus sur le serveur, qui peuvent ainsi
être décorrélés des logiciels susceptibles d'en fournir le service (comme par exemple pour le service
HTTP, les serveurs Apache ou IIS) et un service (HTTP dans notre exemple précédent), sans que le client
n'ait à interroger le serveur pour savoir où envoyer sa requête.
Les numéros de port sont codés sur 16 bits (de 0 à 65 535) et ils sont classés selon 2 catégories.
Les numéros de 1 à 1023 sont appelés les "Well Known Port", ils correspondent à des
applications système fondamentales dûment enregistrées et reconnues de tous, ouverte et publiées
sous forme de RFC comme par exemple :
• 80 = HTTP,
• 20 et 21 = FTP (20 pour les données, 21 pour les ordres).
• 25 = SMTP (envoi de mail)
Les Well Known Ports sont exclusivement utilisés par les serveurs pour donner accès à leurs
services (on sait par exemple que pour accéder au service HTTP, il faut aller communiquer sur le port
80 du serveur).
Les numéros de port supérieurs à 1023 sont appelés les "Registered Ports" (de 1 024 à 41 151)
ou "Dynamic Ports" (à partir de 41 152 et jusqu'à 65 535), ils sont utilisés par les clients comme
numéros de port source pour se connecter aux ports de destination des serveurs (on les appelle alors
"Ephemeral Ports"). Ils sont aussi utilisés par certains logiciels comme ports serveurs pour des
échanges "privés" (par exemple pour les jeux en ligne de type Shoot'Em'All).
IUT de CACHAN Les réseaux en Page 166 sur 193
H. Angelis Informatique Industrielle Version 2017

Client – Serveur
Rôles
Pour toute application, il existe 2 modes de fonctionnement. Le mode serveur et le mode
client. Un serveur ne démarche pas les clients en leur proposant ses services, il attend qu'un client les
lui réclame. Le client est donc le demandeur, et c'est donc toujours le client qui initie une
communication avec un serveur (ce qui justifie que les serveurs soient les seuls utilisateurs des ports
Well-Known).
Le client utilise donc un de ses ports (généralement un port éphémère), non utilisé par une de
ses applications, pour initier le dialogue avec le Well Known Port du serveur associé au service
recherché. Prenons l'exemple d'une communication HTTP entre un client et un serveur, le client
utilisera un port quelconque (X) pour parler au port 80 du serveur. Celui-ci lui répondra depuis le port
80 vers le port X du client. L'ensemble de ces paramètres forment une Socket.

Les Sockets
Une Socket (une prise en Anglais) est un "connecteur réseau" vue d'un point du côté logiciel,
c'est-à-dire au niveau de l'application (dans le modèle OSI). On vu que la liaison "mécanique" entre 2
machines est un processus totalement fonctionnel (voir les chapitres précédents), on s'intéresse avec
la Socket à l'aspect logiciel du service.
Il n'est pas rare pour un serveur d'avoir à un instant donné plusieurs connexions provenant de
plusieurs sources, mais aussi d'avoir plusieurs connexions provenant de la même source. Le rôle d'une
Socket est d'identifier chacune de ces connexions de façon unique pour permettre une communication
efficace (un peu comme un serveur au restaurant ne doit pas vous donner à la place de votre café, le
thé de la table voisine).
Une Socket est composée des adresses IP et des
ports locaux, du numéro du protocole (d'application)
utilisé et de l'adresse IP et du port du nœud distant.Le tout
est identifié par un Handle (poignée en Anglais) qui permet
d'identifier les sockets entre elles.
Une Socket doit toujours être unique c'est à dire
qu'il ne doit jamais il y avoir deux socket utilisant en même
temps un même port source de la machine source et un
même port de destination de la machine de destination.
Prenons l'exemple d'un client d'adresse IP
192.168.89.209, souhaitant se connecter à un serveur
HTTP d'adresse 129.175.224.9.
Du coté client, les choses sont claires, il connait son adresse IP (192.168.89.209), l'adresse IP
du nœud distant (129.175.224.9), le port distant (80 puisque HTTP) et le protocole (80 aussi puisqu'il
s'agit là encore de HTTP), il lui reste juste à trouver un n° de port local, le premier inutilisé (imaginons
par exemple 1040). La Socket du client est prête, pour lui, la communication peut commencer.
Coté serveur, les choses sont un peu plus compliquées puisqu'il attend un client, il doit donc
disposer d'une Socket prête à accueillir les informations
d'un client, donc une Socket à moitié remplie (Half-
opened Socket). Lorsque le client va se connecter, le
serveur trouvera dans les trames IP et TCP (ou UDP) les
informations qui lui manque.
Page 167 sur 193 Les réseaux IUT de CACHAN
Version 2017 en Informatique Industrielle H. Angelis

A la connexion, le serveur récupère donc les informations du client et complète donc sa Socket.
Mais s'il souhaite être à nouveau disponible pour une autre connexion, il ouvre alors une nouvelle Half
Opened Socket pour permettre soit une connexion d'un autre nœud, soit une seconde connexion du
même nœud.

Imaginons que le client souhaite établir une deuxième connexion avec le serveur, il ouvre alors
une seconde Socket localement, pour cela, il va utiliser un autre port local que celui de la Socket
précédente (par exemple 1041). Il y aura alors coté client deux Sockets qui sont bien différentes l'une
de l'autre.
Coté serveur, la Half Opened Socket va elle aussi se peupler des informations fournies par le
client lors de sa connexion. On aura là aussi, coté serveur, deux Sockets différentes, et pour permettre
une connexion supplémentaire, le serveur ouvre une troisième Socket (une Half Opened Socket).

Lorsque le client ou le serveur va clore une de ses communications avec le serveur (ou le client),
les deux Sockets coté client et serveur sont toute les deux détruites. Toutefois, pour éviter tout risque,
le numéro de port utilisé par le client reste marqué comme utilisé et le client ne peut plus l'utiliser
pour une nouvelle connexion.
Cela permet d'être à peu près certain qu'il n'y aura pas de confusion côté serveur entre une
potentielle nouvelle Socket et l'ancienne qui vient d'être détruite (et ne l'est peut-être pas encore si le
serveur est assez occupé).
IUT de CACHAN Les réseaux en Page 168 sur 193
H. Angelis Informatique Industrielle Version 2017

UDP
Le protocole UDP (User Datagram Protocol) est une
version très simplifiée du protocole de transport TCP, qui
n'assure pas les fonctions de mode connecté, c'est à dire
qu'il ne contrôle pas la fiabilité des échanges, et il ne gère
pas le flux. Les messages transmis par le protocole UDP
sont appelés datagrammes.
UDP est utilisé comme pseudo interface logicielle
au protocole IP lui permettant de fonctionner avec des
ports donc de créer des sockets.
Dans les faits, le protocole UDP n'assure aucune
des fonctions de contrôle de TCP, en particulier, il ne
s'assure pas que les données ont été bien transmise, ni qu'elles sont arrivées, ni qu'elles n'ont pas été
reçues plusieurs fois ou dans le bon ordre.
On utilise le protocole UDP pour les applications où le contrôle de flux n'est pas nécessaire,
typiquement tout ce qui est streaming et en particulier lorsqu'il s'agit de direct, il n'est en effet pas
envisageable de réémettre à tous les utilisateurs si l'un d'entre eux n'a pas bien reçu, faute de quoi on
n'est plus en direct.
L'entête UDP se décompose en 2 parties : Le pseudo entête, qui n'est pas transmis et qui est
composé d'éléments de la trame IP, et l'entête UDP à proprement dit.

Le pseudo entête UDP


Le pseudo entête n'est pas transmis, il est composé d'éléments pris dans les entêtes IP et UDP
(c'est l'une des raisons de l'incompatibilité de TCP/IP avec la structure OSI puisque la couche 4 utilise
des informations de la couche 3). Son rôle est de fournir à la couche 4 (dans notre cas UDP, mais on
verra plus loin que c'est la même chose avec TCP) les informations nécessaires au remplissage de la
Socket.

IP Source Address
C'est l'adresse IP du nœud émetteur de la trame, codé sur 32 bits si on utilise IPv4 ou sur 128
bits si on est sur IPv6.

IP Destination Address
C'est l'adresse IP du nœud destinataire de la trame, codé sur 32 bits si on utilise IPv4 ou sur
128 bits si on est sur IPv6.

Zero
Ce champ permet de compléter la ligne (de 32 bits et dont on n'utilise que 24 bits) en
remplissant les 8 bits libres avec des '0'.

Proto
Ce champ contient la copie du champ Protocol de l'entête IP. Il vaut donc toujours, dans le cas
d'un pseudo entête UDP la valeur 17 ou 0x11 (code du protocole UDP dans le protocole IP).

UDP Length
Le champ est la recopie du champ Length de l'entête UDP. Il a pour valeur la taille en octet de
la trame UDP, entête inclus, mais sans prendre en compte le pseudo entête.
Page 169 sur 193 Les réseaux IUT de CACHAN
Version 2017 en Informatique Industrielle H. Angelis

L'entête UDP
L'entête UDP est extrêmement minimaliste, comme il n'assure qu'une fonction de
transmission des numéros de ports, il n'a pas d'autre obligation que celle d'être transmis au début du
datagramme.
Si la taille du datagramme est plus grande que le MTU du réseau sur lequel il circule, c'est le
protocole IP qui va effectuer la fragmentation du datagramme (comme on l'a vu dans l'étude du
protocole IP) et l'entête UDP n'est pas recopié sur les autres fragments (les informations fournies par
le protocole IP étant suffisante pour permettre une identification et un réassemblage correct des
fragments.

Source Port
Ce champ donne le numéro du port de la machine source. Il est peut être omis, dans ce cas,
on le remplace par 16 bits à 0.

Destination Port
Ce champ donne le numéro du port de la machine cible. Il identifie le service utilisé. La liste
des ports utilisables est fixée par le IANA.

Length
Ce champ donne la taille totale, en octets, du paquet UDP, donnée comprise. Il ne peut pas
être inférieur à 8 (taille de l'entête UDP).

Checksum
Ce champ est une somme modulaire sur 16 bits réalisée à partir des données de l'entête et du
pseudo entête UDP.

Domaine d'application d'UDP


En contrepartie de sa très faible sécurité (il n'y a absolument aucun contrôle dans le protocole
UDP), UDP présente l'avantages d'être rapide et simple (il utilise peu de ressources pour effectuer des
contrôles) et son efficacité est excellente (UDP n'utilise que 8 octets d'entête).
Son domaine d'utilisation se réduit donc à des applications nécessitant rapidité et simplicité
comme par exemple le DNS, le streaming audio ou vidéo, ou les jeux.
IUT de CACHAN Les réseaux en Page 170 sur 193
H. Angelis Informatique Industrielle Version 2017

TCP
Le protocole TCP est un protocole de transmission permettant un fonctionnement en mode
connecté, contrairement au protocole UDP qui est un protocole sans connexion.
Le mode connecté signifie qu'il y a une vraie relation entre l'émetteur et le récepteur avant
même l'envoi du premier octet de données. Cela sous-entend que les deux machines vont devoir
communiquer et se mettre d'accord avant de pouvoir s'envoyer le moindre octet de données.

Mode connecté
En mode connecté, les échanges ne sont donc plus exclusivement des échanges de données, il
y a aussi des trames (vides de données) qui circulent en vue de la synchronisation des échanges (pour
acquitter les messages reçu par exemple).

Acquittements
De même en mode connecté, chaque octet émis doit être validé par le récepteur, on parle
alors d'acquittement). Ainsi lorsqu'un nœud émet un octet Mi, il s'attend à recevoir un acquittement
Ai de cet octet avant d'envoyer l'octet suivant Mi+1. Dès lors, si l'émetteur ne reçoit pas d'acquittement
au bout d'un certain temps, il renvoi alors l'octet Mi à nouveau.
Sachant qu'une trame TCP/IP complète portée par Ethernet nécessite l'envoi de 58 octets
d'entête, alors la transmission d'un octet de donnée et son acquittement imposerait d'envoyer 117
octets pour un seul octet de données. Et que dire du débit informatif obtenu…
On utilise donc un mode d'envoi et d'acquittement par groupe des octets du message. C'est à
dire que l'émetteur et le récepteur s'accordent sur un nombre maximum T d'octets transmissibles sans
acquittement.
Ainsi, l'émetteur envoie ses octets sans attendre de réponse de la part du récepteur tant que
le nombre d'octets en suspend est inférieur à T, et de même le récepteur acquitte les octets par groupe
dès qu'il le peut. L'acquittement Ai signifie alors que tous les octets reçus jusqu'à Aième ont été
correctement reçus. On appel ce processus l'acquittement en bloc.
Pour pouvoir effectuer des acquittements par bloc, il faut donc que l'émetteur et le récepteur
aient initié le point de départ de leur communication et qu'ils transmettent à chaque trame
l'information de position du premier octet de données du segment (voir un peu plus loin la signification
d'un segment) par rapport au point de départ de la communication.

Fragmentation
Contrairement au protocole UDP où l'entête n'apporte des informations que sur les ports en
présence, dans le cas du protocole TCP, les informations de l'entête ne peuvent pas être dissociées du
corps du message. Dès lors il n'est pas envisageable de laisser le protocole IP fragmenter un message
TCP. C'est TCP lui-même qui gère le découpage de son message en segments qui seront ensuite confié
à IP.
Dans le cas de message TCP, on parle donc de segments (là où UDP parle de datagrammes).
Chaque segment dispose d'un numéro de séquence qui permet d'établir une relation avec le
segment précédent et le segment suivant. Les segments sont émis en rafale, c'est à dire par groupe,
et sont acquittés par groupe. Le phénomène de création de groupe est appelé fenêtrage.
Il faut noter que le protocole TCP place systématiquement à '1' le bit "Don't Fragment" de la
trame IP. Dès lors en cas de besoin de fragmentation, la machine émettrice reçoit de la part du routeur
qui a souhaité fragmenter un message d'erreur qui lui permet de recalculer (par les options de TCP) la
taille maximale d'un segment.
Page 171 sur 193 Les réseaux IUT de CACHAN
Version 2017 en Informatique Industrielle H. Angelis

Entête TCP

Source Port et Destination Port


Ces champs contiennent les numéros des ports des nœuds source et destination. Le numéro
du port source est dans le cas du client un "Ephemeral Port" et dans le cas du serveur un "Well Known
Port" et inversement pour le port de destination.

Sequence Number
Ce champ contient un nombre qui représente le numéro du premier octet de la séquence
transmise par rapport au point de départ de la communication.

Acknowledgement Number
Ce champ contient un nombre qui représente la position du dernier octet convenable reçu par
rapport au point de départ de la communication.

Offset
Ce champ contient le nombre de mot de 32 bits composant l'entête TCP. Il indique la position
du premier octet de données par rapport au début de la trame TCP. Il est le pendant pour le protocole
TCP du champ IHL dans le protocole IP.

Les Flags
Il y a 9 bits de contrôle qui permettent de valider des fonctions de TCP, 3 sont récents (N, C et
E), les autres datent de la création de TCP (U, A, P, R, S, F) :

Les Flags NC, CWR et ECE


Les Flags NC (pour ECN Nonce ou N), CWR (Congestion Window Reduced ou C) et ECE (ECN
Echo ou E) font tous les 3 partie d'une fonction récente (2003), mise en œuvre dans les
communications TCP et visant à réduire les congestions (Explicit Congestion Notification).
IUT de CACHAN Les réseaux en Page 172 sur 193
H. Angelis Informatique Industrielle Version 2017

Lors d'une transmission depuis une source "haut débit", vers une cible "bas débit", les données
peuvent être émises par le serveur à un rythme intenable pour la cible, il y a donc embouteillage
(congestion) des données. Jusqu'à l'apparition de la norme ECN, le protocole de communication se
contentait de ne pas gérer les congestions en ne lisant simplement pas tous les paquets qui arrivaient
à un rythme trop élevé, puis il demandait explicitement à la source l'envoi des paquets manquant.
Le principe de l'ECN repose sur le fait de ne plus rejeter les paquets mais de signaler la
congestion. Cela se fait par l'utilisation des 3 flags N, C et E, mais aussi par le champ service de la trame
IP.

URG
URGENT ou (U). Il signifie qu'un secteur du champ de données doit être traité de façon urgente.
Il est associé au champ Urgent Pointer qui définit la fin du secteur urgent (le début se situant juste
après l'entête). Les données urgentes doivent être traitées immédiatement, indépendamment de la
réception complète du message (qui peut être présent sur plusieurs segments).

ACK
ACKNOWLEDGE ou (A). Il signifie que le champ Acknowledge Number est une valeur
d'acquittement. Ce bit est presque toujours mis à '1', même quand aucunes nouvelles données n'ont
été reçues.

PSH
PUSH ou (P). Il indique que la trame contient des données.

RST
RESET ou (R). Comme son nom l'indique, lorsqu'il est activé, ce bit signifie que la transmission
est terminée sans préavis (dans certains cas, on peut avoir des données dans une trame dont le champ
de RESET est actif, cela signifie que ces données sont les dernières de la communication).

SYN
SYNCHRONIZE ou (S). Ce flag indique que le message est une demande de connexion où le
nœud distant envoi le numéro du point de départ de sa communication. Ce numéro est appelé ISN
(Initial Sequence Number).

FIN
FINISH ou (F) : Ce flag indique la fin de la communication. Contrairement au flag RST, il implique
une réponse de fin du nœud distant, permettant de s'assurer que l'ensemble de la communication a
été convenablement reçue par les nœuds mis en œuvre dans la communication.

Window
Ce champ donne la taille en octet de la fenêtre de réception du nœud, c'est-à-dire le nombre
d'octet qu'elle est capable de recevoir.

Checksum
Ce champ de 16 bits contient la somme modulaire calculée sur l'ensemble de l'entête et du
pseudo entête TCP (qui est identique à celui vu lors de l'étude du protocole UDP), avec toutefois la
simple différence que l'information TCP length n'est pas présente dans la trame TCP, mais est calculée
à partir de la trame IP : TCP Length = Total Length – 4 x IHL.
Page 173 sur 193 Les réseaux IUT de CACHAN
Version 2017 en Informatique Industrielle H. Angelis

Urgent Pointer
Le champ contient la position du premier octet de données non-urgente dans le segment. Il
n'est pris en compte que si le bit U est actif. Les octets, entre le début du segment et la valeur du
champ Urgent Pointer, sont donc les octets urgents.

Les Options
Les options permettent de passer des informations de contrôle de flux entre l'émetteur et le
récepteur. Elles doivent toujours être d'une taille multiple de 32 bits. Chaque option s'organise de deux
façons :
• Soit sous la forme d'un octet unique.
• Soit sous la forme d'un groupe d'octet organisé sous la forme : d'un octet de code,
d'un octet de longueur (incluant la taille des octets de code et de longueur) et de
plusieurs octets de données.
Il existe potentiellement 256 codes d'option (l'information étant codée sur 8 bits), mais seul
un petit nombre d'options (9) sont utilisés (une grande partie des options étant classées comme
obsolètes, certaines propriétaires et d'autres expérimentales) :
o Le code 0 est un octet unique qui signifie la fin des options.
o Le code 1 est un octet unique qui signifie NOP (No OPeration), il est utilisé pour
compléter les options qui n'ont pas une longueur multiple de 4 octets. On le place
avant l'option.
Le code 0 n'est quasiment jamais utilisé, le code 1 sert à fabriquer le remplissage (padding).
o Le code 2 (MSS, pour Maximum Segment Size) est un groupe de 4 octets (le code, la
taille, et le champ de longueur codé sur 16 bits), qui permet lors de l'initialisation de
la connexion (SYN) de définir la taille maximum du segment.
o Le code 3 (Window Scale) est un groupe d'octet qui permet de modifier la taille de la
fenêtre au-delà des 16 bits définis par l'entête TCP.
o Le code 4 (SACK Permitted) est un octet unique qui permet lors de l'établissement de
la connexion (SYN) d'activer les fonctions SACK (Selective Acknowledgment).
o Le code 5 (SACK) est un groupe d'octet de taille variable, qui permet d'acquitter des
segments d'un message arrivés dans le désordre.
o Le code 8 (RTT) est un groupe d'octet qui permet de mesurer le RTT (Round Trip Time,
le temps mis par un message pour réaliser un aller-retour), ou plutôt pour l'estimer. Il
est codé sur 10 octets avec 2 octets de Padding.
o Le code 28 (User Time Out) est un groupe d'octet, qui permet à un nœud de donner la
valeur de son Time Out (temps à partir duquel en l'absence de communication, la
connexion est considérée comme close).
o Le code 29 (TCP-AO) est un groupe d'octet de taille variable (dépendant de la taille de
la clé de cryptage), qui permet d'ajouter une clé cryptographique de validation du
message pour permettre son authentification.
Dans les faits on retrouvera assez fréquemment les options 2,3 et 4 complétés d'options 1 pour
le remplissage.
IUT de CACHAN Les réseaux en Page 174 sur 193
H. Angelis Informatique Industrielle Version 2017

Fonctionnement de TCP
Initialisation de la connexion
Comme on l'a vu, lorsque que l'émetteur souhaite établir une communication avec une cible
(dont il connait l'adresse IP) pour un protocole d'application donné (donc en connaissant le port
associé), il commence par créer un socket.
Pour cela, il sélectionne un port éphémère local qu'il va utiliser pour cette seule
communication, avec cette cible et avec ce protocole.
Comme, dans une communication TCP, chaque octet doit être acquitté, lors de l'établissement
de la communication, les 2 nœuds en communication (l'émetteur et le récepteur) doivent se
transmettre leurs points de départ respectif pour le comptage des octets, c'est l'ISN (Initial Sequence
Number).
1. Le client envoie une trame SYN au serveur avec un
numéro de séquence spécial : son ISN (dans notre
exemple x).
2. Le serveur lui répond alors en acceptant son
message (ACK) et lui transmet alors en retour son
ISN (y dans notre exemple) en activant le bit de
synchronisation (SYN). On a donc une trame
SYN + ACK avec un SN = y, et pour permettre au
client de vérifier que son ISN a bien été pris en
compte par le serveur, un numéro d'acquittement (AN) = x+1.
3. Suite à cette réponse du serveur, le client vérifie que le numéro d'acquittement reçu correspond
bien à son ISN plus 1 (x+1) et il acquitte alors le message du serveur en lui retournant un numéro
d'acquittement égal à l'ISN du serveur plus un (AN = y+1).
4. La connexion est maintenant établie.

Dialogue
La connexion étant établie, le dialogue peut alors prendre place entre le client et le serveur.
Imaginons que dans cette conversation, le client soit émetteur de données et le serveur
consommateur de ces données.
Le client utilise Ethernet pour sa transmission, il va donc envoyer un message contenant au
maximum 1 500 octets de données sur Ethernet.
Cette trame contient elle-même un paquet IP, composé de 20 octets d'entête (plus
éventuellement des octets pour les options, mais pour être plus clair, je ne traiterai pas ce cas) et donc
1 480 octets de données (moins s'il y a des options).
Ce paquet IP contient à son tour un segment TCP, composé de 20 octets d'entête (là encore
plus éventuellement des options) et 1 460 octets de données.
La taille maximum des données d'un segment est donc toujours inférieure ou égale à 1 460
octets et souvent moins (surtout au début de la transmission) lorsque le client et le serveur doivent
configurer leur communication en utilisant des options.
Revenons à notre échange. Le client va transmettre de multiples paquets au serveur. Comme
chaque octet doit être acquitté cela signifie que pour chaque octet envoyé, le serveur doit répondre
par un acknowledge, ce qui signifie que pour envoyer un octet on doit le mettre dans une trame TCP,
elle-même dans une trame IP, elle-même dans une trame Ethernet, soit 18 (Ethernet) + 20 (IP) +20
(TCP) octets d’entête pour 1 octet de données, ce n’est clairement pas rentable et c’est pire si l’on
Page 175 sur 193 Les réseaux IUT de CACHAN
Version 2017 en Informatique Industrielle H. Angelis

prend en compte l’acquittement qui ne contient pas de données mais qui est une trame complète (TCP
+ IP + Ethernet).
On utilise donc un autre mécanisme pour permettre un échange plus efficace des données. Ce
mécanisme c’est l’acquittement collectif (ou par bloc), c’est-à-dire que si je valide le dernier octet reçu,
j’ai validé par la même occasion tous les octets précédents (y compris ceux des blocs précédents). Du
coup les transmissions utilisent toujours 58 octets d’entête (18+20+20) mais cette fois ci elles peuvent
contenir jusqu’à 1460 octets de données, ce qui rend la transmission beaucoup plus efficace.
Le client envoie donc ses données au serveur par bloc. Pour cela il utilise comme référence la
valeur du SN qu’il a transmis lors de l’initialisation de la communication (x dans notre cas). Le premier
segment transmis aura donc comme point de départ x et contiendra 1460 octets (de x à x+1459). Puis
le segment suivant ira de x+1460 à x+2919, et ainsi de suite.
Coté serveur, à chaque réception d’un segment, si le message ne contient pas d’erreur, alors
on doit retourner à l’émetteur un acquittement pour signifier que le message a été bien reçu. Pour
cela il lui suffit de retourner au client
le numéro dernier octet reçu. Dans le
segment n°1 (allant de x à x+1459), il
lui suffit d’envoyer un acquittement
avec la valeur x+1460 pour signifier la
bonne réception de tout le message
(segment n°2 sur la figure). Pour le
segment 3 (de x+1460 à x+2919), le
serveur acquittera en retournant un
AN qui vaut x+2920, c’est-à-dire 1 de
plus que le dernier octet qu’il a reçu (segment 4), etc.
Mais si le client doit attendre la réponse du serveur pour pouvoir envoyer le paquet suivant,
alors pour peu que le serveur soit très sollicité, il se pourrait que ce dernier n’envoie pas ses
acquittements très vite ce qui pourrait ralentir encore la communication. Le client envoie donc ces
données à la volée (sans attendre d’acquittement), charge au serveur d’acquitter quand il peut.
Ce pose alors un problème :
Imaginons qu’un client soit en train de
télécharger (légalement) un fichier
énorme (à l’échelle du réseau) de
quelques Mo, imaginons que le client
n’envoie aucune trame d’acquittement
pendant un long moment (presque
toute la transmission), puis lorsque le
message a pratiquement été totalement
transmis, le client signale une erreur au
début de la transmission (par exemple
sur la 2ème trame envoyé par le serveur).
Le serveur doit alors lui renvoyer cette trame et seulement celle-là, cela signifie pour lui qu’il doit
garder en mémoire l’intégralité du message transmis et cela tant qu’il n’a pas reçu d’acquittement.
Il serait alors facile pour des pirates de bas étage de faire tomber les services du serveur en
saturant sa mémoire avec des messages pas totalement transmis. On utilise donc un mécanisme
supplémentaire celui de la fenêtre glissante.
IUT de CACHAN Les réseaux en Page 176 sur 193
H. Angelis Informatique Industrielle Version 2017

Fenêtre glissante
Le principe de la fenêtre glissante consiste à limiter la quantité mémoire réservé à la connexion
coté serveur et coté client (dans les 2 sens de communication) à un certain nombre d’octets. Ainsi si
on a un message de grande taille à envoyer (un message qui utilisera plusieurs centaines de segments
pour être transmis), son empreinte sur la mémoire restera constante et indépendante de la taille réelle
de l’objet à transmettre.

Imaginons une transmission (illustrée par le dessin ci-dessus) où 10 segments vont être
transmis. Les segments 1 et 2 ont été envoyés et le segment 1 a été acquitté. La fenêtre (représentée
par le rectangle dans l’illustration) permet de stocker l’équivalent de 6 segments.
Comme le segment 2 n’a pas été acquitté, il est susceptible de ne pas avoir bien reçu par la
cible, il reste donc disponible dans la mémoire de la machine source pour une retransmission si
nécessaire. Le segment 1 par contre a déjà été acquitté, il n’aura plus besoin d’être renvoyé à nouveau,
il a donc été sorti de la mémoire de la source. Le segment 3 est en cours de transmission et les
segments 4 à 7 sont en attente de transmission. Dès que le segment 3 aura été transmis et sans
attendre d’acquittement, la transmission du segment 4 commencera (illustration ci-dessous). Les
segments 8 à 10 sont eux hors de la fenêtre, ils ne pourront pas être transmis tant que des segments
précédents resteront non acquittés.

Lorsque l’acquittement des segments 2 et 3 va arriver (peut être sous la forme d’un
acquittement pour les 2, peut être sous la forme de 2 acquittements), alors la fenêtre va évoluer.

Les segments 2 et 3 étant désormais acquittés, ils quittent la fenêtre qui se décale à droite et
permet aux segments 8 et 9 de passer en mode disponible pour la transmission.
Page 177 sur 193 Les réseaux IUT de CACHAN
Version 2017 en Informatique Industrielle H. Angelis

Le cas extrême où la fenêtre serait pleine de segments non acquittés n’est plus vraiment un
problème puisque la mémoire mise en œuvre pour la communication reste faible (peu ou prou la taille
de la fenêtre), que la communication est suspendue dès qu’il n’y a plus de segments disponibles pour
la transmission (ce qui permet au serveur de s’occuper d’autre transmissions) et qu’en l’absence
d’acknowledge, au bout d’un certain temps, le serveur va fermer d’autorité la communication par
l’envoi d’un segment RST (RESET).

Erreurs de transmission
Reprenons nos échanges entre le client et le serveur et imaginons qu’un
des segments se perde (par exemple le segment 2, comme dans l’illustration ci-
contre).
Le segment n°1 (SN = x) a été émis (la flèche en noir) et acquitté (la flèche
en rouge). Le segment n°2 (SN = x + 1460) est envoyé, mais il n’arrive pas à
atteindre la cible, qui forcément n’ayant rien reçu n’a rien à acquitter. Sans
attendre, dès que le segment n°2 a été envoyé, le segment n°3 (SN = x + 2920) est
envoyé à son tour.

En noir les segments reçus et acquittés, en rouge les non acquittés

Côté serveur, après avoir reçu le segment n°3, on dispose bien des
segments n°1 et 3, mais il manque le segment n°2. On ne peut donc pas acquitter
le segment n°3 (ce qui reviendrait à valider le n°2) La seule solution disponible
consiste à valider le segment n°1 pour redéclencher la transmission du segment
n°2.
Sauf que pendant ce temps-là, le client (qui avait fini d’envoyer le
segment n°3) est déjà en train d’envoyer le segment n°4.

Toutefois comme il n’a reçu que des acquittements du segment n°1, il va réémettre (dès que
la ligne est libre, donc dès que le segment n°4 aura été transmis) le segment n°2, tout simplement car
les acquittements qu’il reçoit ne coïncident pas avec les numéros des segments qu’il émet.
Lorsque le segment n°4 a été reçu, pour le serveur, on ne peut pas acquitter les segments n°3
et 4, puisqu’il lui manque toujours le segment n°2. Encore une fois, on acquitte le segment n°1.
Lorsque le a enfin client réussit à envoyer son segment n°2, le serveur dispose de tous les
segments de 1 à 4. Il peut donc acquitter le segment le plus grand (c’est-à-dire le n°4).

Mais pendant ce temps-là, le client à quand à lui commencé à nouveau l’émission du segment
n°2 (en effet, il a reçu 2 fois l’acknowledge du 1, donc tant qu’il ne voit pas l’acknowledge du segment
n°4, il émet ou réémets les morceaux qu’on lui demande). Heureusement juste après la première
réémission du segment n°2, le client reçoit un acknowledge du segment n°4. Il peut alors prévoir l’envoi
du segment n°5 dès que la ligne est libre et s’il n’y a pas d’autres erreurs.
Sitôt le segment n°2 réexpédié pour la seconde fois, le segment n°5 est envoyé par le client.

Le serveur qui a reçu le segment n°2 acquitte donc encore une fois le segment 4 pendant que
le client est en train d’envoyer le segment 5. On est donc revenu à la normale…
Cette méthode étant un peu complexe et assez peu efficace, depuis une trentaine d’année on
utilise l’acquittement sélectif qui permet d’acquitter les paquets dans le désordre.
IUT de CACHAN Les réseaux en Page 178 sur 193
H. Angelis Informatique Industrielle Version 2017

Clôture de connexion
Pour la clôture de la connexion, il n’existe qu’une seule méthode propre et une quantité
illimitée de mauvaises méthodes.
Le principe de la clôture consiste
pour le protagoniste qui fournit les
données, lorsqu’il n’a plus rien à envoyer
(par exemple lorsque le téléchargement
du fichier est terminé) de signaler dans son
dernier paquet (qui en général est de taille
inférieure à la trame classique de 1460
octets puisqu’on ne contrôle pas la taille
du fichier à envoyer)
Donc lors de l’envoi du dernier segment de données, le client (dans notre exemple) active le
flag FIN, le serveur doit lui répondre en 2 temps, dans le premier, il acquitte le message reçu (pour
éviter les pertes de données), puis il envoie un segment FIN (et accessoirement ACK) auquel le client
répondra par un ACK signifiant que tout va bien et que la connexion est fermée.
Cela peut sembler long, mais cette fin permet de ne pas perdre de données (imaginons que le
dernier segment du Blueray® 50 Go que vous êtes en train de télécharger se perd. Si vous ne fermez
pas proprement la connexion, vous risquez d’avoir à nouveau le blueray® à télécharger.
Certains systèmes se contentent d’envoyer un RST à la fin de la transmission (ce qui accélère
beaucoup les choses, mais nuit globalement aux échanges de fichier de grosse taille).
Certains autres systèmes répondent en une seule trame à la consigne de FIN, en envoyant une
trame FIN + ACK, le problème se situe dans une perte de cette trame (la loi de Murphy dit qu’à priori
ce n’est pas impossible), qui rend la clôture est impossible et seul un RST sortira les machines de leur
état d’attente.
Page 179 sur 193 Les réseaux IUT de CACHAN
Version 2017 en Informatique Industrielle H. Angelis

L’automate TCP
Le fonctionnement de TCP est tellement simple
qu'il s'apparente à un fonctionnement de type automate.
Il y a cet automate dans les 2 nœuds concernés (le client
et le serveur).
Considérons le cas d’un client. Par définition le
client fait une ouverture active, c’est-à-dire qu’il se
connecte au serveur.
On part de l'état où la socket est fermée et on
envoi du segment SYN (ce qui fait passer la machine à
l'état SYN sent ou SYN envoyé). Là, trois possibilités
apparaissent :
• La machine distante envoie la réponse RST (Reset) ou
ne répond pas. Dans ce cas, on retourne à l'état
d'origine.
• La machine distante répond SYN+ACK, on renvoie un
ACK. Notre machine passe alors à l'état Established
(établie), c’est l’ouverture classique.
• La machine distante répond par un SYN (c’est-à-dire
qu’elle essaye de se connecter à nous, elle se
comporte comme un client). On appelle aussi cette
fonction l'ouverture simultanée. Dans ce cas, on
envoie un simple ACK et on passe par l'état SYN
received (SYN reçu) avant d'accéder à l'état
Established (établie) dès que l’on recevra le ACK de la
machine distante.
Dans le second cas (mode serveur). Notre machine
a ouvert une socket. Elle est à l'écoute du réseau, on aura donc une ouverture passive. Lorsqu'elle
reçoit un segment SYN, elle répond par SYN + ACK, ce qui la fait passer à l'état SYN received (SYN reçu).
Le client en renvoyant un ACK la fait passer à l'état Established (établie). En cas d'attente trop longue
entre le SYN+ACK et le ACK, on peut envoyer la commande FIN pour passer à l'état de fermeture active
de la connexion (fermeture à notre initiative).
A l'état Established, le transfert de données entre les deux machines a lieu. Une fois ce
transfert effectué, la fermeture de la connexion doit avoir lieu. Elle peut, elle aussi être active (notre
machine est à l'initiative de la fermeture) ou passive (la machine distante est à l'initiative de la
fermeture).
Dans le premier cas, notre machine envoie un segment FIN, qui nous fait passer à l'état FIN
wait-1. En réponse, la machine distante retourne un ACK, qui fait passer la machine à l'état FIN wait-
2. Puis la machine distante envoie un segment FIN et notre machine lui retourne un ACK. Cela fait
passer la machine en mode Time-Wait où elle va attendre la durée de vie de 2 segments avant de
fermer définitivement la connexion.
Dans le second cas (la fermeture passive), la machine distante envoie le segment FIN, notre
machine lui répond immédiatement ACK, ce qui la fait passer à l'état CLOSE wait. Puis notre machine
envoie un segment FIN qui la fait passer à l'état LAST ACK. La connexion ne sera réellement détruite
que lorsque notre machine recevra le ACK de la machine distante.
IUT de CACHAN Les réseaux en Page 180 sur 193
H. Angelis Informatique Industrielle Version 2017

DHCP
Le protocole DHCP (pour Dynamic Host Configuration Protocol ou protocole de configuration
dynamique de client) est né dans les années 1990 en remplacement des protocoles RARP et BOOTP
qui permettait à des machines diskless (sans disque dur) de réclamer sur le réseau un programme de
démarrage à un serveur.
Le rôle du protocole DHCP est une extension du protocole BOOTP qui consiste à fournir à une
machine un ensemble de paramètres lui permettant de configurer automatiquement ses paramètres
réseau.
Un nœud au démarrage n’a pas d’adresse IP ou pour être plus exacte prend l’adresse 0.0.0.0.
Il envoi alors une requête DHCP DISCOVER à l’adresse 255.255.255.255 (broadcast) depuis le port 68
vers le port 67.
Cette requête utilise l’entête DHCP (qui n’est en fait que l’entête BOOTP dans lequel les options
remplacent un champ désormais inutilisé) ci-dessous auquel il ajoute de nombreuses options.

L'entête
Operation Code : Vaut 1 pour une requête,
0 pour une réponse.
HardWare Type : Identifie le support de
communication (Ethernet = 1).
HardWare Length : Identifie le nombre
d’octets nécessaires à coder l’adresse
Hardware (6 pour Ethernet)
Hops : Initialement mis à 0 par le client, il peut
être modifié en cas d’utilisation de machines
relai (relay agent) chargées de transmettre sur
d’autres réseaux la requête DHCP.
XID : Un nombre sur 32 bits créé par le client
qui permet à tous les éléments mis en œuvre
d’identifier l’émetteur alors même qu’il n’a pas
encore d’adresse IP.
Second : Inutilisé (à 0).
Flags : Le champ flag est composé du bit B
suivit de 15 bits à 0. Le bit B permet de signaler
que le client n’a pas d’adresse IP et qu’il doit
donc être contacté par un broadcast (d’où son
nom).
CIAddr : (Client IP Address) C’est l’adresse
actuelle du client. Elle vaut 0 si le client n'a pas
encore d'adresse (première demande), elle
vaut l'adresse actuelle en cas de
renouvellement.
YIAddr : (Your IP Address) C'est l'adresse que le
serveur assigne au client.
Page 181 sur 193 Les réseaux IUT de CACHAN
Version 2017 en Informatique Industrielle H. Angelis

SIAddr : (Server IP Address) Comme son nom ne l'indique pas, c'est l'adresse IP de la machine à
contacter pour la suite du processus de configuration (il peut s'agir de l'adresse d'un relai, pas
forcément celle du serveur DHCP).
GIAddr : (Gateway IP Address) Adresse IP de la passerelle permettant d'atteindre le serveur DHCP
lorsqu'il n'est pas sur le réseau local que le client.
CHAddr : (Client Hardware Address) Adresse MAC du nœud client (sur 6 octets, même si il y a 16
octets), les données commencent à l'octet 0 et sont dans l'ordre habituel d'une adresse MAC, c'est-à-
dire Little Endian. Les 10 derniers octets sont remplis de 0.
SName : (Server Name) Le nom du serveur. Rarement utilisé (en général on utilise plutôt une option
pour ça).
File : (Boot Filename) Le fichier à télécharger en BOOTP, donc totalement inutilisé en DHCP.

Les options
Les options commencent par un premier mot de 32 bits : le Magic Cookie qui permet
d'identifier que le protocole utilisé dans l'entête DHCP (qui en fait est l'entête de BOOTP) est un
protocole DHCP et non BOOTP. Le Magic Cookie est un mot de 32 bits contenant toujours le code 0x63
82 53 63. Suivent une longue série d'options :

Format d'option
Chaque option est composée de 3 champs :
• Option Code : Permet d'identifier l'option utilisée (codée sur 1 octet).
• Option Length : Indique le nombre d'octet utilisés pour l'option (codée sur 1 octet).
• Option Data : Contient les données utilisables de l'option (taille variable).

Codes d'option
Code Nom Fonction Catégorie Sens
1 Subnet mask Valeur du masque de sous réseau Configuration S -> C
3 Router Adresse IP du ou des routeurs Configuration S -> C
6 Domain Name Server (DNS) Adresse IP du ou des serveurs DNS Configuration S -> C
12 Host Name Nom de la machine Client Information C -> S
15 Domain Name Nom du domaine (si présent) Configuration S -> C
50 Requested IP Address Adresse souhaitée par le client Information C -> S
51 IP address Lease Time Durée du bail (en sec.) Configuration S -> C
Entête définissant la fonction DHCP
• 1 = DISCOVER
• 2 = OFFER
• 3 = REQUEST
53 DHCP Message Type • 4 = DECLINE Entête
• 5 = ACK
• 6 = NACK
• 7 = RELEASE
• 8 = INFORM
S -> C
54 Server Identifier Adresse IP du serveur faisant l'offre de bail Information
C -> S
55 Parameter Request List Liste des paramètres demandés par le client Information C -> S
Durée avant de renouveler le bail auprès du
58 Renewal Time Value (T1) Configuration S -> C
serveur (en sec.)
59 Rebinding Time Value (T2) Durée avant de renouveler le bail (en sec.) Configuration S -> C
60 Vendor Class Identifier Indique l'OS utilisé par le client Information C -> S
Adresse MAC du client sous la forme :
61 Client Identifier • Identificateur de réseau (HW Type), Information C -> S
• Adresse MAC
255 End Indique la fin des options Entête
IUT de CACHAN Les réseaux en Page 182 sur 193
H. Angelis Informatique Industrielle Version 2017

Dialogue
Commençons par une machine sans adresse qui vient juste de se mettre en route. Elle n'a pas
de paramètres réseaux. Elle T1envoie une trame DHCP DISCOVER.

DHCP DISCOVER

Le message DHCP va être envoyé dans une trame Ethernet en broadcast (FF FF FF FF FF FF),
l'adresse de l'émetteur est celle de la machine demanderesse. La trame Ethernet contient une trame
IP elle aussi en broadcast (DA = 255.255.255.255). Comme la machine émettrice n'a pas d'adresse IP,
l'adresse de la source est SA = 0.0.0.0.
Cette trame IP contient une trame UDP dont le port source est le 68 (DHCP Client) et le port
destination le 67 (DHCP Server), deux ports Well Known. La trame DHCP est dans le champ de données
du datagramme UDP.
Comme il s’agit d’une requête (OP = 1), sur le réseau est Ethernet (HW Type = 1), donc une
adresse MAC sur 6 octets (HW Len = 6), le client tire un nombre aléatoire qui va lui servir de XID.
Comme ce message est envoyé en broadcast, le flag Broadcast est activé.
CIAddr, YIAddr, SIAddr et GIAddr sont tous les 4 à 0.0.0.0. Normal puisque le nœud n'a pas
d'adresse et ne connait pas les machines du réseau. Toutefois le client donne son adresse MAC dans
le champ CHAddr sous la forme de 6 octets d'adresse et de 10 octets de remplissage à 0 (Pour faire les
16 octets du champ).Les champs suivant (SName et File) sont laissés vide.
Les options :
• La première option est l'entête DHCP (option n°53). Elle vaut 1 (DHCP DISCOVER).
• La seconde est Client Identifier (n°61) avec l'adresse MAC du client.
• La troisième est Host Name (n°12) avec le nom de la machine.
• La quatrième est Parameter Request List (n°55) avec la liste des paramètres demandés.
En général les paramètres : 1 (subnet mask), 3 (Routeur), 6 (DNS) sont les 3 paramètres
"indispensables", mais il peut il y en avoir plus… Beaucoup plus.
• La cinquième option est END (n°255) pour indiquer la fin des options.
• Il peut il y avoir plus d'options, selon les nœuds et surtout selon leurs OS…
Page 183 sur 193 Les réseaux IUT de CACHAN
Version 2017 en Informatique Industrielle H. Angelis

DHCP Offer
La commande DHCP OFFER est une offre de service proposée par un serveur DHCP
(éventuellement via un relai) pour répondre à la demande DHCP DISCOVERY. Il ne s'agit pas encore
d'une configuration, mais seulement d'une proposition.

Une fois la commande DHCP DISCOVER envoyée, les serveurs ou relais DHCP vont faire une
offre d'adresse à notre machine. Comme celle-ci n'a toujours pas d'adresse IP, la réponse sera elle
aussi envoyée en broadcast. C'est le relai ou le serveur DHCP qui répond, on retrouvera donc son
adresse MAC comme source, mais comme la machine cible n'est pas identifiée, la destination est
l'adresse de broadcast (DA = FF:FF:FF:FF:FF:FF).
Dans la trame IP, comme la machine qui fait l'offre a une adresse IP, on retrouve son adresse
comme source, mais la destination est quant à elle indéfinie puisque la machine cible n'a pas encore
d'adresse IP, donc la réponse est envoyée en broadcast (DA = 255.255.255.255).
Ce qui va permettre à notre machine d'identifier que cette réponse lui est bien adressée, c'est
le champ XID de la trame BOOTP où on va retrouver le même numéro que pour la requête.
Il est possible pour notre machine de recevoir plusieurs offres venant de plusieurs serveurs
DHCP. Il existe plusieurs comportements selon les OS utilisés, mais globalement (et en particulier chez
Microsoft, Apple et Linux) notre machine utilisera toujours la première offre qu'elle reçoit.
IUT de CACHAN Les réseaux en Page 184 sur 193
H. Angelis Informatique Industrielle Version 2017

DHCP Request
Suite à l'offre qu'elle a reçue, notre machine va accepter une des offres (en général la première
qu'elle a obtenue) en envoyant une requête.

Comme le message est envoyé en broadcast, le serveur utilise le XID pour lui répondre.

DHCP Ack
Page 185 sur 193 Les réseaux IUT de CACHAN
Version 2017 en Informatique Industrielle H. Angelis

Une fois la trame DHCP ACK reçue, notre machine dispose de toutes les informations requises
pour sa connexion (malgré le fait qu'elle n'a pas reçu l'ensemble des paramètres qu'elle a demandé) :
• L'adresse IP (contenue dans YIAddr),
• Le masque de sous réseau (contenu dans l'option n°1),
• L'adresse du routeur (contenue dans l'option n°3),
• L'adresse du (ou des) serveur de DNS (contenu dans l'option n°6),
• Les temps T1 et T2 (options n°58 et 59) et
• La durée du bail (option n°51).

Timing DHCP
Dans le timing du DHCP, une fois le DHCP ACK reçu, les
temporisations T1 et T2 démarrent et au bout du temps T1, le
client envoi un DHCP REQUEST au serveur (dont l'adresse est
contenue dans la trame ACK avec l'option n°54).
En cas de réponse (DHCP ACK), le client remet à 0 ses
deux timers. En cas de non réponse, le client relance des envois
réguliers de DHCP REQUEST et en l'absence de réponse, lorsque
le temps T2 est écoulé, le client broadcast ses requêtes pour
contacter d’autres serveurs DHCP potentiellement disponibles.
En l'absence de réponse (à une trame DHCP Discover ou
DHCP Request), passé un certain délai, le client considère qu'il
n'a pas d'adresse valide et déclenche une autoconfiguration
APIPA (Automatic Private Internet Protocol Addressing), qui se
caractérise par une adresse IP commençant par 169.254
(169.254.0.0/16).
Généralement les temps T1 et T2 sont très long (dans
notre exemple 17 ans). Toutefois, si on veut (comme c’est parfois
le cas avec certain fournisseurs d’accès) changer l’adresse IP
(adressage dynamique), ils peuvent être réduits pour imposer un
changement d’adresse IP.
IUT de CACHAN Les réseaux en Page 186 sur 193
H. Angelis Informatique Industrielle Version 2017

DNS
Le service DNS (Domain Name System) est un protocole qui permet d'associer une ou plusieurs
URL (Uniform Ressource Locator) à une adresse IP, un peu comme un annuaire. Ce service associe un
numéro à un nom, qui permet une dénomination plus longue mais plus compréhensible des noms des
machines.
Bien que de très nombreuses "dérives commerciales" soient à noter (cybersquattage,
domaineurs, etc.), ce service permet de récupérer automatiquement l'adresse IP d’une machine cible
à partir d’une adresse textuelle (URL) grâce à des serveurs de DNS.
Dès l’origine d’internet, il est apparu évident que l’augmentation du nombre de nœuds sur
ARPANET imposait la création d’un annuaire. La méthode choisie (à l’époque) fut l’utilisation d’un
annuaire, installé sur chaque machine, sous la forme d’un fichier texte « hosts », dont la gestion était
confiée au SRI (Stanford Research Institute), charge à eux de tenir la liste des nœuds à jour et de la
diffuser sur chaque nœud du réseau.
En 1983 devant la complexité de gestion de ce système centralisé, John Postel confie à Paul
Mockapetris de l’ISI (Information Sciences Institute), une entité de l’école d’ingénieur Viterbi de
l’Université de Californie du Sud (USC), la définition d’un système décentralisé et automatisé
d’annuaire.
En novembre 1983, Paul Mockapetris publie les RFC 882 et 883 qui définissent les règles du
DNS. En 1984 Douglas Terry, Mark Painter, David Riggle et Songnian Zhou, étudiants à l’université de
Berkeley, conçoivent le premier serveur de DNS, le Berkeley Internet Name Domain ou BIND, qui reste
encore le logiciel le plus utilisé pour la gestion du DNS et qui est intégré à toutes les versions serveurs
d’UNIX et Windows.
En 1987, la forme définitive du DNS est établie par les RFC 1034 et 1035. Le fichier Hosts
contenait alors 5 500 entrées tandis que le DNS avait déjà plus de 20 000 entrées. De nos jours le fichier
Hosts ne sert plus qu’à verrouiller les sites que l’on souhaite interdire.

Organisation du DNS
Le DNS est organisé en arborescence. Tout part de la racine (root) identifiée par un point (●).
Juste en dessous de la racine, on trouve les TLDs (Top Level Domains). Il existe actuellement plus de
1 000 TLD.
Originellement, les TLDs se classaient en 2 catégories :
• Les gTLDs (pour generic TLD), qui étaient 6 :
o .arpa : (ARPANET) temporaire le temps que les machines rejoignent un autre TLD.
o .com : (commercial) à usage général (non-restreint).
o .edu : (educational) réservé aux établissements d’éducation (restreint).
o .gov : (government) réservé au gouvernement américain (restreint).
o .mil : (military) réservé à l’armée américaine (restreint).
o .org : (organization) réservé aux organisations à but non lucratif (non-restreint).
• Les ccTLDs (pour country-code TLD) qui utilisaient le code à 2 lettres international (ISO 3166 alpha-
2).
On considère comme restreint les domaines où le client doit faire la preuve de son
appartenance au groupe. Par exemple, vous ne pouvez pas obtenir de domaine à partir du TLD .mil ,
à votre nom, sauf à être une branche de l’armée américaine (être un militaire américain ne suffit pas),
par opposition aux domaines non-restreints qui sont librement achetable (si disponible).
Page 187 sur 193 Les réseaux IUT de CACHAN
Version 2017 en Informatique Industrielle H. Angelis

Mais il fut ajouté immédiatement une nouvelle extension gTLD :


• .net : (network) réservé aux opérateurs réseau (non-restreint).
Puis 1988 on ajouta :
• .int : (international) réservé aux institutions internationales (restreint)
Au début des années 90, le IANA (alors aux commandes) scinde la catégorie gTLD en deux : les
gTLD pour les domaines non restreint ( .com , .net et .org ) et les sTLD (sponsorized TLD) pour les
anciens gTLD dont les restrictions d’accès imposaient des contrôles, nécessitant de déléguer à des
sociétés privées leur gestion, et que le IANA n’était plus en capacité de réaliser.
Puis en 1998, l’ICANN (Internet Corporation for Assigned Names and Numbers) rajoute
7 domaines supplémentaires à la liste des sTLD :
• .aero : (aeronautics) réservé aux compagnies aériennes et associées (restreint).
• .biz : (businesses) réservé aux entreprises (non-restreint).
• .coop : (cooperatives) réservé aux coopératives (restreint).
• .info : (information) site informatifs (non-restreint).
• .museum : (museum) réservé aux musés (restreint).
• .name : (name) pour les sites des particuliers (non-restreint).
• .pro : (professionnal) pour les sites des professionnels (restreint).

Puis enfin en mars 2011 (suite à une longue bataille juridique, pas encore achevée) :
• .xxx : (pornographics) pour les sites pornographiques (non-restreint).
En 1999 l’IETF (Internet Engineer Task Force) crée une nouvelle catégorie les tTLDs (test TLDs)
pour permettre les tests (et la documentation) de nouvelles fonctionnalités en réservant les domaines
.example , .invalid , .localhost et .test .

Mais c’est le 20 Juin 2011 que l’ICANN va franchir le pas définitif vers la libéralisation des TLD
en ouvrant la possibilité d’une internationalisation des serveurs de nom c’est-à-dire autoriser les
serveurs de DNS à utiliser des jeux de caractères non latin (cyrillique, chinois, indiens, tamoul, japonais,
etc.) et par la même occasion offrir la possibilité d’enregistrer des TLD presque librement contre une
souscription de 185 000 dollars.
Un an plus tard (en 2012), 1930 demandes avaient été formulées (dont 751 qui étaient en
doublon), et en juillet 2013 les nouveaux opérateurs démarrèrent leur exploitation des ngTLD.
La dénomination des types de TLD est modifiée en 3 catégories :
• Les ccTLDs (Country Code Top Level Domains) au nombre de 289
o 248 en caractères latins
o 41 en caractères non-latins
• Les gTLDs (Generic Top Level Domains) au nombre de 712
o Les 3 anciens gTLD ( .com , .net et .org )
o Les 679 nouveaux gTLD (parfois appelés ngTLD pour new gTLD)
o Les 15 sTLD :
.aero .asia .cat .coop .edu
aéronautique site asiatique site en catalan site coopératif éducationnel US
.gov .int .jobs .mil .mobi
gouvernement US international pour DRH militaire US téléphonie mobile
.museum .post .tel .travel .xxx
sites de musés entreprises postales annuaire agences de voyage pornographie
o Les 15 tTLD (dont 11 en caractères non-latins)
• Le ARPA (Address and Routing Parameter Area), qui gère l’infrastructure du réseau.
IUT de CACHAN Les réseaux en Page 188 sur 193
H. Angelis Informatique Industrielle Version 2017

Règles de dénomination
Le DNS est une arborescence qui part de la racine :

Par exemple, l’URL pc-angelis.ge1.iut-cachan.u-psud.fr. , se décompose en :


• Le point final . représente la racine
• Le TLD : .fr.
• Le domaine de second niveau : .u-psud.fr.
• Le domaine de troisième niveau : .iut-cachan.u-psud.fr.
• Le domaine de quatrième niveau : .ge1.iut-cachan.u-psud.fr.
• Le noeud pc-angelis.ge1.iut-cachan.u-psud.fr.
Chacune de ces URL est une Fully Qualified Domain Name (ou FQDN) c’est-à-dire qu’elle
permet de connaitre la position absolue d’une machine dans l’arborescence du DNS (ce qui signifie
qu’elle se termine toujours par un ●, dont on fait généralement l’élision dans la vie courante).
Tous les domaines doivent respecter 2 règles simples :
• Aucun nom de domaine (pas l’arborescence) ne doit dépasser 63 caractères
• Aucun FQDN (l’arborescence) ne doit dépasser 255 caractères.
Page 189 sur 193 Les réseaux IUT de CACHAN
Version 2017 en Informatique Industrielle H. Angelis

Fonctionnement du DNS
Le DNS fonctionne grâce aux serveurs de noms, qui contrôlent les domaines, gèrent les
associations entre le nom et l’adresse des nœuds du domaine, et procèdent à la résolution des noms.
Un serveur de nom a autorité sur son domaine.

Délégation d’autorité
Le principe du DNS repose sur la délégation d’autorité, c’est-à-dire que chaque contrôleur de
domaine ne connait que les serveurs de noms de ses sous-domaines, à qui il délègue son autorité, et
les machines qui sont sous son autorité directe.
Pour reprendre l’illustration de la page précédente : le serveur racine ne connait que les TLD
et pas les domaines de second niveau rattachés à ce TLD.
Par exemple, le contrôleur du domaine .u-psud.fr. a autorité sur tous les sous-domaines de
l’Université Paris-Sud et par exemple sur le sous-domaine .iut-cachan.u-psud.fr. . Les serveurs de
noms de l’université ne connaissent donc de l’IUT de Cachan que ses serveurs de noms et aucune autre
machines du réseau de l’IUT.
Le contrôleur du domaine de l’IUT a autorité sur tous les sous-domaines de l’IUT et par
exemple sur le sous-domaine .ge1.iut-cachan.u-psud.fr . Le contrôleur du domaine de l’IUT ne
connait de GE1 que ses serveurs de noms, qui eux connaissent l’ensemble des machines du
département.
Lorsque qu’un serveur de noms reçoit une requête de DNS, il fait appel à sa base de noms pour
identifier :
• Si l’adresse correspond à un sous domaine (à qui il a délégué son autorité), il renvoi la
recherche vers ce sous domaine.
• Si l’adresse est sous son autorité directe, il répond par l’adresse IP correspondant à
l’URL recherchée.

Résolution DNS
Imaginons qu’une machine totalement extérieure au domaine de la cible (et n’ayant pas en
cache son adresse) essaye de contacter par exemple : pc-angelis.ge1.iut-cachan.u-psud.fr. .

Phase récursive
Le nœud demandeur n’est pas autorisé à effectuer cette recherche. Il doit la déléguer à son
serveur de DNS pour qu’il traduire pour lui l’URL, quel que soit le protocole utilisé (web, mail, etc.). Il
entre en alors en contact avec le contrôleur de DNS principal de son domaine (flèche ❶ du diagramme
de la page suivante), dont il connait l’adresse grâce au protocole DHCP. On parle alors de la phase
récursive de la requête.
Une fois cette première requête transmise au contrôleur de DNS primaire de son domaine (qui
peut être aussi le serveur de nom du sous-domaine où est connectée la machine), celui-ci va vérifier
qu’une requête équivalente n’est pas présente dans son cache et en l’absence d’enregistrement, il
procède à la seconde phase de la requête : la phase itérative.
IUT de CACHAN Les réseaux en Page 190 sur 193
H. Angelis Informatique Industrielle Version 2017

Phase itérative
Si son cache est vide, le serveur de DNS primaire va demander l’adresse IP de la machine d’URL
pc-angelis.ge1.iut-cachan.u-psud.fr. aux serveurs de DNS des domaines qui forment le chemin
vers la cible. Comme il n’a aucune information, il s’adresse à la racine :
• ❷ : Il demande à ● de lui donner l’adresse IP de la cible.
• ❸ : ● lui répond de voir avec le contrôleur du TLD .fr.
• ❹ : Il demande au TLD .fr. de lui donner l’adresse de la cible.
• ❺ : .fr. lui répond de voir avec le serveur de noms du domaine .u-psud.fr.
• ❻ : Il demande à .u-psud.fr. de lui donner l’adresse de la cible.
• ❼ : .u-psud.fr. lui répond de voir avec le serveur du domaine .iut-cachan.u-psud.fr.
• ❽ : Il demande à .iut-cachan.u-psud.fr. de lui donner l’adresse de la cible.
• ❾ : .iut-cachan.u-psud.fr. lui répond de voir avec le serveur de nom du domaine
.ge1.iut-cachan.u-psud.fr.
• ❿ : Il demande au serveur de nom du domaine .ge1.iut-cachan.u-psud.fr. de lui donner
l’adresse de la cible.
• ⓫ : Le serveur de nom du domaine .ge1.iut-cachan.u-psud.fr. lui répond en lui donnant
l’adresse IP associée à l’URL pc-angelis.ge1.iut-cachan.u-psud.fr. .
C’est ce que l’on appelle une requête itérative (on progresse étape par étape).
Page 191 sur 193 Les réseaux IUT de CACHAN
Version 2017 en Informatique Industrielle H. Angelis

In fine le serveur de DNS primaire a récupéré, par itération, l’adresse de la machine ciblée et il
ne lui reste plus qu’à transmettre la réponse à la machine qui a initiée la requête, c’est le retour de la
phase récursive (flèche ⓬ du diagramme).

Le résolveur
Le résolveur est l’élément du serveur de DNS qui gère les itérations dans la recherche de
l’adresse IP associé à une URL. Le résolveur se charge d’interroger les serveurs, mais aussi et surtout
de peupler le cache avec les réponses qu’il obtient successivement.
Ainsi si une autre requête est initiée, le résolveur se contentera d’interroger directement le
serveur de nom du domaine le plus bas qu’il connaisse grâce au contenu de son cache.
Par exemple, si après la requête en direction de pc-angelis.ge1.iut-cachan.u-psud.fr. ,
une autre requête est lancée en direction de pc-priou.ge1.iut-cachan.u-psud.fr. , la requête ne
sera envoyée qu’au serveur de nom du domaine .ge1.iut-cachan.u-psud.fr. .

Glue Records
Reste une dernière question : Comment font les serveurs pour connaitre l’adresse de la
machine suivante dans le chemin vers la cible ?
Lorsqu’il reçoit une requête, le serveur de DNS (qu’il soit de la racine, du TLD ou des niveaux
inférieurs) doit répondre par au moins un nom et surtout par une adresse IP :
• Soit celle de la cible
• Soit celle du serveur de noms de la prochaine itération
Pour cela chaque serveur de nom dispose d’une base de noms où l’on trouve pour chaque
sous-domaine :
• Le nom du sous-domaine.
• Le ou les noms des serveurs de noms ayant autorité sur ce sous-domaine.
• L’adresse IP du ou des serveurs de nom ayant autorité sur ce sous-domaine.
Et pour chaque machine :
• Son nom.
• Son adresse IP (v4 ou v6 ou les deux).
L’ensemble de ces éléments forment les "glue reccords".

Structure du DNS
Le principe fondamental du DNS est la délégation d’autorité, c’est-à-dire que la structure du
DNS repose sur le fait qu'il existe une autorité suprême (le serveur racine) qui délègue son autorité aux
branches inférieures de l’arborescence des noms.

Le serveur racine
On pourrait croire que le serveur racine est extrêmement sollicité, mais ce n’est pas le cas. Par
contre tout arrêt du service se traduit par un fort risque de mise en panne d’internet, c’est pour cela
que dès le début, il a été décidé d’utiliser non pas un unique serveur racine, mais 13 appelés
arbitrairement par une lettre (de A à M), qui eux même sont (depuis le XXIème siècle) distribués sur la
planète pour simplifier la communication anycast (voir IPv6, sauf B, le serveur historique de Paul
Mockapetris qui est unique).
IUT de CACHAN Les réseaux en Page 192 sur 193
H. Angelis Informatique Industrielle Version 2017

Localisation des root-servers (www.root-servers.org)


Chacun de ces serveurs est opéré par un organisme indépendant et des logiciels différents,
pour assurer que le service soit toujours disponible.
Les serveurs de DNS racine reçoivent environ 60 000 à 80 000 requêtes par seconde (le serveur
de DNS publique de Google reçoit 800 000 requête par seconde), mais seul 5% de ces requêtes sont
justifiées (sources ICANN). 95% des requêtes sont liées à un mauvais usage du DNS (en particulier à
l’absence de cache sur les serveurs).
Les serveurs racine sont configurés pour envoyer aux demandeurs les informations des
autorités de tous les TLD à chaque requête, soit un peu plus d’un millier d’enregistrements. Ces
informations étant de plus peu susceptibles de varier, normalement les serveurs de DNS locaux ne
devraient contacter les serveurs racine qu’au pire toutes les 48h.

Les TLDs
Chaque TLD est opéré par une autorité unique qui gère les inscriptions (et résiliations) dans
son domaine. Par exemple l’AFNIC gère le TLD .fr et Verisign le TLD .com .
La mise à jour de la base de données des noms de domaines est réalisée par des vendeurs
enregistrés qui ont l’autorisation d’y accéder, pour inscrire (ou au contraire désinscrire) les domaines
de niveaux deux. Ainsi, le TLD .fr évolue d’environ 2 000 à 3 000 noms par jour.
Les serveurs des TLD sont extrêmement sollicités par les requêtes des utilisateurs (800 000
requête par seconde sur le DNS publique de Google qui est globalement utilisé comme un serveur de
secours). Pour éviter une saturation, outre la redondance et l’utilisation d’anycast (en IPv6), la
présence d’un cache sur les serveurs de noms permet de limiter la charge.

Les serveurs de noms


En dessous des TLD on trouve des serveurs de nom qui forment les étages inférieurs de la
structure du DNS. Le rôle d’un serveur de nom est double :
• Gérer son domaine
• Répondre aux requêtes DNS

Gestion du domaine
La gestion du domaine se fait grâce à des enregistrements de ressources (Resource Records ou
RR) qui peuvent contenir des définitions de sous-domaines, des enregistrements de machines, etc.
Ces enregistrements sont structurés selon un langage définit en 1987 par les RFC 1034 et 1035
et sur lequel repose les logiciels des serveurs de DNS (BIND et autres).
Page 193 sur 193 Les réseaux IUT de CACHAN
Version 2017 en Informatique Industrielle H. Angelis

Les serveurs de noms doivent recenser l’ensemble des machines de leurs domaines même si
elles n’ont pas vocation à servir (elles ne proposent pas de services pour d’autres machines), de façon
à permettre une identification inverse (trouver le nom à partir de l’adresse IP ou IPv6).

Enregistrements
Prenons un exemple d’un enregistrement pour un domaine (issu du manuel en ligne,
open source « DNS for Rocket Scientists » et modifié pour plus de contenu et plus de respect des règles
d’utilisation des exemples réseau) :
; zone file for example.net
$TTL 2d ; 172800 secs default TTL for zone
$ORIGIN example.net.
@ IN SOA ns1.example.net. hostmaster.example.net. (…)

IN NS ns1.example.net.
IN NS ns2.example.net.
IN MX 10 mail.example.net.

ns1 IN A 192.0.2.1
ns1 IN AAAA 2001:db8::1

ns2 IN A 192.0.2.2
ns2 IN AAAA 2001:db8::2

joe IN A 192.0.2.3
joe IN AAAA 2001:db8::3

jack IN A 192.0.2.4

www IN CNAME joe


mail IN CNAME jack

sub.example.net IN NS ns.sub.example.net.
ns.sub.example.net IN A 192.0.2.179
ns.sub.example.net IN AAAA 2001:0DB8::179

Cet enregistrement, au format BIND, décrit :


• Le domaine (ORIGIN) .example.net.
• L’autorité du domaine (SOA), associé à un serveur de nom ns1.example.net. et à une
adresse de contact hostmaster.example.net (en réalité, il s’agit de l’adresse Email :
hostmaster@example.net).
• Le serveur de nom (NS) principal du domaine ns1.example.net. et son adresse
IPv4 (A) et IPv6 (AAAA).
• Le serveur de nom secondaire du domaine ns2.example.net. et ses adresses.
• Deux machines dans le domaine ( joe.example.net. et jack.example.net. ) avec
leurs adresses respectives (IPv4 et IPv6 pour joe et IPv4 seule pour jack).
• L’alias (CNAME) de joe ( www.example.net. ).
• L’alias de jack ( mail.example.net. ).
• Un sous domaine .sub.example.net. .
• Le lien vers le serveur de nom principal du sous domaine ns.sub.example.net. avec
les adresse IP et IPv6 associées à ce serveur.
Il y a de nombreuses autres fonctions qui peuvent peupler ces enregistrements, mais les
principales sont celles-ci-dessus.
On notera une certaines similitudes entre le contenu des Glue Records et les
Resource Records, tout simplement car le premier procède du second.
Fin du polycopié => Enjoy…

Vous aimerez peut-être aussi