Réseaux

Schéma général de la communication

le schéma général de la voie de communication

Les ordinateurs ne traitent que des chaînes binaires. Pour être transmises, ces chaînes binaires doivent être transformées en signaux qui peuvent être envoyés sur le support réseau jusqu'à destination. Le support fait référence au canal physique sur lequel les signaux sont transmis (câble en cuivre, câble à fibres optiques, ondes électromagnétiques dans l'air).

Trois méthodes de transmission des signaux sont habituellement utilisées sur les réseaux :

  • Signaux électriques : la transmission est réalisée en représentant les données sous forme d'impulsions électriques sur un fil de cuivre.
  • Signaux optiques : la transmission est réalisée en convertissant les signaux électriques en impulsions lumineuses.
  • Signaux sans fil : la transmission s'effectue au moyen d'ondes infrarouges, micro-ondes ou radio à travers l'air.

Bande passante et débit

La bande passante est la capacité d'un support à transporter des données.
Le débit (on l'appelle abusivement bande passante) mesure la quantité d'informations pouvant circuler d'un emplacement à un autre pendant une période donnée.
Elle se mesure généralement par le nombre de bits qui (théoriquement) peuvent être envoyés via les supports en une seconde.

Unités de débit
Unité de débit Symbole Signification
Bit par seconde bit/s Unité de référence
Kilobit par seconde Kbit/s 1kbit/s = 1 000 bit/s = 103 bit/s
Megabit par seconde Megabit/s 1 Megabit/s = 1 000 000 bit/s = 106 bit/s
Gigabit par seconde Gigabit/s 1 Gigabit/s = 1 000 000 000 bit/s = 109 bit/s
Terabit par seconde Terabit/s 1 Terabit/s = 1 000 000 000 000 bit/s = 1012 bit/s

Une voie de communication n'est jamais parfaite : les données sont susceptibles d'être altérées, voire perdues !

Principe général de la transmission de données dans un réseau

1. Hiérarchie des protocoles

Un réseau est un ensemble de machines et de connexions qui permettent à chaque machine de communiquer avec toutes les autres, éventuellement en passant par des intermédiaires.
Les règles qui régissent les communications réseau, notamment le format, la taille, la synchronisation et l'encapsulation des messages, sont appelées protocoles.
La plupart des réseaux sont organisés en niveaux encore appelés couches chacune étant placée au-dessus de la précédente. On parle de modèle en couches ou de pile protocolaire ou de pile de protocoles.
La couche de niveau \(n\) d’une machine dialogue avec la couche \(n\) d’une autre machine. Ces machines sont dites homologues (on dit aussi pairs).
Un protocole de couche \(n\) est un ensemble de règles qui régissent la transmission d’informations entre couches homologues (couches pairs). Il existe de nombreux protocoles, chacun spécialisé dans une tâche bien précise.

2. Principe général de la communication en couches

Considérons un modèle à cinq couches.

le schéma du principe général de transmission de l'info

M représente un message (une information que l'utilisateur demande de transmettre).
Cette information est généralement découpées.
M1 et M2 sont des unités de données (SDU pour Service Data Unit) c'est-à-dire des morceaux de message à transmettre.
Nous avons choisi ici de découper le message M en deux sous-messages.
Les assemblages (Mi, Hi, Ti) constituent des unités de données protocolaires (PDU) c'est-à-dire des SDU combinées aux informations nécessaires au bon fonctionnement des protocoles. On dit que les données sont encapsulées.

Modèle de référence ISO/OSI

Le modèle de référence Osi (Open System Interconnexion pour Interconnexion des systèmes ouverts à la communication avec d'autres systèmes) sert de référence dans la conception et la spécification des réseaux de données.
Il est à sept couches.

1. Couche physique : La communication bit à bit

Le rôle de cette couche est de fournir un support de transmission pour la communication bit à bit d’une machine à une autre.
Les ordinateurs, plus précisément les cartes réseaux (on dit aussi interfaces réseaux), sont reliés soit physiquement (par un câble en cuivre ou un câble à fibres optiques) soit par ondes électromagnétiques.

2. Couche liaison de données

  • Elle a pour rôle de définir le format des messages échangés (taille, format, codage...) : les PDU qui circulent à ce niveau sont appelés des trames. Les PDU sont formés des bits utiles (SDU), mais aussi des informations additionnelles dont les protocoles de ce niveau ont besoin.
    On appelle souvent « enveloppe » ces informations additionnelles. On dit aussi que les données sont encapsulées dans le PDU.
  • Elle permet en général aussi de détecter et traiter les erreurs de transmission et peut éventuellement mettre en œuvre des mécanismes de correction d'erreurs.
  • Elle régule, par ailleurs, le flux de transmission de données pour éviter que des destinataires lents ne soient submergés par des expéditeurs rapides.
  • La couche liaison permet par ailleurs la construction de LAN.
    Un LAN désigne un réseau local (on dit aussi réseau Ethernet), ou un groupe de réseaux locaux interconnectés gérés par le même administrateur réseaux.
    Les couches liaison de données de machines homologues communiquent grâce aux protocoles de ce niveau : protocole Ethernet, protocole Wifi, protocole Bluetooth...
    Un commutateur Ethernet est un appareil utilisé au niveau de la couche 2 pour connecter les machines dans un LAN. Il dispose d'une table, appelée table d'adresses MAC.
    Elle contient une liste de tous les ports actifs et des adresses MAC hôtes correspondantes.

Chaque hôte (interface réseau, plus précisément) du réseau local (Ethernet ou Wifi) est identifié de manière unique par son adresse MAC (Medium Access Control).
Cette adresse MAC est codée sur 6 octets soit 48 bits et est généralement écrit en base 16.
Exemple : 10:93:e9:0a:42:ac.
Une adresse MAC unique est attribuée à chaque carte réseau au moment de sa fabrication.

3. Couche réseau

3.1. Rôles de la couche réseau

  • Cette couche a pour rôle d’interconnecter les réseaux.
  • La couche réseau s’occupe aussi du routage du flux de PDU.
    Au niveau de la couche 3, les PDU sont appelés paquets.
    Le routage (on dit aussi relayage ou commutation) est le processus de détermination du chemin le meilleur vers une destination donnée.
    Pour envoyer des informations à une machine dont l’adresse IP est X, un ordinateur commence par les envoyer au routeur auquel il est connecté. En fonction de l’adresse X, celui-ci l’envoie à un autre routeur, puis à un autre, etc. jusqu’à ce que les informations arrivent à destination.
    Le routeur est le matériel qui permet cet acheminement de paquets.
    Contrairement aux commutateurs, qui décident de transférer des données en fonction de l'adresse MAC de couche 2, les routeurs font ce choix en se basant sur l'adresse IP de couche 3.
    Pour fonctionner, les routeurs sont munis d’une table de routage qui leur permet d’avoir une vision globale de l’interconnexion (c'es-à-dire de tous les routeurs du réseau) : les tables de routage contiennent les adresses des réseaux, et le meilleur chemin pour les atteindre.
    L’Internet est un exemple d’interconnexion des réseaux.
  • La couche 3 permet aussi l’évitement des congestions.

3.2. Protocole IP (Internet Protocol)

C’est le protocole Ip qui fournit le service Internet.
Avec ce protocole, chaque carte réseau a une adresse qui permet,

  • d’une part, de reconnaître dans quel réseau elle se trouve,
  • et de l’identifier dans ce réseau, d’autre part.

Par ailleurs, une adresse IP est toujours accompagnée d’un masque de sous-réseau. C'est lui qui permet, dans une adresse ip, d'identifier la partie réseau et la partie hôte (carte réseau).
Dans la version 4 du protocole Ip (Ipv4), une adresse IP est codée sur 4 octets (soit 32 bits) plus simplement écrits en base 10 avec les nombres pointés allant de 0 à 255 (soit de 00000000 à 11111111 en base 2).

Routage CIDR (Classless InterDomain Routing pour routage interdomaine sans classe)

Comment déterminer

  • le nombre d'adresses possibles dans un réseau, le nombre de machines adressables ?
  • l'adresse IP d'un réseau ?
  • l'adresse de diffusion (broadcast) d'un réseau ?

Exemple :
Considérons une machine qui a pour adresse IP 192.168.5.17 dans un réseau dont le masque de sous-réseau est 255.255.255.0.

  • Détermination du nombre d'adresses possibles
    L'écriture binaire (CIDR) permet de voir facilement le nombre de bits à 1 dans le masque.
    Ainsi dans notre exemple,
    255.255.255.0 s'écrit 11111111.11111111.11111111.00000000 ;
    le masque de sous-réseau possède donc 24 bits à 1.
    Et l'adresse IP de la machine précédente s'écrit 192.168.5.17/24.
    Par conséquent, le masque de sous-réseau possède 32 - 24 = 8 bits à 0.
    Ce qui nous permet d'en déduire le nombre d'adresses possibles dans ce sous-réseau.
    On l'obtient grâce à la formule :
    2nombre de zéros dans le masque = 28 = 256
  • Détermination de l'adresse du réseau, l'adresse de diffusion, du nombre de machines adressables
    On superpose le masque de sous réseau et l'adresse ip de l'hôte considéré pour déterminer la partie fixe (le préfixe réseau) de l'adresse et la partie variable de l'adresse (l'identifiant de l'hôte dans le réseau).
      Masque de sous-réseau :  11111111 11111111 11111111 00000000
      Adresse de l'hôte :      11000000 10101000 00000101 00010001
    
    Le dernier bit à 1 du masque (en partant de la gauche) permet d'identifier le bit de fin de la partie fixe de l'adresse : cette partie fixe est aussi appelée préfixe de l'adresse réseau.
    Chacun des bits de la partie variable pouvant prendre alors soit la valeur 1 soit la valeur 0.
    L'adresse IP du réseau est la plus petite adresse possible commençant par le préfixe du réseau. Autrement dit, les bits de la partie variable sont tous égaux à 0.
    Dans notre exemple, le bit de fin du préfixe réseau est coloré.
    Ainsi, le préfixe du réseau est 11000000 10101000 00000101 soit 192.168.5 en décimal pointé.
    Et l'adresse du réseau est alors 11000000 10101000 00000101 00000000 soit 192.168.5.0
    Pour conclure, l'adresse ip du réseau est 192.168.5.0 avec comme masque 255.255.255.0 soit en CIDR 192.168.5.0/24.
    Enfin, dans ce réseau, toutes les machines-hôtes auront une adresse IP préfixée par 192.168.5 : ici, il n'y a que le 4e octet de l'adresse qui varie.
    L'adresse du réseau est réservée : elle ne peut être attribuée à un hôte.
    Plus simplement, l'adresse du sous-réseau est le résultat d'un ET logique (bit à bit) entre l'adresse de l'hôte et le masque comme le ferait un routeur lorsqu'il examine ses interfaces réseau.
      Masque de sous-réseau :  11111111 11111111 11111111 00000000
      Adresse de l'hôte :      11000000 10101000 00000101 00010001
      Adresse du réseau :      11000000 10101000 00000101 00000000
    
  • La plus grande adresse possible dans ce réseau : la partie variable à tous ses bits à 1. Dans notre exemple, elle correspond a 11111111 soit 255 en décimal. Ainsi, l'adresse de diffusion est 192.168.5.255. Elle est réservée (elle ne peut être attribuée à un hôte).
  • Donc, un hôte du réseau aura une adresse comprise entre 192.168.5.0 (exclu) et 192.168.5.255 (exclu).
    En d'autres termes, on peut adresser jusqu'à 28 - 2 = 254 machines.
    Exemples d'adresses d'hôte : 192.168.5.1 ; 192.168.5.200.

Faites-vous plaisir !

  1. Quelle est l'adresse du réseau dont le masque est à 24 bits à 1 et un des hôtes est identifié par 192.168.25.179 ?
  2. Quelle est son adresse de broadcast ?
  3. Préciser le nombre d'hôtes adressables.

Mêmes questions avec :

  • une machine dont l'adresse IP est 192.168.25.179/28 ;
  • une machine dont l'IP est 192.154.88.133/26 ;
  • une machine dont l'IP est 131.108.78.235/21 ;
  • avec un hôte dont l'IP est 192.168.20.115 dans un réseau dont le masque est 255.255.252.0 ;
  • avec un hôte dont l'IP est 172.38.45.16 dans un réseau dont le masque est 255.255.192.0 ;
  • avec un hôte dont l'IP est 172.107.231.53 dans un réseau dont le masque est 255.255.224.0 ;
  • avec un hôte dont l'IP est 172.16.2.65 dans un réseau dont le masque est 255.255.255.224 ;
  • avec un hôte dont l'IP est 172.22.100.5 dans un réseau dont le masque est 255.255.255.240.

Dans la version 4 du protocole IP, il n'est possible d’adresser qu'un peu plus de 4 milliards de machines ! Ce qui s'avère insuffisant au regard du nombre d'utilisateurs de l'Internet.
C'est ce qui explique la migration progressive vers IPV6. La version 6 du protocole IP possède un plus grand espace d'adressage : la longueur d'une adresse ipv6 est de 128 bits.
Aujourd'hui, en attendant la disparition de ipv4, dans bien de réseaux coexistent les deux piles protocolaires ipv4 et ipv6.
Des exemples d'adresse ipv6 :

  • exemples d'adresse réseau :
    • 2001:0DB8:ACAD::/48
    • 2a00:1450:4007::/48
    • 2001:861::/32
  • exemples d'adresse de sous-réseau :
    • 2001:0DB8:ACAD:1::/64
    • 2600:1404:a:395::/64
    • 2a00:1450:4007:81a::/64
  • exemples d'adresse d'hôte :
    • 2001:0db8:000a:0001:c012:9aff:fe9a:19ac
    • 2620:0:2d0:200::7
    • fe80:0000:0000:0000:c012:9aff:fe9a:19ac
    • 2001:861:49c3:c620:c23c:4ff:fe94:e5cc
    • 2600:1404:a:395::b33
    • 2607:f8b0:4000:80f::2004
    • 2a00:1450:4007:81a::2003

4. Couche transport

Son rôle est de permettre le transfert d'un ensemble de données (que l'on appelle conversation) de la couche transport de la machine émettrice à la couche transport de la machine réceptrice.
La plupart des réseaux limitent la quantité de données pouvant être transportée. Par conséquent, les données doivent être découpées en morceaux gérables. On parle alors de segmentation des données.
Selon le protocole de couche de transport utilisé, les morceaux de données de couche de transport sont appelés segments ou datagrammes
. La couche transport comprend les protocoles TCP et UDP.

  • TCP (Transport Control Protocol pour Protocole de contrôle de transmission) est un protocole fiable au sens où la livraison sans erreur des données est garantie. Pour cela, la transmission s'accompagne d'acquittements (d'accusés de réception).
    TCP découpe une conversation en petits morceaux appelés segments. Les segments, numérotés en séquence, sont ensuite passés au processus IP pour être assemblés en paquets.
    TCP est également un service avec connexion au sens où une session (un canal) de communication doit être préalablement établie entre les deux parties qui veulent échanger des informations. En d'autres mots, un chemin de communication doit être réservé avant. En conséquence, tous les paquets envoyés empruntent le même chemin jusqu'au destinataire.
    Cette procédure d'ouverture de session de communication est dite communication tripartite (three ways handshake.)
    Comme la couche transport doit pouvoir, en même temps, segmenter et gérer plusieurs applications distinctes (communications ayant des exigences différentes en matière de transport), la couche transport identifie une application à l'aide d'un identifiant appelé numéro de port.
    Le port 80 est généralement utilisé pour le Web.
  • UDP (User Datagram Protocol pour Protocole de Datagramme utilisateur) est un protocole non-fiable et sans connexion. En d'autres termes, ce protocole ne garantit pas la fiabilité du réseau.
    UDP découpe une conversation en petits morceaux appelés datagrammes (On les appelle aussi segments).
    Les datagrammes sont traités plus rapidement que les segments TCP et peuvent empruntés des chemins différents jusqu'au destinataire. Ils sont même susceptibles de se perdre car UDP est un service sans connxion.
    Il est utilisé par certaines applications de type client-serveur et par celles pour lesquelles le plus important est d’avoir les données à temps comme la transmission du son ou de l’image en direct.

5. Couche session

La couche session a pour but de fournir des moyens de synchronisation entre la source et la destination.

6. Couche présentation

Elle est nécessaire du fait de la variété des représentations de données dans les différents systèmes. En effet, elle sert à :

  • mettre en forme ou présenter les données provenant du périphérique source dans un format compatible pour la réception par le périphérique de destination.
  • compresser les données de sorte que celles-ci puissent être décompressées par le périphérique de destination.
  • chiffrer des données pour la transmission et déchiffrer des données à la réception.

7. Couche application

Les protocoles des couches physique, lien, réseau et transport fournissent le socle de l’Internet : ils permettent de transmettre de manière fiable et économique des fichiers de toutes tailles, d’une machine à n’importe quelle autre machine connectée à l’Internet.
La couche application contient tous les protocoles de haut niveau (proche de l'homme) : HTTP, DNS, FTP, SMTP (Simple Mail Transfer Protocol)...
Une application est identifiée par le n-uplet (adresse IP, nom du protocole, numéro du port).

Détection et reprise sur perte

La transmission des données dans un réseau n'est pas toujours parfaite : les données reçues par le destinataire peuvent être altérées (dit autrement, l'information reçue contient des bits erronés.).
La détection des pertes peut se faire soit chez l'émetteur soit chez le récepteur.
Pour cela, on associe à chaque unité de données émise, un minuteur : une sorte de réveil qui va se déclencher au bout d’un temps prédéfini.

L'acquittement se perd. Et l'émetteur réémet les données. Ce qui est encore problématique.

Afin de pallier ces problèmes, l’émetteur et le récepteur ajoutent aux données transmises, chacun de son côté, un compteur (afin que le récepteur puisse vérifier s’il a déjà reçu l’unité de données ; afin que l’émetteur sache quelle unité de données est acquittée.)

Une solution : le protocole du bit alterné

Dans le protocole du bit alterné, ces compteurs sont codés sur un bit.
Pour garder en mémoire ce qui a été émis ou reçu dans le passé, l’émetteur et le récepteur maintiennent chacun une variable, également codée sur un bit.

  • Au niveau de l’émetteur, lorsque celui-ci envoie une unité de données, le bit compteur prend la valeur de la variable d’émission.
  • Chez le récepteur, la variable de réception prend, elle, la valeur du dernier compteur reçu normalement, c'est-à-dire sans duplicata.
  • À la réception d’une unité de données, le récepteur envoie un acquittement portant la même valeur de compteur.
    Il vérifie ensuite si le compteur a une valeur différente de la variable de réception. Si c’est le cas, il ne s’agit pas d’une retransmission. Il délivre alors les données à l’utilisateur et donne à la variable de réception la valeur du compteur reçu. Dans le cas contraire, il ignore les données reçues.
  • Lorsque l’émetteur reçoit un acquittement, il vérifie que la valeur de compteur correspond à celle contenue dans la variable d’émission. Si c’est le cas, il incrémente la valeur de la variable d’émission et désactive le minuteur associé à la transmission précédente. Dans le cas contraire, il ignore l’acquittement. Enfin, si le minuteur se déclenche, l’émetteur retransmet la dernière unité de données.
Prenons maintenant un exemple pour comprendre comment ces différents éléments sont utilisés.
Imaginons que les compteurs soient initialisés à 0 et à 1 chez l’émetteur et le récepteur.
  • Lors de la réception de données à transmettre, l’émetteur enclenche le minuteur et ajoute aux données utiles le compteur qui prend la valeur de variable d’émission : 0.
  • À la réception de la PDU, le récepteur envoie un acquittement portant la même valeur de compteur.
    Le récepteur vérifie ensuite si le compteur a une valeur différente de la variable de réception. Comme 0 est différent de 1, il délivre les données à l’utilisateur et donne à la variable de réception la valeur du compteur, c'est-à-dire 0.
  • L’acquittement se perd ; ce qui provoque le déclenchement du minuteur chez l’émetteur.
    Celui-ci retransmet alors la dernière unité de données transmise et réenclenche le minuteur. Lorsque celle-ci est reçue, le récepteur envoie un acquittement comme précédemment.
    Il compare ensuite la valeur du compteur et celui de la variable de réception. Ces deux valeurs étant les mêmes (0 et 0), il ignore les données reçues et laisse la variable inchangée.
    Lorsque l’émetteur reçoit l’acquittement, il vérifie que la valeur de compteur correspond à celle contenue dans la variable d’émission. Comme c’est le cas, il incrémente la valeur de la variable d’émission, qui passe de 0 à 1, et désactive le minuteur associé à la transmission précédente.