• 30 heures
  • Facile

Mis à jour le 24/04/2020

Qu'est-ce qui se trame chez Ethernet ?

Connectez-vous ou inscrivez-vous gratuitement pour bénéficier de toutes les fonctionnalités de ce cours !

Bienvenue dans la couche 2 du modèle OSI : liaison de données. Le rôle de cette couche est de permettre de transmettre des trames entre 2 hôtes directement reliés. Avec la couche 3, on communique d'hôte à hôte sans se soucier de ce qu'il y a physiquement entre les deux. Mais suivant le matériel à disposition, on ne va pas réaliser les transmissions de la même façon. La couche 2 permet justement d'encapsuler la couche 3 dans un protocole adapté à la liaison utilisée.

Un type de réseau fréquemment utilisé est Ethernet. Il se peut que vous utilisiez un réseau Ethernet en ce moment même. C'est pourquoi nous allons étudier le protocole Ethernet dans ce chapitre.

Structure d'une trame

Lorsque votre carte réseau envoie une trame Ethernet, elle n'envoie pas tout de suite le contenu de la trame ! Elle se synchronise avec le récepteur en premier lieu. Pour cela, elle envoie une suite de zéros et de uns (7 octets valant 10101010). Ensuite, elle indique qu'elle va commencer à envoyer une trame en envoyant un octet valant 10101011. Enfin, elle commence à envoyer le contenu de la trame ! Tout ce qui se passe avant est appellé préambule et n'est pas visible lors d'une analyse de trames avec un logiciel comme Wireshark.

On commence par les adresses

La trame commence simplement : on a en premier lieu l'adresse MAC de destination sur 6 octets, puis l'adresse MAC source également sur 6 octets. Difficile de faire plus simple ! Mais ne vous réjouissez pas trop vite, ça se complique tout de suite après ! :-°

Ethertype ou longueur de données ou tag ?

Le champ suivant ne fait que 2 octets, et pourtant ! En fonction de sa valeur, il détermine quel protocole on est en train d'utiliser.

Comment ? Je croyais qu'on ne parlait que du protocole Ethernet, là ! :o

En réalité, sur un réseau Ethernet, 2 protocoles sont utilisés : Ethernet et IEEE 802.3. La différence entre les deux est faible, mais il convient de la connaitre !

Ethernet ou 802.3 ?

Avant d'aborder ce qui différencie ces protocoles, un avertissement s'impose.
IEEE 802.3 désigne 2 choses : la norme Ethernet et un protocole. Ce protocole n'est pas le protocole Ethernet ! Vous suivez ? :-°

Revenons maintenant à la structure des protocoles. Après les adresses MAC, on a un champ de 2 octets. Si sa valeur est strictement supérieure à 1500, c'est le protocole Ethernet 2. Sinon, c'est le protocole 802.3.

Ethernet 2 ? Donc il y a aussi Ethernet 1 ?

Tout à fait, mais il n'est plus utilisé. Dans ce chapitre, quand on parle du protocole Ethernet, on parle toujours d'Ethernet 2.

Ethernet

Ça va aller vite : le champ de 2 octets est Ethertype. Il définit quel protocole de niveau supérieur va suivre, pour que le récepteur sache à quoi s'attendre. Par exemple, si c'est IPv4, ce champ vaudra 0x0800 (la valeur 0800 en hexadécimal). Si c'est ARP, il vaudra 0x0806. Attention, il y a un cas particulier : 0x8100. Cette valeur signifie qu'on a affaire à des VLAN, nous verrons cela dans la prochaine sous-partie.

Après l'Ethertype, on a tout de suite la charge utile (payload), c'est à dire le contenu du protocole suivant (un paquet IP, une requête ARP, etc.). Ensuite, si la trame fait moins de 64 octets, on la remplit avec des zéros. En effet, une trame Ethernet doit avoir une taille comprise entre 64 et 1500 octets. Si la charge utile est trop grosse, le protocole de niveau supérieur doit s'arranger pour faire passer la charge utile en plusieurs fois. Enfin, on a une somme de contrôle (checksum) sur 4 octets pour s'assurer de l'intégrité de la trame.

802.3

Si vous avez compris comment fonctionne Ethernet, vous avez aussi compris comment fonctionne 802.3 : c'est presque pareil ! La seule différence, c'est qu'au lieu d'indiquer le protocole de niveau supérieur, le champ de 2 octets après les adresses indique la longueur de la trame. Ensuite, 3 ou 8 octets sont utilisés la sous-couche de contrôle de la liaison logique (LLC) pour contrôler d'éventuelles erreurs, mais ce n'est pas l'objet de ce chapitre.
Pour le reste, c'est comme pour Ethernet : les données, l'éventuel remplissage et le FCS.

Image utilisateur

Image résumant les différences entre les protocoles Ethernet et 802.3.

Voilà pour ces protocoles ! Mais nous ne pouvons pas nous quitter comme cela. On a mentionné tout à l'heure les VLAN. Il faut donc voir ce que c'est !

Et VLAN !

Pour définir ce qu'est un réseau local virtuel, ou VLAN, faisons un petit retour sur le matériel. En effet, cette notion va de paire avec les switchs.
Qu'est-ce qu'un switch ? C'est un appareil de niveau 2 qui permet de relier des machines entre elles. Cela signifie qu'il va travailler avec des protocoles de niveau 2, le plus souvent avec Ethernet.

Cela ne nous dit pas ce qu'est un VLAN !

Un VLAN, c'est un réseau virtuel qui permet de séparer des machines faisant partie d'un réseau réel les unes des autres. Par exemple, si on a 4 machines branchées sur un switch, on peut les enfermer dans des réseaux virtuels pour que 2 d'entre elles ne puissent pas communiquer avec les 2 autres.
L'exemple qui suit a été réalisé sous le logiciel de simulation de réseau Cisco Packet Tracer.

Image utilisateur

PC4 et PC1 ont été placés arbitrairement dans le VLAN numéro 1002, PC2 et PC3 dans le VLAN 1003.
Chaque PC a une adresse IP du type 192.168.0.x avec x le numéro du PC (1, 2, 3 ou 4). PC4 tente de joindre PC1 avec un ping :

PC4>ping 192.168.0.1

Pinging 192.168.0.1 with 32 bytes of data:

Reply from 192.168.0.1: bytes=32 time=6ms TTL=128

Aucun problème. Maintenant, PC4 tenter de "pinguer" PC2 :

PC4>ping 192.168.0.2

Pinging 192.168.0.2 with 32 bytes of data:

Request timed out.

La requête n'aboutit pas, car ces 2 machines ne sont pas dans le même VLAN.

Que s'est-il passé ?

Pour répondre à cette question, penchons-nous sur le standard IEEE 802.1Q, qui définit comment sont gérés les VLAN dans une trame Ethernet.

Structure d'une trame taguée

Une trame Ethernet taguée, c'est-à-dire qui a un ethertype de 0x8100, ressemble à ceci :

8 o

6 o

6 o

2 o

2 o

2 o

taille variable

4 o

Préambule

Adresse MAC de destination

Adresse MAC source

Tag 0x8100

TCI

Vrai ethertype

Charge utile (données)

FCS

On remarque une nouveauté : le TCI. Ce champ se décompose en plusieurs sous-champs :

3 bits

1 bit

12 bits

Priorité

CFI

Identifiant du VLAN

Un champ de priorité, sur 3 bits, permet de définir 8 niveaux de priorité, ce qui peut être utile si l'on souhaite prioriser certains VLAN, par exemple. Le CFI est peu intéressant : ce bit sert juste à préciser si le format d'adresses est standard (la valeur sera différente suivant que l'on est en token ring ou en Ethernet). Enfin, le VLAN ID correspond au numéro de VLAN auquel est rattachée la trame. Certains numéros ont une signification particulière, notamment le 1 qui est le VLAN par défaut.

On peut faire des VLAN de plusieurs manières : par port (niveau 1), par adresses MAC (niveau 2) ou par adresses IP (niveau 3). Dans ce dernier cas, on doit recourir à un switch perfectionné.
Pour faire des VLAN de niveau 1, c'est simple : on dit au switch "tel port appartient à tel VLAN". C'est le cas de figure auquel nous avons eu recours pour l'exemple. Nous avons dit que les ports 1 et 4 appartennaient au VLAN 1002 et les ports 2 et 3 au VLAN 1003. Nous aurions aussi pu dire "la machine ayant telle adresse MAC (ou IP) appartient à tel VLAN".

Revenons à l'exemple et tentons de comprendre ce qu'il s'est passé pour le premier ping, celui qui a fonctionné. La trame d'origine, qui est partie de PC4, n'était pas taguée. En arrivant sur le port 4 du switch, elle a été taguée "VLAN 1002". Le switch a regardé l'adresse MAC de destination et a remarqué qu'elle correspondait à la machine sur le port 1, qui appartient au VLAN 1002. Il a donc commuté la trame sur le port 1.

Par contre, quand PC4 a voulu joindre PC2, le switch a remarqué que l'adresse MAC de destination correspondait à la machine sur le port 2, qui n'appartient pas au VLAN 1002. La trame est directement partie à la poubelle (enfin, elle n'a pas été commutée, quoi :-° ).

Comment le switch sait que telle adresse MAC va correspondre à tel port ?

Quand une machine envoie une trame, elle précise toujours son adresse source. Le switch va la lire et l'associer au port d'où elle provient. Cette association est enregistrée et cela se répète à chaque fois qu'une nouvelle adresse est découverte.

Si vous possédez le logiciel Packet Tracer, testez vous aussi les VLAN ! Pas besoin de connaitre les commandes des switchs : on peut le faire avec une interface graphique intuitive. Bien entendu, si vous voulez contrôler des switchs comme un grand en ligne de commande, rien ne vous empêche de chercher la documentation de l'appareil que vous utilisez.

Vous savez maintenant toutes les cachoteries qui se trament au cœur de vos câbles Ethernet ! Mais il existe d'autres protocoles de niveau 2, comme le Wi-Fi, ou encore d'autres bien moins connus mais que vous utilisez pourtant tous les jours. C'est l'objet du prochain chapitre !

Exemple de certificat de réussite
Exemple de certificat de réussite