Connexion élèves

Choisir le(s) module(s) à installer :

Communication entre deux machines

Qu'est-ce qu'un réseau ? A partir du moment où deux machines différentes peuvent communiquer entre elles, on a un réseau ! Un réseau est l'ensemble des moyens ( matériel et logiciel ) mis en œuvre pour permettre à plusieurs machines d'échanger entre elles des données.

Mais avant d'aborder les détails des réseaux, il est nécessaire de se poser la question de la manière dont deux machines peuvent physiquement communiquer entre elles afin d'échanger ces données.

Entre deux machines, les informations sont bien entendu échangées sous forme binaire; le lien "physique" entre les deux machines doit donc permettre de véhiculer le flux des bits constituants ces informations.

De manière générale, ce lien physique véhicule des signaux électriques dont les variations au cours du temps permettent le codage des bits de données; mais il peut aussi s'agir d'un signal lumineux dans le cas d'un lien en fibre optique ou encore d'ondes électromagnétiques dans le cas du wifi ou du Bluetooth.

Communication série/parallèle

Il existe fondamentalement deux façons de permettre à un ensemble de bits d'être échangés entre deux machines :

Communication parallèle Communication série
Principe
Communication parallèle
→ tous les bits sont envoyés en même temps sur plusieurs fils différents ( 8 dans le cas d'un octet )
Communication série
→ les bits sont envoyés les uns après les autres sur un seul fil
Avantages transmission très rapide de l'octet complet en une seule fois ne nécessite qu'un seul fil entre les deux machines
Inconvénients nécessite au moins 8 fils entre les deux machines ; très sensible aux parasites électromagnétiques nécessite un "timing" bien précis pour l'envoi des données entre les deux machines, qui doivent fonctionner à la même vitesse d'envoi/réception
Utilisations tend à disparaître; était très utilisé anciennement pour la liaison avec les imprimantes ou les scanners et jusqu'à une date assez récente, pour la connection des disques durs ( interface P-ATA ) connections réseau ( Ethernet par exemple ), USB, liaison avec les disques durs ( interface SATA ),...

La liaison parallèle tend à ne plus être utilisée, surtout dans le domaine des communications. C'est donc une liaison série qui supporte l'envoi et la réception des données d'une machine à une autre.

Mais comme indiqué ci-dessus, ce type de liaison entraîne des contraintes importantes sur les vitesses d'émission/réception des bits, mais également sur la manière dont ils sont codés sous forme de signaux électriques, ainsi que la nécessité de rajouter aux données des bits supplémentaires ( dit bits de contrôle ) uniquement pour assurer la bonne transmission des informations...

L'ensemble de ces contraintes constitue la "langue" utilisée pour échanger des données entre deux machines; on parle plutôt dans ce cas de protocole d'échange de données.
Inutile de préciser que deux machines doivent donc utiliser le même protocole afin de pouvoir se comprendre !!!

Un exemple de liaison série : le port série UART

Principe

Le port série UART ( = Universal Asynchronous Receiver Transmitter ) est une interface de communication un peu ancienne mais encore très utilisée notamment en informatique "embarquée", qui permet à un processeur d'échanger des données avec l'extérieur; cette technologie utilise des tensions comprises entre 0 et 5 V ( ou de plus en plus 3,3V ) pour coder les données :

  • une tension de 0 V correspond à un bit "0"
  • une tension de +5V ( ou +3,3V ) correspond à un bit "1"
Liaison série

Les variations très rapides du signal entre ces deux valeurs de tension codent ainsi les données binaires à transmettre. Les informations sont transmises sous forme de caractères qui peuvent être du texte ou des caractères de contrôle.

3 fils seulement sont nécessaires pour réaliser la connexion entre deux machines : un pour l'envoi des données, un pour la réception et un fil de masse. C'est l'ancètre de la liaison USB actuelle.

Protocole

Les "règles" suivies par l'émission et la réception de données sont paramètrables, mais doivent bien sûr être connues des deux machines qui communiquent afin qu'elles puissent se comprendre !

Ces règles constituent le protocole suivi pour l'échange de données; ce protocole est constituté de trois informations :

L'ensemble des bits transmis est appelé une trame.

Exemple de transmission

Voila l'enregistrement des variations de tension sur un port série ( = chronogramme ) lors de l'envoi du caractère "#" avec le protocole suivant :

Chronogrammes
  • vitesse : 9600 bps
  • 8 bits de données
  • 1 bit de STOP, pas de bit de parité

Et le décryptage de la trame correspondante :

Chronogramme décrypté

On constate qu'au repos, le port série est à l'état haut ( "1" ).
La transmission d'un bit correspond à une durée égale à 1/9600 = 1 x 10-4 s ( 0,1 ms ).
Un bit de START correspond à un "0" et un bit de STOP à un "1".
Les bits de données sont envoyés du LSB vers le MSB ( revoir ces notions ).

Les caractères sont codés selon le code ASCII que vous avez étudié dans ce chapitre.

Travail à faire

Déterminer à quels caractères correspondent les deux chronogrammes suivants; le protocole de transmission est le même que précédemment :

Chronogrammes à décrypter

Vous pouvez vérifier vos réponses avec le simulateur ci-dessous.

Lien vers la RÉPONSE

Simulateur de trame UART

DONNEES

PARITE

STOP

Contrôle des erreurs de transmission

A cause de perturbations électriques, il arrive qu'un caractère soit mal transmis : un ( ou plusieurs ) de ses bits peut être altéré, au point d'être carrément "inversé" : un "0" devient un "1" ou vice-versa !

Cependant, le récepteur ne se rend pas forcément compte de cette modification : "110110" ou "110111" peut signifier dans les deux cas une donnée tout à fait valide ! Comment se rendre compte alors qu'il y a eu altération du signal pendant la transmission ?

Différents mécanismes peuvent être mis en place pour cela, qui consistent à rajouter des informations supplémentaires aux données; un des moyens les plus simples est de rajouter un bit de contrôle de parité.

Le principe est simple :

Exemples :

A la réception, le récepteur compte alors le nombre de bits reçus à "1", et en déduit si il y a eu une erreur si la parité n'est pas la bonne; dans ce cas, il redemande la transmission du caractère.

Inconvénients : ce mécanisme permet de savoir si il y a eu une erreur pendant la transmission, mais pas au niveau de quel bit : la seule solution est donc de redemander la transmission complète du caractère.
De plus, il ne permet de détecter une erreur que sur un seul bit : si deux bits ont été altérés, ces erreurs "annulent leurs effets" et il est alors impossible de se rendre compte qu'il y a eu un problème.

Vous pouvez utiliser le simulateur ci-dessus pour expérimenter l'ajout d'un bit de parité pair ou impair.

Hacking d'une liaison série

L'étude des trames émises sur une liaison de transmission est un moyen de "pirater" cette ligne...

Mettez-vous dans la peau d'un hacker qui a réussit à pirater la liaison série d'un appareil, et qui a a obtenu le chronogramme ci-dessous :

Trame mystère

Décryptez alors le message qui a été transmis; pour cela, vous aurez à déterminer quel est le protocole qui a été utilisé !

Lien vers la RÉPONSE

Le protocoles utilisés sur les réseaux et sur internet sont beaucoup plus compliqués que ça ( par exemple, le protocole Ethernet ), mais il s'agit aussi de transmission série et ces notions de trame / bits de contrôle restent les mêmes ( les trames sont beaucoup plus longues ! )

Mais si on veut faire communiquer plus de deux machines entre elles ?

Quels problèmes se posent alors ? Comment y remédier ?