La couche Liaison de données de la norme 802.11 est composé de deux
sous-couches : la couche de contrôle de la liaison logique (Logical Link Control, notée LLC)
et la couche de contrôle d’accès au support (Media Access Control, ou MAC).
La couche MAC définit deux méthodes d'accès différentes :
- La méthode CSMA/CA utilisant la Distributed Coordination Function (DCF)
- La Point Coordination Function (PCF)
Dans un réseau local Ethernet classique, la méthode
d'accès utilisée par les machines est le CSMA/CD (Carrier Sense Multiple Access with Collision Detect),
pour lequel chaque machine est libre de communiquer à n'importe quel moment. Chaque machine envoyant un message
vérifie qu'aucun autre message n'a été envoyé en même temps par une autre machine. Si c'est le cas, les
deux machines patientent pendant un temps aléatoire avant de recommencer à émettre.
Dans un environnement sans fil ce procédé n'est pas possible dans la mesure
où deux stations communiquant avec un récepteur ne s'entendent pas forcément mutuellement
en raison de leur rayon de portée. Ainsi la norme 802.11 propose un protocole similaire appelé
CSMA/CA (Carrier Sense Multiple Access with Collision Avoidance).
Le protocole CSMA/CA utilise un mécanisme d'esquive de collision basé sur
un principe d'accusé de réception réciproques entre l'émetteur et le récepteur :
La station voulant émettre écoute le réseau. Si le réseau est encombré, la
transmission est différée. Dans le cas contraire, si le média est libre pendant un temps
donné (appelé DIFS pour Distributed Inter Frame Space), alors la station peut émettre.
La station transmet un message appelé Ready To Send (noté RTS
signifiant prêt à émettre) contenant des informations sur le volume des données qu'elle souhaite émettre et
sa vitesse de transmission. Le récepteur (généralement un point d'accès) répond
un Clear To Send (CTS, signifiant Le champ est libre pour émettre), puis la station
commence l'émission des données.
A réception de toutes les données émises par la station, le récepteur
envoie un accusé de réception (ACK). Toutes les stations avoisinantes patientent alors pendant un temps qu'elle considère être
celui nécessaire à la transmission du volume d'information à émettre à la vitesse annoncée.
La couche MAC du protocole 802.11 offre un mécanisme de contrôle d'erreur permettant
de vérifier l'intégrité des trames.
Il s'agit là d'une différence fondamentale avec le standard Ethernet. En
effet Ethernet ne propose aucun système de détection ou de correction d'erreurs, cette tâche
étant laissée au protocoles de transports de niveau supérieur (TCP).
Dans un réseau sans fil le taux d'erreur est plus élevé, c'est la raison
pour laquelle un contrôle d'erreur a été intégré au niveau de la couche liaison de données.
Le contrôle d'erreur est basé sur le polynôme de degré 32 suivant :
x32+x26+x23+x22+x16+x12+x10+x8+x7+x5+x4+x2+x+1
D'autre part le taux d'erreur de transmission sur les réseaux sans fil
augmente généralement avec des paquets de taille importante,
c'est la raison pour laquelle la norme 802.11 offre un mécanisme de fragmentation,
permettant de découper une trame en plusieurs morceaux (fragments).
Le standard 802.11 définit le format des trames échangées. Chaque trame est constituée
d'un en-tête (appelé MAC header, d'une longueur de 30 octets), d'un corps et d'un FCS (Frame Sequence Check)
permettant la correction d'erreur.
FC (2) | D/ID (2) | Adresse 1 (4 octets) |
Adresse 2 (4 octets) |
Adresse 3 (4 octets) | SC (2) |
Adresse 4 (4 octets) |
Corps de la trame (0 à 2312 octets)
|
Voici la description de ces champs :
- FC (Frame Control, en français contrôle de trame) : ce champ de deux octets
est constitué des informations suivantes :
Version de protocole (2 bits) | Type (2 bits) | Sous-Type (4 bits) |
To DS (1 bit) | From DS (1 bit) | More Frag (1 bit) | Retry (1 bit) |
Power Mgt (1 bit) | More Data (1 bit) | WEP (1 bit) | Order (1 bit) |
- Version de protocole : ce champs de 2 bits permettra de prendre en compte les évolutions de version du standard 802.11.
La valeur est égale à zéro pour la première version
- Type et Sous-type : ces champs, respectivement de 2 et 4 bits, définissent le type et le sous-type des trames
explicités dans le tableau ci-dessous. Le type gestion correspond aux demandes d'association ainsi qu'aux
messages d'annonce du point d'accès. Le type contrôle est utilisé pour l'accès au média
afin de demander des autorisations pour émettre. Enfin le type données concerne les envois de données
(la plus grande partie du traffic).
- To DS : ce bit vaut 1 lorsque la trame est destinée au système de distribution (DS), il vaut
zéro dans les autres cas. Toute trame envoyée par une station à destination d'un point d'accès
possède ainsi un champ To DS positionné à 1.
- From DS : ce bit vaut 1 lorsque la trame provient du système de distribution (DS), il vaut
zéro dans les autres cas. Ainsi, lorsque les deux champs To et From sont positionnés à
zéro il s'agit d'une communication directe entre deux stations (mode ad hoc).
- More Fragments (fragments supplémentaires) : permet d'indiquer (lorsqu'il vaut 1) qu'il reste des fragments à transmettre
- Retry : ce bit spécifie que le fragment en cours est une retransmission d'un fragment précédemment
envoyé (et sûrement perdu)
- Power Management (gestion d'énergie) : indique, lorsqu'il est à 1, que la station ayant envoyé ce fragment
entre en mode de gestion d'énergie
- More Data (gestion d'énergie) : ce bit, utilisé pour le mode de gestion d'énergie,
est utilisé par le point d'accès pour spécifier à une station que des trames supplémentaires sont
stockées en attente.
- WEP : ce bit indique que l'algorithme de chiffrement WEP a été utilisé pour chiffrer
le corps de la trame.
- Order (ordre) : indique que la trame a été envoyée en utilisant la classe de
service strictement ordonnée (Strictly-Ordered service class)
- Durée / ID : Ce champ indique la durée d'utilisation du canal de transmission.
- Champs adresses : une trame peut contenir jusqu'à 3 adresses en plus de l'adresse
de 48 bits
- Contrôle de séquence : ce champ permet de distinguer les divers fragments d'une même
trame. Il est composé de deux sous-champs permettant de réordonner les fragments :
- Le numéro de fragment
- Le numéro de séquence
- CRC : une somme de contrôle servant à vérifier l'intégrité
de la trame.
Le tableau ci-dessous récapitule les types et sous-type de trame encapsulés dans le
champ de contrôle de trame de l'en-tête MAC :
Type
|
Description du type
|
Sous-type
|
Description du sous-type
|
00
|
Management (gestion)
|
0000
|
Association request (requête d'association)
|
00
|
Management (gestion)
|
0001
|
Association response (réponse d'association)
|
00
|
Management (gestion)
|
0010
|
Reassociation request (requête ré-association)
|
00
|
Management (gestion)
|
0011
|
Reassociation response (réponse de ré-association)
|
00
|
Management (gestion)
|
0100
|
Probe request (requête d'enquête)
|
00
|
Management (gestion)
|
0101
|
Probe response (réponse d'enquête)
|
00
|
Management (gestion)
|
0110-0111
|
Reserved (réservé)
|
00
|
Management (gestion)
|
1000
|
Beacon (balise)
|
00
|
Management (gestion)
|
1001
|
Annoucement traffic indication message (ATIM)
|
00
|
Management (gestion)
|
1010
|
Disassociation (désassociation)
|
00
|
Management (gestion)
|
1011
|
Authentication (authentification)
|
00
|
Management (gestion)
|
1100
|
Deauthentication (désauthentification)
|
00
|
Management (gestion)
|
1101-1111
|
Reserved (réservé)
|
01
|
Control (contrôle)
|
0000-1001
|
Reserved (réservé)
|
01
|
Control (contrôle)
|
1010
|
Power Save (PS)-Poll (économie d'énergie)
|
01
|
Control (contrôle)
|
1011
|
Request To Send (RTS)
|
01
|
Control (contrôle)
|
1100
|
Clear To Send (CTS)
|
01
|
Control (contrôle)
|
1101
|
ACK
|
01
|
Control (contrôle)
|
1110
|
Contention Free (CF)-end
|
01
|
Control (contrôle)
|
1111
|
CF-end + CF-ACK
|
10
|
Data (données)
|
0000
|
Data (données)
|
10
|
Data (données)
|
0001
|
Data (données) + CF-Ack
|
10
|
Data (données)
|
0010
|
Data (données) + CF-Poll
|
10
|
Data (données)
|
0011
|
Data (données) + CF-Ack+CF-Poll
|
10
|
Data (données)
|
0100
|
Null function (no Data (données))
|
10
|
Data (données)
|
0101
|
CF-Ack
|
10
|
Data (données)
|
0110
|
CF-Poll
|
10
|
Data (données)
|
0111
|
CF-Ack + CF-Poll
|
10
|
Data (données)
|
1000-1111
|
Reserved (réservé)
|
11
|
Data (données)
|
0000-1111
|
Reserved (réservé)
|
|