Ce cours est visible gratuitement en ligne.

Ce cours est en vidéo.

Ce cours existe en livre papier.

Ce cours existe en eBook.

Vous pouvez obtenir un certificat de réussite à l'issue de ce cours.

J'ai tout compris !
Apprenez le fonctionnement des réseaux TCP/IP

Apprenez le fonctionnement des réseaux TCP/IP

Mis à jour le jeudi 10 juillet 2014
  • 4 semaines
  • Facile

Faire communiquer les machines entre elles, la couche 2

La couche 1 n'a plus de secrets pour vous : vous savez câbler un réseau et maîtrisez le matériel associé.

Maintenant, il serait bien de pouvoir envoyer des informations d'une machine à une autre, de s'ouvrir au grand monde, de rêver d'un monde de communication... OK je m'emporte.
Commençons par comprendre la couche 2 et nous aurons déjà fait un grand pas ! :)

Vous allez voir que dans ce chapitre et le suivant nous allons aborder beaucoup de notions qui vous seront utiles en réseau. Il est très important de bien maîtriser ces notions, ne négligez donc pas ces chapitres et les suivants.

La couche 2, ses rôles

Comme nous l'avons vu dans un chapitre précédent, la couche 2 se nomme la couche liaison, ou plus précisément, liaison de données. Cependant, ce qu'il y a à retenir n'est pas dans le nom, mais bien dans le rôle.

Plus exactement, l'objectif est de permettre à des machines connectées ensemble de communiquer. Nous allons donc dans ce chapitre voir ce qu'il faut mettre en œuvre pour établir une communication entre deux ou plusieurs machines.

Ceci étant, nous allons un peu vite en besogne, car la couche 2 possède un autre rôle important qui est la détection des erreurs de transmission. J'ai bien dit détection, et non pas correction, la différence est importante, car la couche 2 verra les erreurs, et fermera les yeux sur celles-ci.

Si avec tout cela on n'arrive pas à parler, je n'ai plus qu'à changer de métier !

Un identifiant, l'adresse MAC

Pour parler ensemble quand nous sommes deux, ce n'est pas bien compliqué : je parle et l'autre écoute (du moins la plupart du temps...).
Dès que le nombre de participants augmente, ça devient plus compliqué, car l'on peut vouloir s'adresser à une personne en particulier pour lui communiquer une information secrète.

En réseau c'est pareil, on veut parfois parler à tout le monde mais aussi, la plupart du temps, parler à une machine en particulier. Et pour pouvoir parler à une machine en particulier, il va bien falloir être capable de l'identifier. Les chercheurs ont donc créé un identifiant particulier à la couche 2 qui permettrait de distinguer les machines entre elles, il s'agit de l'adresse MAC !

Waouh ! Une machine a donc une adresse MAC pour être identifiée ?

Pas exactement en fait. Vu que nous sommes en couche 2, et donc encore proches de la couche 1, l'adresse MAC est en liaison avec le matériel, et notamment la carte réseau.

Notation de l'adresse MAC

Un peu de calcul binaire

Attention, sortez vos cerveaux, il va falloir faire du calcul binaire. Et en réseau, on va en faire beaucoup, beaucoup. Donc autant s'y mettre dès maintenant !

Euh, c'est quoi le binaire ?

Le binaire est un système de numération en base 2. Globalement, cela veut dire qu'on ne peut compter qu'avec 1 et 0, contrairement au système de numération décimal que nous avons l'habitude d'utiliser dans lequel on se sert des chiffres de 0 à 9.

Si je compte en binaire, cela donne le résultat suivant :

0
1
10
11
100
101
110
111
1000

Ce qui est équivalent en décimal à :

0
1
2
3
4
5
6
7
8

Mais pourquoi du binaire ? On est punis ?

Parce que nous avons vu dans le chapitre précédent que les informations électriques passaient sous la forme de 0 V ou 5 V, soit deux états différents 0 ou 1.

Comment calculer en binaire ?

Il y a plusieurs façons de faire, je vais vous en présenter une qui est relativement facile à utiliser.

Vous avez l'habitude de travailler en décimal. Eh bien il faut savoir que tout nombre décimal peut s'écrire en binaire.
Plus exactement, tout nombre décimal peut s'écrire comme une somme de puissances de 2.

Prenons un exemple avec le nombre 45. Il peut s'écrire :
45 = 32 + 8 + 4 + 1

$$\[= (1\times 2^5)+(0\times 2^4)+(1\times 2^3)+(1\times 2^2)+(0\times 2^1)+(1\times 2^0)\]$$

On peut donc écrire 45 en binaire : 101101

OK mais comment je trouve ce résultat, moi ?

Tout nombre décimal peut s'écrire comme une somme de puissances de 2.
On peut donc faire un tableau de puissances de 2 qui nous aidera à faire nos calculs :

 

$$\(2^7\)$$

$$\(2^6\)$$ 

$$\(2^5\)$$ 

$$\(2^4\)$$ 

$$\(2^3\)$$ 

$$\(2^2\)$$ 

$$\(2^1\)$$ 

$$\(2^0\)$$ 

 

128

64

32

16

8

4

2

1

?

-

-

-

-

-

-

-

-

Pour notre nombre 45, cela donne :

 

$$\(2^7\)$$ 

$$\(2^6\)$$ 

$$\(2^5\)$$ 

$$\(2^4\)$$ 

$$\(2^3\)$$ 

$$\(2^2\)$$ 

$$\(2^1\)$$ 

$$\(2^0\)$$ 

 

128

64

32

16

8

4

2

1

45

0

0

1

0

1

1

0

1

Soit 101101.

Ce que nous allons faire pour un calcul, c'est de regarder si la puissance de 2 la plus élevée peut être contenue dans notre nombre, et recommencer avec la puissance de 2 suivante.

Pour notre exemple, est-ce que 128 peut être contenu dans 45 ? Non, je mets 0 dans la colonne 128.

 

$$\(2^7\)$$ 

$$\(2^6\)$$ 

$$\(2^5\)$$ 

$$\(2^4\)$$ 

$$\(2^3\)$$ 

$$\(2^2\)$$ 

$$\(2^1\)$$ 

$$\(2^0\)$$ 

 

128

64

32

16

8

4

2

1

45

0

 

 

 

 

 

 

 

On passe à la puissance de 2 suivante :
Est-ce que 64 peut être contenu dans 45 ? Non, je mets 0 dans la colonne 64.

 

$$\(2^7\)$$ 

$$\(2^6\)$$ 

$$\(2^5\)$$ 

$$\(2^4\)$$ 

$$\(2^3\)$$ 

$$\(2^2\)$$ 

$$\(2^1\)$$ 

$$\(2^0\)$$ 

 

128

64

32

16

8

4

2

1

45

0

0

 

 

 

 

 

 

Est-ce que 32 peut être contenu dans 45 ? Oui ! Je mets 1 dans la colonne 32 ET j'ôte 32 à 45.
45 - 32 = 13

 

$$\(2^7\)$$ 

$$\(2^6\)$$ 

$$\(2^5\)$$ 

$$\(2^4\)$$ 

$$\(2^3\)$$ 

$$\(2^2\)$$ 

$$\(2^1\)$$ 

$$\(2^0\)$$ 

 

128

64

32

16

8

4

2

1

45

0

0

1

 

 

 

 

 

Je continue maintenant avec ce nouveau chiffre. Est-ce que 16 peut être contenu dans 13 ?
Non, je mets 0 dans la colonne 16.

 

$$\(2^7\)$$ 

$$\(2^6\)$$ 

$$\(2^5\)$$ 

$$\(2^4\)$$ 

$$\(2^3\)$$ 

$$\(2^2\)$$ 

$$\(2^1\)$$ 

$$\(2^0\)$$ 

 

128

64

32

16

8

4

2

1

45

0

0

1

0

 

 

 

 

Est-ce que 8 peut être contenu dans 13 ? Oui ! Je mets 1 dans la colonne 8 ET j'ôte 8 à 13.
13 - 8 = 5

 

$$\(2^7\)$$ 

$$\(2^6\)$$ 

$$\(2^5\)$$ 

$$\(2^4\)$$ 

$$\(2^3\)$$ 

$$\(2^2\)$$ 

$$\(2^1\)$$ 

$$\(2^0\)$$ 

 

128

64

32

16

8

4

2

1

45

0

0

1

0

1

 

 

 

Est-ce que 4 peut être contenu dans 5 ? Oui ! Je mets 1 dans la colonne 4 ET j'ôte 4 à 5.
5 - 4 = 1

 

$$\(2^7\)$$ 

$$\(2^6\)$$ 

$$\(2^5\)$$ 

$$\(2^4\)$$ 

$$\(2^3\)$$ 

$$\(2^2\)$$ 

$$\(2^1\)$$ 

$$\(2^0\)$$ 

 

128

64

32

16

8

4

2

1

45

0

0

1

0

1

1

 

 

Est-ce que 2 peut être contenu dans 1 ? Non, je mets 0 dans la colonne 2.

 

$$\(2^7\)$$ 

$$\(2^6\)$$ 

$$\(2^5\)$$ 

$$\(2^4\)$$ 

$$\(2^3\)$$ 

$$\(2^2\)$$ 

$$\(2^1\)$$ 

$$\(2^0\)$$ 

 

128

64

32

16

8

4

2

1

45

0

0

1

0

1

1

0

 

Est-ce que 1 peut être contenu dans 1 ? Oui ! Je mets 1 dans la colonne 1 ET j'ôte 1 à 1.
1 - 1 = 0 donc j'ai fini !

 

$$\(2^7\)$$ 

$$\(2^6\)$$ 

$$\(2^5\)$$ 

$$\(2^4\)$$ 

$$\(2^3\)$$ 

$$\(2^2\)$$ 

$$\(2^1\)$$ 

$$\(2^0\)$$ 

 

128

64

32

16

8

4

2

1

45

0

0

1

0

1

1

0

1

Un autre exemple ? OK.

Essayez de calculer 109 en binaire.

Est-ce que 128 peut être contenu dans 109 ?
Non, je mets 0 dans la colonne 128.

 

$$\(2^7\)$$ 

$$\(2^6\)$$ 

$$\(2^5\)$$ 

$$\(2^4\)$$ 

$$\(2^3\)$$ 

$$\(2^2\)$$ 

$$\(2^1\)$$ 

$$\(2^0\)$$ 

 

128

64

32

16

8

4

2

1

109

0

 

 

 

 

 

 

 

On passe à la puissance de 2 suivante :
Est-ce que 64 peut être contenu dans 109 ? Oui, je mets 1 dans la colonne 64 ET j'ôte 64 à 109.
109 - 64 = 45

 

$$\(2^7\)$$ 

$$\(2^6\)$$ 

$$\(2^5\)$$ 

$$\(2^4\)$$ 

$$\(2^3\)$$ 

$$\(2^2\)$$ 

$$\(2^1\)$$ 

$$\(2^0\)$$ 

 

128

64

32

16

8

4

2

1

109

0

1

 

 

 

 

 

 

Est-ce que 32 peut être contenu dans 45 ? Oui ! Je mets 1 dans la colonne 32 ET j'ôte 32 à 45.
45 - 32 = 13

 

$$\(2^7\)$$ 

$$\(2^6\)$$ 

$$\(2^5\)$$ 

$$\(2^4\)$$ 

$$\(2^3\)$$ 

$$\(2^2\)$$ 

$$\(2^1\)$$ 

$$\(2^0\)$$ 

 

128

64

32

16

8

4

2

1

109

0

1

1

 

 

 

 

 

Je continue maintenant avec ce nouveau chiffre.
Est-ce que 16 peut être contenu dans 13 ? Non, je mets 0 dans la colonne 16.

 

$$\(2^7\)$$ 

$$\(2^6\)$$ 

$$\(2^5\)$$ 

$$\(2^4\)$$ 

$$\(2^3\)$$ 

$$\(2^2\)$$ 

$$\(2^1\)$$ 

$$\(2^0\)$$ 

 

128

64

32

16

8

4

2

1

109

0

1

1

0

 

 

 

 

Est-ce que 8 peut être contenu dans 13 ? Oui ! Je mets 1 dans la colonne 8 ET j'ôte 8 à 13.
13 - 8 = 5

 

$$\(2^7\)$$ 

$$\(2^6\)$$ 

$$\(2^5\)$$ 

$$\(2^4\)$$ 

$$\(2^3\)$$ 

$$\(2^2\)$$ 

$$\(2^1\)$$ 

$$\(2^0\)$$ 

 

128

64

32

16

8

4

2

1

109

0

1

1

0

1

 

 

 

Est-ce que 4 peut être contenu dans 5 ? Oui ! Je mets 1 dans la colonne 4 ET j'ôte 4 à 5.
5 - 4 = 1

 

$$\(2^7\)$$ 

$$\(2^6\)$$ 

$$\(2^5\)$$ 

$$\(2^4\)$$ 

$$\(2^3\)$$ 

$$\(2^2\)$$ 

$$\(2^1\)$$ 

$$\(2^0\)$$ 

 

128

64

32

16

8

4

2

1

109

0

1

1

0

1

1

 

 

Est-ce que 2 peut être contenu dans 1 ? Non, je mets 0 dans la colonne 2.

 

$$\(2^7\)$$ 

$$\(2^6\)$$ 

$$\(2^5\)$$ 

$$\(2^4\)$$ 

$$\(2^3\)$$ 

$$\(2^2\)$$ 

$$\(2^1\)$$ 

$$\(2^0\)$$ 

 

128

64

32

16

8

4

2

1

109

0

1

1

0

1

1

0

 

Est-ce que 1 peut être contenu dans 1 ? Oui ! Je mets 1 dans la colonne 1 ET j'ôte 1 à 1.
1 - 1 = 0 donc j'ai fini !

 

$$\(2^7\)$$ 

$$\(2^6\)$$ 

$$\(2^5\)$$ 

$$\(2^4\)$$ 

$$\(2^3\)$$ 

$$\(2^2\)$$ 

$$\(2^1\)$$ 

$$\(2^0\)$$ 

 

128

64

32

16

8

4

2

1

109

0

1

1

0

1

1

0

1

Nous avons donc notre résultat : 109 en décimal s'écrit 1101101 en binaire.

Pouvait-on aller plus vite pour ce calcul ?

Oui ! Car dès le premier calcul, on tombait sur un reste de 45. Or, nous savions écrire 45 en binaire et nous aurions pu indiquer directement les 6 derniers chiffres.
Pour travailler en binaire, il va nous falloir beaucoup d'astuce. N'hésitez pas à en user, mais attention, si vous ne vous sentez pas à l'aise, revenez à la méthode de base.

Bon super, je sais calculer en binaire, mais cela ne m'aide pas pour les adresses MAC pour l'instant...

Et l'adresse MAC là-dedans ?

Maintenant que nous sommes des pros du binaire, nous pouvons nous attaquer à l'adresse MAC. Sauf que l'adresse MAC s'écrit en hexadécimal...

Quoi ? :colere: On se moque de nous, on travaille le binaire, on se saigne aux quatre veines et on ne s'en sert même pas ?

Mais si ! Car quand on a compris le binaire, l'hexadécimal n'est pas bien compliqué. À l'inverse du binaire pour lequel nous n'avions que 0 et 1 comme chiffres à notre disposition, en hexadécimal nous en avons 16 !

Moi je connais les chiffres de 0 à 9, mais il existerait d'autres chiffres ?

Oui, en fait nous utilisons simplement les premières lettres de l'alphabet après 9. En hexadécimal nous avons donc :

Citation

0, 1, 2, 3, 4, 5, 6, 7, 8, 9... a, b, c, d, e et f !

Par exemple, 10 en hexadécimal s'écrit a.
11
s'écrit b, etc.

Je vais vous épargner les calculs, mais le principe est le même. Notre adresse MAC s'écrira donc en hexadécimal.
En voici une pour l'exemple : 00:23:5e:bf:45:6a

Codage de l'adresse MAC

Nous savons maintenant de quoi est composée l'adresse MAC, mais pour la voir plus en détail, nous allons déjà voir sa taille.

Un octet est une unité informatique indiquant une quantité de données.
Par exemple, quand vous achetez un disque dur, vous connaissez sa taille en nombre d'octets. Un disque 40 Go fera 40 gigaoctets, soit 40 000 000 000 octets !

Comme nous l'avons vu avant, une valeur binaire peut être soit 0, soit 1. Un bit peut donc coder deux valeurs, deux bits peuvent coder quatre valeurs, trois bits 8 valeurs, etc. Dans l'exemple de deux bits, chacun d'eux peut prendre les valeurs 0 ou 1 ; quand on les couple on peut donc prendre les valeurs : 00, 01, 10, 11
Ceci donne bien 4 valeurs différentes. Vous pouvez essayer avec 3 ou 4 bits de trouver toutes les combinaisons possibles.

En fait, on en déduit que x bits peuvent coder $$\(2^x\)$$  valeurs !
Ce qui nous donne pour un octet, qui représente 8 bits : 1 octet = $$\(2^8\)$$  = 256 valeurs !

Un octet est donc compris entre 0 et... 255 (puisqu'on démarre à 0)
Notre adresse MAC est codée sur 48 bits. Combien cela représente-t-il d'octets et de valeurs possibles (en puissances de 2) ?

1 octet = 8 bits, donc 48 bits = 48/8 octets = 6 octets.
L'adresse MAC est codée sur 6 octets.

Vu que l'adresse MAC est codée sur 48 bits, elle peut prendre $$\(2^{48}\)$$     valeurs. Soit... 281 474 976 710 656 valeurs ! Soit plus de 280 mille milliards d'adresses MAC possibles ! Ça fait beaucoup...

Trucs et astuces !

Si vous voulez avoir une idée de la valeur décimale d'une grande puissance de 2, c'est facile.
Prenons pour exemple $$\(2^{48}\)$$  :

$$\(2^{48} = 2^{10}\times 2^{10}\times 2^{10}\times 2^{10}\times 2^8\)$$

Or, $$\(2^{10}\)$$  vaut à peu près 1000 (1024 exactement).
Nous avons donc $$\(2^{48}\)$$  = 1000 * 1000 * 1000 * 1000 * 256.
Soit 256 mille milliards... facile, et plus besoin de calculette !

Nous avons donc beaucoup, beaucoup... beaucoup d'adresses MAC.

Ça tombe bien, car chaque adresse MAC va être unique au monde.

Comment c'est possible, ça ? On ne se trompe jamais ?

Normalement non. Un constructeur qui fabrique des cartes réseau va acheter des adresses MAC, ou plus exactement des morceaux d'adresses MAC.
Les trois premiers octets de l'adresse représentent le constructeur.

Ainsi, quand un constructeur veut produire les cartes, il achète trois octets qui lui permettront de donner des adresses à ses cartes. Par exemple, j'achète la suite de trois octets: 00:01:02. Toutes les cartes réseau que je vais produire vont commencer par ces trois octets, par exemple : 00:01:02:00:00:01 ; puis : 00:01:02:00:00:02 ; etc.

Si je choisis toujours les trois derniers octets différents pour les cartes que je produis, je suis sûr qu'aucune autre carte réseau n'aura la même adresse MAC, car je suis le seul à posséder les trois premiers octets 00:01:02 et j'ai fait attention à ce que les trois derniers ne soient pas identiques.

Récapitulons :

  • L'adresse MAC est l'adresse d'une carte réseau.

  • Elle est unique au monde pour chaque carte.

  • Elle est codée sur 6 octets (soit 48 bits).

Une adresse MAC spéciale

Parmi les adresses MAC, il y en a une particulière, c'est l'adresse dans laquelle tous les bits sont à 1, ce qui donne ff:ff:ff:ff:ff:ff.
Cette adresse est appelée l'adresse de broadcast.

L'adresse de broadcast est une adresse universelle qui identifie n'importe quelle carte réseau.
Elle me permet ainsi d'envoyer un message à toutes les cartes réseaux des machines présentes sur mon réseau, en une seule fois.

Et maintenant ?

Maintenant, nous savons relier les ordinateurs entre eux grâce à la couche 1 et les identifier grâce à l'adresse MAC de couche 2.
Il serait bien de définir un langage pour pouvoir les faire communiquer !

Un protocole, Ethernet

Le langage de couche 2, c'est quoi ?

Nous allons devoir définir un langage pour communiquer entre machines. Ce langage permettra de définir le format des messages que les ordinateurs vont s'échanger. Et le gagnant est... Ethernet ! En réseau, on traduit langage par protocole, pour faire plus pro.

À quoi sert un protocole ?

L'objectif des réseaux est de pouvoir s'échanger des informations. Étant donné que nous discutons entre des machines très différentes, qui elles-mêmes ont des systèmes d'exploitation très différents (Windows, Mac OS, Linux, etc.), nous devons créer un langage de communication commun pour se comprendre. C'est le protocole.

Nous avons vu que des 0 et des 1 allaient circuler sur nos câbles. Nous allons donc recevoir des choses du genre : 001101011110001100100011111000010111000110001...

Ce qui ne veut pas dire grand-chose... tant que nous ne nous entendons pas sur leur signification. Le protocole va ainsi définir quelles informations vont être envoyées, et surtout dans quel ordre.

Dans notre message, nous allons au moins devoir envoyer :

  • l'adresse de l'émetteur ;

  • l'adresse du destinataire ;

  • le message proprement dit.

Ainsi, nous pouvons très bien dire que les 48 premiers caractères que nous allons recevoir représentent l'adresse MAC de l'émetteur (puisque l'adresse MAC fait 48 bits) les 48 suivants l'adresse du récepteur, puis enfin le message.

Plus exactement, nous allons appeler ce message, une trame.

Format d'une trame Ethernet

Nous avons donné un format d'exemple dans le paragraphe précédent, mais nous allons voir le vrai format utilisé. Intéressons-nous d'abord aux adresses MAC. Laquelle placer en premier ? L'émetteur ou le récepteur ?

Pour répondre à cette question, nous allons nous mettre dans la peau d'une machine qui réceptionne un message.

Est-ce plus intéressant de connaître l'adresse de celui qui nous envoie le message, ou celle de celui à qui il est destiné ?

Eh bien les chercheurs ont estimé qu'il était plus intéressant de connaître l'adresse du destinataire, car ainsi nous pouvons immédiatement savoir si le message est pour nous ou pas. S'il est pour nous, nous en continuons la lecture. S'il n'est pas pour nous, ce n'est pas la peine de passer du temps à le lire... poubelle !

Nous allons donc positionner en premier l'adresse MAC du destinataire, suivie de l'adresse MAC de l'émetteur (aussi appelée adresse MAC source).

Adresse MAC DST (destinataire)

Adresse MAC SRC (source)

Suite du message ???

Trame Ethernet

Et ensuite ?

Ensuite, nous avons besoin d'une information un peu particulière. Pour la comprendre, vous devez vous rappeler du modèle OSI... Bon d'accord, je vous aide avec un schéma (voir la figure suivante) !

Le modèle OSI

Nous avons vu que, lors de l'envoi d'une information, nous parcourons les couches de haut en bas (voir la figure suivante).

Evoi dans le modèle OSI

Nous sommes donc passés par la couche 3 avant de passer par la couche 2. La couche 3 peut donc indiquer à la couche 2 quel est le protocole qui a été utilisé en couche 3.

Et c'est utile, car à l'arrivée, quand la couche 2 de la machine réceptrice reçoit les données, qu'elle voit que l'adresse MAC de destination est bien la sienne, elle doit envoyer les informations à la couche 3, et donc au bon protocole de couche 3.

Il est donc nécessaire d'indiquer dans la trame quel protocole de couche 3 a été utilisé quand le message a été envoyé et qu'il a traversé les couches du modèle OSI de haut en bas.

Notre trame devient donc :

Adresse MAC DST (destinataire)

Adresse MAC SRC (source)

Protocole de couche 3

Suite du message ???

Trame Ethernet
Nous avons presque tout !

Pourquoi presque ?!

Parce qu'il nous manque l'essentiel :

  • l'information à envoyer ;

  • nous n'avons toujours pas réglé le problème de la détection d'erreurs.

Pour l'information, nous allons la placer juste après le protocole de couche 3. De plus, nous allons enchaîner avec le code de correction des erreurs, ou CRC.

Qu'est-ce que le CRC ?

En gros cela veut dire que c'est un nombre qui sera différent pour chaque message.
Imaginons qu'une machine A envoie un message à une machine B.

  • Lors de l'envoi, A calcule le CRC (une valeur X) et le met à la fin de la trame.

  • B reçoit le message et fait le même calcul que A avec la trame reçue (une valeur Y).

  • B compare la valeur qu'elle a calculée (Y) avec la valeur que A avait calculée et mise à la fin de la trame (X).

Si elles sont égales, bingo ! La trame envoyée par A est bien identique à la trame reçue par B.

Si elles sont différentes, gloups ! Il y a eu une erreur lors de la transmission. La trame reçue par B n'est apparemment pas la même que celle envoyée par A. Il y a eu un problème quelque part, mais nous l'avons détecté !

La trame complète

Nous avons maintenant tous les éléments de la trame et avons donc la trame complète :

Adresse MAC DST (destinataire)

Adresse MAC SRC (source)

Protocole de couche 3

Données à envoyer

CRC

Trame Ethernet

Quelle taille pour la trame ?

Il y a des éléments qui ne varient jamais d'une trame à l'autre. L'ensemble de ces éléments est appelé en-tête ou, dans le cas de la couche 2, en-tête Ethernet. Ils sont indiqués ici en rouge.

Adresse MAC DST

Adresse MAC SRC

Protocole de couche 3

Données à envoyer

CRC

Trame Ethernet

Cet en-tête ne variant pas, nous pouvons définir sa taille :

  • les adresses MAC font chacune 6 octets ;

  • le protocole de couche 3 est codé sur 2 octets ;

  • le CRC est codé sur 4 octets.

Ce qui donne un total de 18 octets pour l'en-tête Ethernet.

Mais la trame a-t-elle besoin d'une taille minimale ? Et d'une taille maximale ?

La réponse est oui. La taille minimale permettra de garantir que, lors d'une collision, la machine ayant provoqué la collision détectera celle-ci (l'explication étant un peu complexe et peu utile ici, je vous en ferai grâce).
La taille minimale est de 64 octets, pour une trame Ethernet.

La raison de la taille maximale est tout autre.
S'il n'y avait pas de taille maximale, il serait possible qu'une machine envoie une gigantesque trame qui occuperait tout le réseau, empêchant les autres machines de communiquer. C'est pour éviter ce genre de problème qu'une taille maximale a été choisie.
La taille maximale est de 1518 octets, pour une trame Ethernet.

Nous savons donc maintenant tout de la trame Ethernet ! Récapitulons un peu, en observant un échange de données entre deux machines A et B.

  • Une application sur la machine A veut envoyer des données à une autre application sur une machine B.

  • Le message parcourt les couches du modèle OSI de haut en bas.

  • La couche 3 indique à la couche 2 quel protocole a été utilisé.

  • La couche 2 peut alors former la trame et l'envoyer sur le réseau.

  • La machine B reçoit la trame et regarde l'adresse MAC de destination.

  • C'est elle ! elle lit donc la suite de la trame.

  • Grâce à l'information sur le protocole de couche 3 utilisé, elle peut envoyer les données correctement à la couche 3.

  • Le message remonte les couches du modèle OSI et arrive à l'application sur la machine B.

Waouh ! Nous savons communiquer entre machines sur un réseau local !
Enfin presque, car nous n'avons pas encore vu comment connecter plusieurs machines entre elles, et cela va se faire grâce à un matériel particulier...

  • on sait maintenant que le rôle principal de la couche 2 est de connecter les machines sur un réseau local ;

  • elle permet aussi de détecter les erreurs ;

  • le protocole utilisé en couche 2 est le protocole Ethernet ;

  • les cartes réseau ont une adresse qui est l'adresse MAC ;

  • l'adresse MAC est codée sur 6 octets, soit 48 bits ;

  • chaque adresse MAC est unique au monde ;

  • il existe une adresse particulière, l'adresse de broadcast qui permet de parler à tout le monde, ff:ff:ff:ff:ff:ff ;

Vous connaissez les principes de la couche 2 et nous allons maintenant étudier en détail l'équippement qui permet de connecter les machines entre elles, le switch.

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