Chapitre5 Réseaux de Communication
Chapitre5 Réseaux de Communication
Chapitre5 Réseaux de Communication
GESTION DE LIAISON
But du chapitre
A la fin de ce chapitre l’étudiant connaitra les différentes fonctionnalités de la couche liaison, entre autres :
La structuration des données en trame : découpage orienté caractère, orienté bit, etc.
Le contrôle d’erreurs : les codes VRC, LRC, CRC, etc.
Les techniques de retransmission de trames : les protocoles « Stop & Go » et « Go-back-N »
Le fonctionnement du protocole HDLC :
82
1 Introduction
Nous avons vu qu’une donnée est transmise d’un équipement à un autre sous forme de signaux par la couche
physique. La donnée transmise peut subir des altérations au cours de son acheminement à cause de différents
facteurs extérieurs (ex. le bruit) qui peuvent changer les caractéristiques physiques du signal. On dit qu’une
communication a eu lieu entre un équipement source et un autre de destination si les données transmises par
la source arrivent telle qu’elles sont au destinataire. Pour ce faire, différentes techniques de gestion de
communication sont à mettre en place. Cette gestion de communication doit être assurée tout au long du chemin
reliant la source à la destination. Comme un chemin est constitué d’un ensemble de points représentant les
équipements par lesquels la donnée passe pour arriver à sa destination finale, donc la gestion de communication
peut être assurée de bout en bout (de la source à la destination) ou pour chaque liaison point à point. Cette
dernière est la fonctionnalité de la couche liaison.
2 La couche liaison
La fonctionnalité principale de la couche liaison est d’assurer une transmission point à point entre deux
systèmes adjacents. Donc elle assure une approche locale de la gestion de communication et non de bout en
bout. On dit que cette couche fournit un canal virtuel fiable à la couche supérieure (la couche réseau) en
assurant une transmission de données entre un émetteur et un récepteur sans erreurs et avec détection des
débuts et fins des trames constituant ces données.
Comme le transfert de données dans un réseau local est assuré par les fonctionnalités des deux premières
couches ; physique et liaison (voir chapitre 6), donc on dit que la couche liaison joue un rôle d’interface entre
les couches supérieures et les différentes technologies des réseaux locaux (notez que)
Ce chapitre est divisé en deux parties principales. Dans la première partie, nous allons voir les principales
fonctionnalités assurées par la couche liaison, à savoir :
83
Les stratégies de retransmission de trames :
o Numérotation de trames.
o Acquittements.
o Protocole “Envoyer et attendre”
o Protocole “Go-back-N”
Ces fonctionnalités sont implémentées par un ensemble de procédure formant un protocole de la couche
liaison. Il est essentiel de comprendre comment ces fonctionnalités sont implémentées par un protocole, pour
cela, nous étudions, dans la deuxième partie de ce chapitre, un protocole de référence de la couche liaison, et
dont tous les autres protocoles de cette couche sont ses dérivées, à savoir le protocole HDLC.
1 Découpage en trames
Au niveau physique, les données sont une suite de bits, tandis qu’en niveau liaison elles doivent avoir une
structure. C’est la couche liaison qui structure et découpe les données en des blocs appelés trames. Différentes
méthodes de découpage existent, parmi lesquelles :
Le découpage orienté caractère : chaque trame contient une suite de caractères encadrée par un texte
de début (STX – Start Text) et un texte de fin (ETX – End Text). Le rôle de STX et ETX est de
délimiter la trame pour pouvoir la reconnaitre par le récepteur.
L’inconvénient majeur de cette méthode est qu’elle dépend du codage des caractères (sur 7 ou 8 bits)
qui peut être différent d’une machine à l’autre, et ainsi en utilisant ce découpage il faut penser à
l’adapter au codage utilisé par la machine.
Le découpage orienté bit à l’aide d’un fanion : cette méthode consiste à utiliser une suite bien définie
pour délimiter un bloc de donnée de taille quelconque. Elle :
o Permet à une trame d’avoir une longueur quelconque (pas forcément un multiple de caractère).
o Peut être utilisée quel que soit le codage de caractères utilisé.
Cette méthode est celle utilisée en pratique pour le découpage de données au niveau liaison.
Le principe de cette méthode est d’utiliser un fanion (appelé aussi flag ou drapeau), qui est une suite de bits
spéciale « 01111110 », dont le rôle est de délimiter la trame, c'est-à-dire permettre de connaitre le début et la
fin de la trame.
Exemple : pour la suite de données suivante (provenant de la couche réseau) :
101110101001000101111110100101001100010, la suite à envoyer est :
84
Le problème qu’on peut rencontrer avec cette méthode est l’ambigüité dans la reconnaissance des trames. Ceci
peut arriver si les données contiennent eux même la suite fanion, c'est-à-dire « 01111110 », ce qui est le cas
pour la suite de données de l’exemple précédent, et ainsi le récepteur va l’interpréter ainsi :
Trame originale
Trame 1 Trame 2
Pour remédier à ce problème on utilise des bits de transparence (Bit stuffing) : Après 5 bits consécutifs
à 1, ajouter un bit 0 de transparence.
Bit de transparence
Ainsi, à la réception, la couche liaison procède en premier lieu à la suppression des bites de transparence,
ensuite elle extrait les trames délimitées par les fanions.
2 Contrôle d’erreurs
Le signal peut subir des altérations au cours de sa propagation dans le média de transport. Ceci à cause de
plusieurs facteurs appelés des phénomènes perturbateurs, entre autres le bruit, l’interférence, etc. (pour plus de
détails, reportez-vous au chapitre 4). Ces altérations et modifications du signal engendrent des erreurs dans les
données transmises. Ces erreurs sont généralement des erreurs bit.
Chaque liaison est caractérisée par son taux d’erreurs Te (appelé BER -Bit Error Rate), qui dépend surtout du
média de transmission qui assure cette liaison (c’est une caractéristique du média de transmission). Le taux
d’erreur bit es calculé comme suit :
𝑁𝑜𝑚𝑏𝑟𝑒 𝑑𝑒 𝑏𝑖𝑡𝑠 𝑒𝑟𝑟𝑜𝑛é𝑠
𝑇 =
𝑁𝑜𝑚𝑏𝑟𝑒 𝑑𝑒 𝑏𝑖𝑡𝑠 𝑡𝑜𝑡𝑎𝑙
Exemple : soit la donnée transmise est : 1110001100111100. Si la donnée reçue est : 1110101100101100 →
On dit que le taux d’erreur de cette liaison est : T = = 12,5%
Pour remédier au problème d’erreurs et avoir une transmission fiable (sans erreurs), la couche liaison assure
deux services :
La détection d’erreurs (obligatoire) : en utilisant des codes détecteurs.
85
La correction d’erreurs : en plus de la détection des erreurs la couche assure aussi leur correction. La
correction peut se faire par deux méthodes différentes :
o Automatique : en utilisant un code correcteur (détecteur et correcteur), par exemple : le code
de Hamming.
o Par retransmission : en utilisant une stratégie de retransmission de trames erronées (en plus
d’un code détecteur).
Dans ce qui suit, nous allons voir les différentes techniques de detection, tandis que pour la correction d’erreurs
nous allons voir seulement les techniques de correction par retransmission.
Il existe différentes techniques de détection d’erreurs, certaines d’entre elles ne sont pas applicables à cause
des faiblesses qu’elles présentent, tandis que d’autres sont celles utilisées actuellement. Ces méthodes sont :
Détection par écho.
Détection par répétition.
Détection par code :
o Code simple : les parités.
o Code polynomial ou code cyclique : CRC - Cyclic Redundancy Check
N.B. La technique de détection utilisée est la détection par code polynomial.
Cette méthode consiste à envoyer une trame et son duplicata au récepteur qui va les comparer et vérifier s’il y
a une erreur ou non. L’inconvénient de cette méthode est que dans le cas où la même erreur est survenue sur
les deux trames, le récepteur acceptera la trame alors qu’elle est erronée.
Le récepteur renvoie la trame reçue à l’émetteur pour vérification d’erreurs. L’inconvénient de cette méthode
est que dans le cas où seule la trame renvoyée par le récepteur est erronée, l’émetteur considèrera la trame
erronée alors qu’elle est bien reçue par le récepteur.
T T
T’ T’
T
T’’=T’ T = T’ ?
86
La détection par code
La détection par code (ou par redondance) consiste à ajouter à l’information initiale (bits de données) une
information supplémentaire appelés bits de contrôle (ou bits de redondance). Les bits de contrôle permettent
d’insérer à l’information initiale une caractéristique qui sera vérifiée à la réception. Ceci est le principe de
fonctionnement des codes détecteurs aussi bien que des codes correcteurs.
Les deux types de codes détecteurs les plus répandus sont :
Code simple (de parité) :
o VRC (Vertical Redundancy Check).
o VRC + LRC (Longitudinal Redundancy Check).
Code polynomial CRC (Cyclic Redundancy Code).
Pour remédier à ce problème, une version plus développée a été proposée, à savoir la détection par parité
double.
Exemple : Soit à transmettre le mot HELLO (parité paire). En appliquant un code de détection par parité double
on aura :
87
La suite à transmettre est : 100100001000101110011001100110011001111110000100.
La parité VRC + LRC permet de :
o Détecter toutes les erreurs multiples sur 2 ou 3 bits.
o Corriger toutes les erreurs sur un seul bit (c’est un code correcteur simple).
Faiblesse. A partir de 4 bits erronés, le code peut échouer à détecter les erreurs. Exemple : considérons le mot
HELLO de l’exemple précédent, l’altération des quatre bits suivants (voir tableau ci-dessous) génère une erreur
non détectable par ce code.
1 1
0 0
L’émetteur et le récepteur utilisent un polynôme commun appelé polynôme générateur G(x) de degré r.
Le bloc de données à envoyer est transformé à l’émission en un mot de code polynomial, représenté
par un polynôme qui est un multiple du polynôme générateur G(x).
Le récepteur vérifie si le mot reçu est un mot du polynôme générateur (un multiple de G(x)) ou non.
Les opérations à effectuées sont les suivantes :
88
Il accepte la trame comme correcte si le reste est 0. Sinon, si le reste de la division n’est pas nul,
une erreur est détectée.
N.B. La division modulo 2 est basée sur la soustraction modulo 2. Pour la soustraction modulo 2, on fait un
OU EXCLUSIF. Exemple : 0011 – 0101 = 0110.
o A la réception :
La suite binaire reçue est : M’=1011001110010100. On divise la suite par G(x) :
89
N.B. En cas d’une transmission sans erreurs, le message original est obtenu par le récepteur en enlevant les r
bits situés à droite de la suite reçue.
La capacité de détection d’erreurs du CRC dépond largement du polynôme générateur utilisé. Les polynômes
générateurs les plus utilisés sont :
o CRC –12 : x12 + x11 + x3 + x2 + 1
o CRC –16 : x16 + x15 + x2 + 1
o CRC–CCITT: x16 + x12 + x5 + 1
o CRC-32 : x32 + x26 + x23 + x22 + x16 + x12 + x11 + x10 + x8 + x7 + x5 + x4 + x2 + x1 + 1
𝒎
𝝆=
(𝒎 + 𝒓)
Exemple: Sur un mot de données de 8 bits, si on ajoute 4 bits de contrôle, donc 𝜌 = 67%.
N.B. Ce rendement est calculé dans le cas d’un contrôle d’erreur par redondance.
Important. Toute donnée ajoutée aux données d’utilisateur pour assurer une fonctionnalité quelle qu’elle soit
(ex. les bits ajoutés pour la détection d’erreurs) est appelée donnée de contrôle, et elle ralenti la communication.
On peut la considérer comme le coût à payer pour réaliser la fonctionnalité désirée. Donc, plus il y a de données
de contrôle à ajouter plus l’impact (négatif) sur la communication est important et inversement. Ainsi, on
cherche toujours à assurer la fonctionnalité mais avec le moindre coût, tout en minimisant les données de
contrôle à ajouter. Notez que les données de contrôle sont les données ajoutées par chaque couche connues sous
le nom de PCI (ex. les @MAC au niveau liaison, les @IP au niveau réseau, etc.)
Une fonctionnalité peut être assurée par l’ajout de données ou par la mise en œuvre d’un traitement spécifique
(ex. la retransmission de données en cas d’erreur, etc.). De même, tout traitement supplémentaire réalisé pour
assurer une fonctionnalité ralenti la communication, et on cherche généralement le bon compromis qui garantit
que le service soit bien réalisé avec un coût minimal.
90
5 Stratégies de retransmission ou ARQ (Automatic Repeat reQuest)
La retransmission des trames erronées est la méthode principale pour la correction des trames en cas
d’erreurs de transmission. Elle est plus efficace que les codes correcteurs étant donné que :
o Les codes correcteurs (comme par exemple le code de Hamming) ajoutent beaucoup de données de
redondance ce qui influe négativement sur le rendement.
o La vitesse de transmission des médias de transport est très grande, et ainsi on préfère la retransmission
de la trame erronée et on perd en temps de propagation mieux que d’ajouter une information
redondante qui minimise le rendement du réseau.
5.1.1 Principe
o S’assurer qu’une trame a été bien reçue avant d’envoyer la suivante, c'est-à-dire l’émetteur envoie une
seule trame à la fois et attendre son acquittement.
91
Donc en résumé, on a quatre cas possibles :
o Cas 1 : La transmission est sans erreurs → Retour d’un acquittement positif (ACK).
o Cas 2 : La transmission est avec erreurs → Retour d’un acquittement négatif (NACK).
o Cas 3 : Une perte de la trame → Retransmission après l’expiration du time out T.
o Cas 4 : Une perte de l’acquittement :
Si ACK positif → Problème : Duplication de la trame au niveau du récepteur.
Nœud B Nœud A
Temporisateur
Trame 0
ACK
Trame 0 ou 1 ?
En appliquant la même idée sur les acquittements, chaque ACK peut contenir un numéro de séquence RN
(Reception Number) du prochain paquet attendu. Aussi, dans ce cas une numérotation de séquence sur 1 bit
est suffisante. Le NACK n’est donc plus nécessaire, puisque le récepteur peut redemander la transmission de
la trame précédente avec un ACK numéroté.
Avec la numérotation des trames et des ACK, les algorithmes de l’émetteur et du récepteur selon le protocole
Send & Wait sont les suivants :
92
Initialiser Initialiser
SN = 0 RN = 0
Envoyer
Non
acquittement CRC correct ?
Transmettre une
A(RN )
trame T (SN )
Oui
Timeout
Non
Attendre SN = RN ?
l’acquittement
A(RN ) pendant T Oui
Transmettre la
Non trame T à la
CRC correct ? couche
supérieure
Oui
Non
RN = SN + 1 ? RN ← RN + 1
Oui
Envoyer
SN ← SN + 1 acquittement
A(RN )
N.B: Le protocole Send & Wait est adapté à des liaisons Half duplex.
T1
Ta
Si (Ta + Tr > To) alors il y a interblocage. To
T1
ACK
Tr
T1
93
5.1.5 Performances du protocole Send & Wait
Efficacité du protocole (ρ) :
L’efficacité (le rendement ou le taux d’utilisation) du réseau est le rapport entre la valeur réelle
(effective) d’une grandeur (ex. débit, quantité de données, etc.) et sa valeur théorique. Si on utilise
comme grandeur la quantité de données, donc l’efficacité est le rapport entre la quantité de données
transmise réellement (c’est la taille d’une trame) sur la quantité de données qui peut être transmise dans
le temps écoulé entre l’émission de la trame et la réception de l’acquittement :
𝑸𝒅𝒂𝒕𝒂
𝝆=
𝑹𝑻𝑻 ∙ 𝑫
Où :
𝑄 : 𝑙𝑎 𝑡𝑎𝑖𝑙𝑙𝑒 𝑑𝑒 𝑙𝑎 𝑡𝑟𝑎𝑚𝑒. 𝑅𝑇𝑇: 𝑙𝑒 𝑡𝑒𝑚𝑝𝑠 𝑑′𝑎𝑙𝑙𝑒𝑟/𝑟𝑒𝑡𝑜𝑢𝑟 𝐷: 𝑙𝑒 𝑑é𝑏𝑖𝑡
𝑸𝒅𝒂𝒕𝒂 𝑸𝑨𝑪𝑲
𝑹𝑻𝑻 = + + 𝟐𝑻𝒑
𝑫 𝑫
Donc, l’efficacité est :
𝑸𝒅𝒂𝒕𝒂
𝝆=
𝑸𝒅𝒂𝒕𝒂 + 𝑸𝑨𝑪𝑲 + 𝟐𝑫𝑻𝒑
N.B. (𝑅𝑇𝑇 ∙ 𝐷) est appelé « produit largeur de bande – délai » noté BWD (BandWidth Delay product).
Selon le protocole « Send & Wait », l’émetteur (resp. récepteur) passe son temps à attendre l’acquittement du
récepteur (resp. La trame de données de l’émetteur). On peut procéder par anticipation, car l’attente de
l’acquittement n’empêche pas la transmission des trames suivantes. Donc, on continue à envoyer des trames
pendant qu’on attend l’acquittement de la première trame envoyée.
5.2.1 Principe
Le principe des techniques de retransmission continues (ARQ) est de transmettre plusieurs trames avant
d’attendre leurs acquittements. Il existe deux types de protocoles ARQ :
Go-back-n (Rejet systématique).
Rejet sélectif.
94
5.2.2 Protocole « Go-back-n »
C’est la méthode ARQ la plus utilisée au par la couche liaison et transport. Elle fonctionne ainsi :
Example: Go-back-5
A
B
Anticipation de n=5
SN=0
acquittements SN: Sequence Number
SN=1
SN=2 RN: Reception Number
RN=1
SN=3
RN=2
SN=4
RN=3
RN=4
RN=5
N.B. 𝑅𝑁 = 𝑥 signifie que l’émetteur acquitte les trames 𝑆𝑁 < 𝑥 et attend la trame 𝑆𝑁 = 𝑥.
95
L’ordonnancement des trames (et donc ré-ordonnancement ou destruction des trames n’arrivant pas
dans l’ordre).
Après l’acquittement d’une trame transmise, la fenêtre glisse à droite et autorise la transmission d’une nouvelle
trame d’où l’appellation de « fenêtre glissante ».
Exemple : soit la fenêtre coulissante de taille 9 (voir Figure 64). Le glissement est montré par des pointillés.
Fenêtre d’émission
... 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ...
A la réception de l’ACK de la trame n°6 (RN =7) la fenêtre glisse pour contenir la trame envoyée (n°15) :
Glissement
... 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Glissement
Les trames
Le fait d’identifier deux trames différentes par le même numéro peut provoquer une ambigüité au niveau du
récepteur. Ceci est le cas où le récepteur acquitte la réception positive de la première trame (dont le numéro de
séquence SN = 0). Ainsi il envoie un acquittement positif en demandant la transmission de la quatrième trame.
Si l’acquittement est perdu, l’émetteur va renvoyer la première trame (dont NS = 0) après expiration du time
96
out, qui sera considérée par le récepteur comme étant la quatrième trame car, elle aussi, son numéro de
séquence est NS = 0. Donc, pour éviter l’ambigüité, il faut que :
𝑴≥𝒏+𝟏
n : Taille de la fenêtre d’anticipation,
M : capacité de numérotation
𝑹𝑻𝑻 ∗ 𝑫
𝒏=
𝑸𝒅𝒂𝒕𝒂
Pour remédier à cela, on peut retransmettre seulement la trame erronée, et on parle dans ce cas de Rejet sélectif.
97
o La mémorisation de toutes les trames reçues hors séquencement, et par conséquent la nécessité
d’avoir un tampon mémoire (buffer) au niveau du récepteur (ce qui n’est pas le cas pour le rejet
systématique). Le tampon mémoire de réception a la même taille que la fenêtre d’émission.
o Le récepteur doit gérer le tampon de réception, et ainsi réordonner les trames retransmises hors
séquence (voir Figure 65).
A
B
SN=0
Anticipation de n=5 SN=1
SN=2
RN=1
SN=3
RN=2
SN=4 Erreur CRC
SN=5 SREJ=2
RN=3
SN=0
RN=4
SN=2
RN=5
RN=0
RN=1
RN=2
Fenêtre de B
0 1 3 4 5 0 2 1 2 3 …
La Figure 65 présente un scénario de fonctionnement selon le « Rejet Sélectif » dans le cas d’une fenêtre
coulissante de taille n = 5. On a la trame dont le numéro NS = 2 est erronée (détection par CRC), donc le
récepteur demande la retransmission individuelle de cette trame. Après la retransmission, la trame arrive hors
séquencement. Par conséquent, le récepteur doit réordonner toutes les trames reçues (c’est pour ça qu’il a
besoin lui aussi d’un tampon).
98
Exemple. S’il y a une retransmission de 2 trames (erronées) pour chaque transmission de 10 trames maximum,
on dit que la surcharge est de 2/10.
Ces deux quantités de données sont retransmise en cas d’erreur dans la transmission d’une quantité totale de
𝑅𝑇𝑇 ∗ 𝐷 et donc :
𝑄 𝑛∗𝑄
(𝑆𝑢𝑟𝑐ℎ𝑎𝑟𝑔𝑒) éé = ≪ (𝑆𝑢𝑟𝑐ℎ𝑎𝑟𝑔𝑒) =
𝑅𝑇𝑇 ∗ 𝐷 𝑅𝑇𝑇 ∗ 𝐷
Exemple applicatif. Soit une liaison d’un débit de 1 Mb/s, avec un temps d’aller/retour RTT = 10 ms. Si la
probabilité d’erreur paquet est 10-4. Comparer la surcharge du réseau dans les deux cas, d’un Go-back-n et
d’un rejet sélectif, pour une taille de trame égale à 103 bits.
Réponse.
P (paquet erroné) = 10-4 ⇨ Donc, un paquet erroné toute les 104 paquets, c.-à-d. toute les 104 * 103 = 107 bits.
On a : 𝑅𝑇𝑇 ∗ 𝐷 = 10 ∗ 10 ∗ 10 = 10 𝑏𝑖𝑡𝑠
Pour le protocole « Go-back-n » (rejet systématique) :
Surcharge = 104 / 107 ≈ 0.1 %
Pour le protocole « Rejet sélectif) :
Surcharge = 103 b/s / 107 ≈ 0.01%
On applique :
o Le rejet systématique : Si le temps de propagation est négligeable (ex. la fibre optique).
o Le rejet sélectif : Si le temps de propagation est grand (ex. liaison satellitaire).
99
5.2.5 Taux d’utilisation des Continus ARQ (Go-back-n et Rejet Sélectif)
Considérons seulement le cas sans erreurs, le taux d’utilisation est le rapport entre la quantité de données
transmise réellement sur la quantité de données qui peut être transmise dans le temps écoulé entre l’émission
de la trame et la réception de l’acquittement :
𝒏 ∙ 𝑸𝒅𝒂𝒕𝒂
𝝆=
𝑹𝑻𝑻 ∙ 𝑫
Où :
𝑄 : 𝑙𝑎 𝑡𝑎𝑖𝑙𝑙𝑒 𝑑𝑒 𝑙𝑎 𝑡𝑟𝑎𝑚𝑒. 𝑄 : 𝑙𝑎 𝑡𝑎𝑖𝑙𝑙𝑒 𝑑𝑒 𝑙𝑎 𝑡𝑟𝑎𝑚𝑒.
𝑅𝑇𝑇: 𝑙𝑒 𝑡𝑒𝑚𝑝𝑠 𝑑′𝑎𝑙𝑙𝑒𝑟/𝑟𝑒𝑡𝑜𝑢𝑟. 𝑅𝑇𝑇: 𝑙𝑒 𝑡𝑒𝑚𝑝𝑠 𝑑′𝑎𝑙𝑙𝑒𝑟/𝑟𝑒𝑡𝑜𝑢𝑟.
N.B. Les protocoles Go-back-n et Rejet sélectif peuvent atteindre un taux d’utilisation (sans erreurs) ρ = 1.
Jusqu’ici, nous avons vu les différentes fonctionnalités de la couche liaison (fragmentation de données en
trames, contrôle d’erreurs, retransmission des trames erronées ou perdues, etc.). En réalité, ces fonctionnalités
sont réalisées et assurées à travers des protocoles. Donc, ces fonctionnalités sont implémentées par un ensemble
de procédure formant un protocole de la couche liaison. Plusieurs protocoles existent, un exemple de ces
protocoles est HDLC. Afin de comprendre comment les fonctionnalités de la couche liaison sont assurées en
pratique, nous allons étudier le protocole HDLC.
Pourquoi le protocole HDLC ? Tout simplement car c’est le protocole de base (de référence) de la couche
liaison, et presque tous les protocoles de cette couche héritent et implémentent ces fonctionnalités.
Partie
100
1 Le protocole HDLC
Le protocole HDLC est un protocole de référence de niveau 2 (couche liaison) dont l’origine est le protocole
SDLC d’IBM. Plusieurs protocoles répandus de cette couche sont des dérivés de HDLC comme LAP-B, LAP-
D, PPP, etc. (Ils ont tous la même origine, à savoir SDLC). Donc, ces protocoles sont des variantes du protocole
HDLC, c'est-à-dire ils implémentent un sous-ensembles de ses fonctionnalités.
Le protocole HDLC assure un service de transfert fiable et efficace entre deux systèmes adjacents, et prend en
considération les différents modes de fonctionnement : synchrone / asynchrone, Half-duplex / Full-duplex,
liaison point à point / multipoints, etc.
101
Les Modes de fonctionnement
En générale, il existe deux principaux modes de fonctionnement ; le mode non équilibré et le mode équilibré :
o Le mode Non équilibré - LAP (Link Access Procedure)
Ce mode de fonctionnement se réalise sur une liaison point à point ou multipoints. Dans ce mode de
fonctionnement, il existe deux types de stations :
Station primaire (maître) : elle est unique, et c’est elle seule qui initialise l’échange de
données. Elle envoie des trames de commande.
Stations secondaire (esclave) : les stations secondaires envoient des trames de réponse, et
n’émettent que sur sollicitation de la station primaire.
Notez qu’une trame d’information contient des données, tandis qu’une trame de commande (appelée aussi
trame de contrôle) est une trame soit d’acquittement (ACK ou NACK), ou une trame de gestion de liaison (ex.
trame d’établissement de connexion, libération de connexion, etc.)
Considérons ces deux modes de fonctionnement, le protocole HDLC définit trois modes comme suit :
NRM − Normal Response Mode.
ARM − Asynchronous Response Mode.
ABM − Asynchronous Balanced Mode.
102
1.2.2 ARM - Mode asynchrone de réponse (Asynchronous Response Mode)
Ce mode fonctionne selon le principe Maître-esclave, donc il est similaire à NRM. Dans ce mode :
o Les stations secondaires peuvent transmettre librement, sans attendre d’invitation, cependant les
transmissions simultanées provoquent une collision.
o Ce mode est rarement utilisé en pratique.
Trame HDLC
o Taille de la trame :
Limitées (pas obligatoirement un multiple d’octet).
Peut-être fixe ou variable. Par exemple, la trame HDLC → Taille variable, par contre la trame
ATM (qui est une variante du HDLC) → Taille fixe.
o Fanion (8 bits) :
Son rôle est de délimiter la trame.
Une trame peut avoir un fanion de début et un fanion de fin, ou uniquement un fanion de début
(qui va jouer les deux rôles, à savoir un délimiteur de début et de fin, pour les trames
successives).
Pour éviter l’ambigüité (le cas d’avoir la suite du fanion dans les autres champs de la trame),
les bits de transparence (bits stuffing) sont utilisés.
Après au moins 7 bits consécutifs à 1 → Abandon de la transmission.
Une suite de plus de 15 bits consécutifs à 1 → indique une liaison hors service.
o Adresse (8 bits extensible à 16 bits) :
Il permet d’identifier le destinataire dans une liaison multipoint.
Il permet de distinguer « commandes » et « réponses » dans une liaison point-à-point.
o CRC (16 bits) :
103
Le polynôme générateur du code CRC utilisé est : G(x)=x16 + x12 + x5 + 1.
o Contrôle ou Commande (8 bits extensible à 16 bits) :
C’est le champ le plus important. Il définit le type de la trame, à savoir : trame d’information
(I), trame de supervision (S) ou trame non numérotée (U).
Ecriture :
I N(S), N(R), P/F
Avec :
N(S) : Numéro de séquence de la trame émise.
N(R) : Numéro de séquence de la trame attendue.
P (Poll) : invitation à émettre dans le cas d’une commande.
F(Final) : fin dans le cas d’une réponse.
Ecriture :
I N(R), P/F
Selon le sous-champ « SS », quatre types de trame S existent : RR, RNR, REJ, SREJ.
104
Elle demande la retransmission des trames à partir de N(R) (N°≥ N(R)).
SS = 11 → SREJ (Selective Reject) : c’est une trame d’acquittement négatif et de rejet sélectif.
Elle confirme la réception des trames d’information de N° < N(R).
Elle demande la retransmission de la trame de N° = N(R.)
Contexte de la liaison
Le contexte de la liaison est l’ensemble des valeurs décrivant la configuration de la liaison et son :
105
o La configuration de la liaison. Elle est décrite par l’ensemble de constantes (les mêmes valeurs dans
les deux extrémités). Exemple :
T1 : Délai de garde.
N1 : Taille maximale d’une trame.
W : Taille de la fenêtre d’anticipation.
T2 : Délai d’acquittement (time out).
N2 : Nombre maximum de rémissions d’une même trame.
o L’état de la liaison. Elle est décrite par l’ensemble de variables. Exemple :
V(S) : Numéro de la prochaine trame I à émettre.
V(R) : Numéro de la prochaine trame I à recevoir.
DN(R) : Numéro du dernier acquittement reçu.
Les valeurs initiales : V(S) = V(R) = DN(R) = 0.
Selon HDLC, une trame peut être rejetée dans l’un des cinq cas suivants :
o Détection d’erreurs par FCS.
o Taille de la trame < 4 Octet (sans fanion).
o V(R) (local) ≠ N(S) (de la trame).
o Format invalide de la trame (champs d’adresse non valide, champs contrôle non valide, etc.).
Selon HDLC, l’échange de données entre deux stations S1 et S2 passe par trois étapes :
o Etape 1. Etablissement de la liaison.
Emission des trames non numérotées SABM et UA.
Le bit P/F est positionné à 1 dans la trame de commande SABM invitant l’autre station (soit
S2) à répondre.
La station S2 émet un acquittement UA avec le bit F à 1.
o Etape 2. Transmission des données
Transmission avec gestion des numéros de séquence N(S) et N(R).
L’acquittement des trames I émises jusqu’au numéro N(S) = x est réalisé par l’envoie
d’une trame RR ou I (Biggybacking) avec N(R) = x+1 (c.-à-d. le numéro de la trame attendue
est x+1).
La trame REJ avec N(R) = x signifie le rejet des trames N(S) ≥ x.
o Etape 3. Libération de la liaison (déconnexion)
Emission des trames non numérotées DISC et UA pour terminer l’échange.
Exemple : le schéma ci-dessous décrit le scénario suivant d’échange des données entre deux station S1 et S2
selon HDLC :
106
a) La station S1 initialise l’échange (1) en demandant à S2 d’établir une connexion en mode équilibré
(ABM).
b) S1 envoie les trames d’information n° 0, 1 et 2, qui seront acquittées par la station S2 dans (3).
c) Ensuite S1 envoie les trames d’informations n°3 et 4 dans (4), où la trame n°3 sera rejetée par la
station S2 (5) car elle est erronée, et automatiquement les trames qui la suivent (rejet systématique).
d) La station S2 continue à envoyer sa première trame d’information n°0 (6).
e) La station S1 retransmet les trames n°3 et 4 et acquitte la trame n°0 de S2 par Biggybacking.
f) La station S2 acquitte la bonne réception des trames n°3 et 4 de S1.
g) En fin, la station S1 demande la terminaison de la liaison qui va être accordée par la station S2.
S1 S2
SABM, P=1
Etablissement de la liaison UA, F=1 1. Connexion en mode ABM
I, N(S)=1, N(R)= 0
2. Envoie des trames d’information
I, N(S)=2, N(R)= 0
n°0, 1 et 2 par A.
RR, N(R)=3
3. Acquittement des trames 0,
I, N(S) =3, N(R)= 0 1 et 2 par B.
107
2 Conclusion
La couche liaison s’assure de la bonne réception par le destinataire d’une donnée transmise dans le réseau
par un équipement source directement connecté. On entend par la bonne réception que le destinataire
recevra exactement la même donnée envoyée par la source, et pour cela il faut mettre en place des
mécanismes pour détecter tout changement dans la donnée au cours du transfert. Aussi des mécanismes
pour se mettre d’accord, l’émetteur et le récepteur, sur comment procéder pour envoyer cette donnée (une
par une ou en groupe, etc.) ainsi que comment s’assurer de sa bonne réception (utilisation des ACK). Tous
ces mécanismes sont assurés par la couche liaison à travers des protocoles qui fournissent toutes les
fonctionnalités nécessaires. Dans ce chapitre, nous avons vu en détail ces mécanismes et ainsi étudié un
protocole de référence qui les implémente, et dont presque tous les protocoles de cette couche s’inspirent
de lui, à savoir le protocole HDLC.
108