Ce cours est TREEEEEES long
Maintenant que nous connaissons les deux modèles nous permettant d’analyser ce qui se passe sur le réseau, nous allons étudier en détails chacune des couches afin de comprendre leurs rôles et fonctionnements.
Pour se faire, nous utiliserons en parallèle les deux modèles, nous commencerons avec la couche 1 physique, pour remonter jusqu’à la couche 7 Application.
Le rôle principal de cette couche est de fournir un support pour transmettre la communication. Comme nous l’avons vu dans le cours précédent. Tout réseau est basé sur un support de communication, il peut être filaire ou sans-fil.
Pour rappel, les principaux supports sont : les câbles pairs torsadés ou fils électriques (CPL), la fibre optique qui utilise la lumière et le Wi-Fi qui utilise des ondes électromagnétiques de type micro-ondes.
Dans notre couche 1 les signaux sont interprétés et sont convertis en bits et peuvent prendre deux valeurs 0 ou 1.
Mais pourquoi les valeurs 0 et des 1 et pourquoi seulement deux valeurs ?
Ce choix est lié à une caractéristique technique des machines et équipements qui compose le réseau.
Nous trouvons dans nos machines des composants électroniques, qui sont alimentés par un courant électrique dont la tension (qui s’exprime en volt : V ) varie entre 0V et 5V. Si je n’ai que ces deux valeurs il est facile de faire la distinction. On peut même le représenter graphiquement par une courbe (sinusoïde) comme le montre le schéma ci- contre.
0 étant égale à l’absence de courant électrique ce qui correspond à 0V et 1 correspond à la présence du courant électrique soit 5V.
Mais vous allez me dire, que je viens de dire que la tension varient entre 0V et 5V. Ce qui induit la question suivante : Comment interpréter les tensions 1, 2, 3 et 4 Volt ?
Et bien la réponse à cette question est très simple en réalité le 0 et le 1 ne correspondent pas uniquement a 0V et 5V.
Au premièr abord cela va vous paraitre bizarre, voir même imprécis de simplifier autant les choses et induire la question suivante : Pourquoi ne pas attribuer un système avec plus de valeur ?
Et bien essayons en donnant une valeur allant 0 et 5 pour les tensions 0V, 1V, 2V, 3V, 4V et 5V cela donnera la courbe ci-contre qui au premier abord parait beaucoup plus précise.
Mais alors du coup comme çà se passe si j’ai pas pile poil 3V mais 3,3. En effet les tensions électriques sont toujours des nombres ronds il nous faudrait donc encore plus de valeur pour tous les coder. Cela serait encore plus précis mais également plus compliqué à gérer et notamment dans un cas particulier.
A votre avis lequel ?
La réponse vient des potentiels perturbations électromagnétiques du courant.
En effet dans ce type d’événement physique la tension du courant peut se retrouver altérée, une tension de 3V pourrait baisser à 2V ou monter à 4V comme le montre la courbe ci-contre.
Mais du coup comment savoir si notre 4V n’est pas en fait un 3 Volt avec une augmentation de tension ou 5V avec une perte de tension. Et bien la réponse à la question est impossible à déterminer.
Et c’est ici qu’on voit l’intérêt du binaire avec seulement deux valeurs on diminue drastiquement les problèmes d’erreur en cas de perturbation du courant électrique.
Ces deux protocoles que nous avons vus lors de la présentation des couches du modèle OSI et TCP/IP ont pour fonction la détection des collisions dans les réseaux.
Ce protocole n’est quasiment plus utilisé, mais il est nécessaire d’en parler pour évoquer d’autres éléments importants du réseau que nous verrons par la suite. La disparition de ce protocole est lié à l’abandon du hub au profit du switch et à la disparition de la topologie en bus ainsi que d’autres éléments que nous verrons plus loin.
Comment fonctionne le CSMA/CD ?
Son fonctionnement est simple, tout machine connectée au réseau écoute ce dernier pour vérifier si une autre machine est en train de transmettre de la donnée. Si le réseau est libre elle envoie son message (à l’époque il était impossible que deux machines communiquent en même temps sur le même segment de réseau).
Si tout se passe bien le message est délivré au destinataire, toutefois il peut y avoir des collisions, même si la machine a au préalable écouté le réseau. Ce phénomène est dû à la latence dans le réseau, deux machines qui écoutent ne peuvent pas forcément se détecter dans le délai imparti et donc envoyer de la donnée en même temps ce qui induit une collision.
Dans le cas où il y a une collision un délai d’attente aléatoire sera calculé indépendamment par chaque machine avant de renvoyer la donnée.
Ce procédé sera répété en boucle pour toutes les communication du réseau. On peut le visualiser grâce à ce schéma.
Dans un environnement sans fil, le procédé du CSMA/CD n'est pas toujours utilisable dans la mesure où deux stations voulant communiquer avec un récepteur commun peuvent être tellement éloignées l’une de l’autre qu’elles ne peuvent se détecter et donc encore moins s'entendre. Cela est dû à la portée du signal (Wi-Fi). Ainsi la norme 802.11 (norme du Wi-Fi) propose le protocole CSMA/CA pour palier à ce problème.
Pour éviter cela, un équipement est considéré comme le maître des transmissions et autorise ou non une station à communiquer lorsque celle-ci le demande.
Pour cela, la station doit émettre une courte trame RTS (Request To Send) contenant quelques informations sur la communication (débit, longueur de la trame, etc.). Si la station maître accepte cette communication, elle renvoie alors une trame CTS (Clear To Send) et la station peut transmettre son message. En revanche, si la station ne reçoit pas de messages elle doit attendre à nouveau avant de redemander une autorisation d'émettre.
Cette couche peut être subdivisée en deux sous-couches la couche MAC et la couche LLC
Comment se passe la communication entre les machines ?
Pour répondre à cette question, nous allons faire un comparatif avec une simple discussion et nous verrons que selon les situations des problèmes vont se poser.
Premier cas : une discussion comportant deux participants
Pour pouvoir discuter ensemble lorsque nous sommes deux ce n’est pas très compliqué. L’un des interlocuteurs parle (c’est l'émetteur) l’autre écoute (c’est le récepteur). Et de manière cyclique, les rôles vont s’inverser entre le participant A et le participant B (du moins la plupart du temps).
Dans ce cas, comme nous avons que deux personnes, il est possible pour les interlocuteurs discutent sans même connaître leurs noms ou prénoms.
Second cas : une discussion comportant trois participants ou plus
Dans ce cas, si les participants ne s’identifient pas (nom ou prénom), il y a de fortes probabilités de rencontrer des problèmes de communication au cours de la discussion. Les problèmes de communication augmenteront de manière exponentielle avec le nombre de participants. Des questions vont rester sans réponse, ou ce ne sera pas la bonne personne qui y répondra.
C’est cette problématique que l’on retrouve dans les réseaux informatiques. Il est impératif pour garantir le bon fonctionnement du réseau de savoir qui a envoyé la donnée. Pour résoudre ce problème, la couche 2 dispose d’un identifiant : l’adresse MAC.
Mais avant d'étudier cette dernière je vais introduire une notion importante qui reviendra régulièrement quand on parle de réseau
Modes de communication
Adresse MAC
L'adresse MAC est un identifiant unique pour chaque carte réseau (switch, routeur, ordinateur, serveur, etc.). Elle se situe à la couche 2 du modèle OSI et est codée sur 48 bits (6 octets) en hexadécimal (base 16 : chiffres 0-9 et lettres A-F, majuscules ou minuscules).
Exemple d’adresse MAC 5E:FF:56:A2:AF:15
Les trois premiers octets dans notre exemple 5E:FF:56 sont réservés à l'identification du constructeur c’est ce qu’on appelle le OUI (Organizationally Unique Identifier). Et les trois derniers octets dans notre exemple A2:AF:15 sont réservés à l’identification de la machine.
Il existe deux notations alternatives MAC (tout dépend du constructeur).
Elle peut être notée de cette façon 5EFF-56A2-AF15 comme sur les équipements Cisco par exemple, ou de cette façon 5E-FF-56-A2-AF-15 comme sur Windows.
Comme dit plus haut l’adresse MAC est un identifiant unique. De combien en dispose-t-on?
La réponse exacte à cette question est 281 474 976 710 656 soit en valeur approximative 281 000 milliards d’adresses MAC possibles.
Pour terminer avec l’adresse MAC, notez qu’il en existe une qui n’est pas affectable, il s’agit de l’adresse FF:FF:FF:FF:FF:FF, il s’agit de l’adresse de broadcast* de niveau deux.
Broadcast : Un broadcast dans un réseau d’ordinateurs est un message transmis à tous les participants du réseau sans nécessiter de réponse. Un ordinateur envoie un paquet de données simultanément à tous les autres participants. Contrairement à l’unicast, l’émetteur n’a pas besoin d’indiquer les adresses des destinataires. L’avantage du broadcast est qu’il permet de diffuser largement les informations avec une seule transmission.
Binaire et Hexadécimal
Commençons par un petit rappel: le binaire et l’hexadécimal sont tous les deux des système numériques et plus précisément des bases arithmétiques. En arithmétique, une base désigne la valeur dont les puissances successives interviennent dans l'écriture des nombres, ces puissances définissant l'ordre de grandeur de chacune des positions occupées par les chiffres composant tout nombre.
Il y en a d’autres bien évidement dont certaines que l’on utilise tous les jours : la bases 10 ou base décimal que l’on utilise tous les jours pour compter ou la base 60 pour le calcul du temps.
L'hexadécimal.
L'hexadécimal est crucial en informatique, notamment pour les adresses MAC. En mathématiques, nous avons 10 chiffres (0-9), mais en hexadécimal, nous utilisons 16 caractères. Pour cela, nous ajoutons les lettres A à F (majuscule ou minuscule) aux chiffres 0 à 9, formant ainsi le tableau suivant :
Maintenant que nous avons compris comment est conçue la base 16, nous allons effectuer des conversions à savoir :
Conversion d’un nombre décimal en hexadécimal
Afin de convertir une valeur décimale en hexadécimale, il faut réaliser une division euclidienne par 16. Donc si nous voulons par exemple convertir la valeur décimale 79 en hexadécimal, nous allons faire les opérations suivantes
Étape 1 : Comme dit ci-dessus on effectue une division euclidienne sur 79 ce qui nous donne le résultat suivant :
Étape 2 : On continue la division en divisant cette fois-ci le quotient par 16 donc ce qui donne ceci :
Étape 3 : Nous pouvons maintenant trouver notre valeur hexadécimale. Pour se faire, nous allons prendre les valeurs des restes (15 / 4) en remontant du dernier vers le premier. Pour les restes qui sont égaux aux valeurs 10, 11, 12, 13, 14 et 15, nous les remplaçons par leurs valeurs hexadécimales.
Donc 4 = 4 et 15 = F
Ce qui nous donne pour notre exemple 79 en hexadécimal : 4F
Maintenant nous allons effectuer une conversion de la valeur hexadécimale 9B en décimal:
Étape 1 : Pour commencer nous allons simplement écrire l’égalité que nous devons résoudre, ce qui nous donne l’égalité ci-contre.
Étape 2 : Nous allons maintenant donner un rang (ou poids) à chaque quartet* de notre valeur hexadécimale, en commençant par le quartet le plus à droite qui pour rang 0. Le quartet suivant aura pour rang 1 et ainsi de suite. Ce qui dans notre exemple donne donc un rang de 0 pour B et un rang de 1 pour 9.
*En informatique un quarter (ou nibble en anglais, signifiant grignoter) désigne un agrégat de 4 bits, soit un demi-octet.
Étape 3 : Passons au calcul. Afin de pouvoir effectuer ce calcul nous allons multiplier chaque quarter de notre valeur décimale par 16n, [n] étant égale à la valeur du rang du quartet. (nous multiplions par 16 car nous sommes en bases 16). Ce qui nous donne donc le calcul suivant :
Étape 4 : Une fois le calcul effectué on trouve donc le résultat ci-dessous :
Conversion binaire vers hexadécimal Afin de convertir du binaire en hexadécimal, nous pourrions tout simplement faire une étape intermédiaire en passant par le décimal. Afin de gagner du temps, voici un tableau de correspondance binaire hexadécimal.
Hexadécimal | Binaire | Hexadécimal | Binaire |
---|---|---|---|
0 | 0000 | 8 | 1000 |
1 | 0001 | 9 | 1001 |
2 | 0010 | A | 1010 |
3 | 0011 | B | 1011 |
4 | 0100 | C | 1100 |
5 | 0101 | D | 1101 |
6 | 0110 | E | 1110 |
7 | 0111 | F | 1111 |
En s’appuyant sur notre tableau on peut donc écrire en binaire une adresse MAC:
5E:FF:56:A2:AF:15
01011110:11111111:01010110:10100010:10101111:00010101
Le protocole EthernetLe champ FCS (Frame Check Sequence) codé sur 4 octets qui permet de valider l'intégrité de la trame à 1 bit près. Il utilise un CRC (Cyclic Redundancy Check) qui englobe tous les champs de la trame. Ainsi, la station réceptrice peut décider si la trame est correcte et doit être transmise à la couche supérieure : LLC
Nous avons vu quels éléments étaient nécessaires aux machines pour communiquer ensemble. Mais nous n’avons pas vu comment celles-ci dialoguaient entre elles, ou plutôt comment et à l’aide de quoi ces dernières interprètent les bits circulant en couche 1.
Le protocole Ethernet va nous permettre deux choses :
Ce qui va permettre de structurer le message et comprendre le message, qu’on appelle trame. Cette trame peut prendre plusieurs formes que nous allons devoir décortiquer dans les prochaines pages.
À noter : en couche 2 il y a d’autres protocoles qu’Ethernet, mais il est de très loin le plus utilisé.
Ethernet II
Les trames Ethernet modernes ont d'abord été utilisées dans la structure Ethernet II avant d'être standardisées en 1983 par l'IEEE sous le protocole IEEE 802.3. Étudions cette structure et ses variations.
Voici les différents champs qui composent le cœur de la trame; l’ensemble des champs est égal à 1518 octets :