# Les réseaux informatiques/La couche physique

Dans ce qui va suivre, nous allons parler de la première couche du modèle OSI : la couche physique. Pour rappel, cette couche physique s'occupe de la transmission physique des données entre deux équipements réseaux. Elle s'occupe de tout ce qui a trait au bas-niveau, au matériel : la transmission des bits, leur encodage, la synchronisation entre deux cartes réseau, etc. Elle définit les standards des câbles réseaux, des fils de cuivre, du WIFI, de la fibre optique, ou de tout autre support électronique de transmission.
Commençons ce chapitre par préciser une chose importante : les supports de transmission réseau ne transfèrent qu'un bit à la fois. En termes techniques, on dit que ce sont des liaisons séries. Il existe des liaisons qui échangent plusieurs bits en même temps, les liaisons parallèles, mais ils ne sont pas beaucoup utilisés dans le domaine du réseau. Ils sont plus utilisés à l'intérieur des circuits électroniques, dans les ordinateurs ou pour relier un PC à un périphérique. Pour résumer, les transmissions réseaux sont des flux de bits, transmis un par un.

## Les bus et les liaisons point à point

Pour commencer ce chapitre, nous allons aborder la différence entre une liaison point à point et un bus. Notons que cette distinction ne vaut que pour les réseaux qui relient entre eux leurs nœuds avec un ou plusieurs fils électriques. Les réseau sans-fils sont volontairement omis pour le moment.
    Petite précision de vocabulaire pour la suite : Le composant qui envoie une donnée est appelé un émetteur, alors que ceux reçoivent les données sont appelés récepteurs.

### Les liaisons point à point

Les liaisons point-à-point se contentent de connecter deux composants entre eux. Par exemple, le câble réseau qui relie votre ordinateur à votre box internet est une liaison point à point. Mais le terme est plus large que cela et regroupe tout ce qui connecte deux équipements informatiques/électroniques entre eux, et qui permet l'échange de données. Par exemple, le câble qui relie votre ordinateur à votre imprimante est lui aussi une liaison point à point, au même titre que les liaisons USB sur votre ordinateur.
Les liaisons point à point sont classés en trois types, suivant les récepteurs et les émetteurs.
| Type de bus | Description |
| Simplex | Les informations ne vont que dans un sens : un composant est l'émetteur et l'autre reste à tout jamais récepteur. |
| Half-duplex | Il est possible d'être émetteur ou récepteur, suivant la situation. Par contre, impossible d'être en même temps émetteur et récepteur. |
| Full-duplex | Il est possible d'être à la fois récepteur et émetteur. |
* Liaison simplex
* Liaison half-duplex
* Liaison full-duplex
Les bus full duplex sont créés en regroupant deux bus simplex ensemble : un pour l'émission et un pour la réception. Mais certains bus full-duplex, assez rares au demeurant, n'utilisent pas cette technique et se contentent d'un seul bus bidirectionnel.

### Les bus de communication

Sur un bus, on peut connecter un nombre assez important de composants, qui dépasse largement les deux nœuds d'une liaison point à point. Avec un bus, un émetteur va envoyer ses données à tous les autres récepteurs. Sur tous ces récepteurs, il se peut que seul l'un d'entre eux soit le destinataire du paquet : les autres vont alors ignorer le paquet, seul le destinataire traitant le paquet. Cependant, il se peut qu'il y ait plusieurs récepteurs comme destinataires : dans ce cas, les destinataires vont tous recevoir la donnée et la traiter. Ces bus permettent donc de faire des envois de données à plusieurs composants en une seule fois.

## La synchronisation des nœuds

Les différents nœuds d'un réseau local ne vont pas tous à la même vitesse et ils doivent se synchroniser pour échanger des données. Cette synchronisation détermine le temps qui est mis pour transmettre un bit. Rappelons que, quel que soit le support de transmission, le transfert ne peut s'effectuer qu'un bit à la fois. Il existe deux méthodes pour synchroniser la communication, qui permettent de distinguer les liaisons synchrones des liaisons asynchrones.

### Les liaisons/bus synchrones

Avec les liaisons synchrones, le support de transmission transmet un bit (ou un paquet de bits) toutes les x millisecondes ou microsecondes. Le temps de transmission d'un bit est appelé la période $T$. L'inverse de la période $1 \over T$ est appelé la fréquence. Plus celle-ci est élevée, plus le fil peut transmettre de bits en une seconde : la transmission sera donc plus rapide.
La liaison entre deux nœuds transmet, outre les bits de la donnée, une tension de même période/fréquence qui évolue de manière cyclique, appelée signal d'horloge. Ainsi, le récepteur sait quand un nouveau bit est transmis : il a juste à regarde le signal d'horloge pour savoir quand démarre un nouvel envoi. Sur la plupart des bus, un nouvel envoi est signalé par le passage de 0 à 1 du signal d'horloge, autrement dit un front montant. Plus rarement, certains bus considèrent au contraire qu'un nouvel envoi est signalé par un front descendant, à savoir le passage de 1 à 0 du signal d'horloge.
Le signal d’horloge est souvent transmis sur un fil à part, complémentaire du fil sur lequel sont transmises les données.
Il va de soit que plus la fréquence est élevée, plus la liaison sera rapide et pourra transmettre de bits par seconde.

### Les liaisons/bus asynchrones

Les liaisons asynchrones n'utilisent pas d'horloge pour synchroniser les nœuds du réseau. Pour se synchroniser, le premier nœud indique au second qu'il lui envoie une donnée. Le récepteur réceptionne la donnée et indique qu'il l'a prise en compte. Cette synchronisation se fait grâce à des fils spécialisés du bus/de la liaison, qui transmettent des bits particuliers.
Généralement, cette synchronisation utilise un système d'acquittement, qui utilise deux fils nommés ACK et REQ. Le fil REQ indique au récepteur que l'émetteur lui a envoyé une donnée, tandis que le fil ACK indique que le récepteur a fini son travail et accepte la donnée indiquée par REQ. Lorsqu'un nœud veut envoyer une information à un autre, celui-ci place le fil REQ à 1, afin de dire au récepteur : « attention, j'ai besoin que tu me fasses quelque chose ». Le récepteur va alors réagir et va faire ce qu'on lui a demandé. Une fois qu'il a terminé, il va alors positionner le fil ACK à 1 histoire de dire : j'ai terminé ! Plus rarement, un seul fil est utilisé à la fois pour la requête et l'acquittement : un 1 sur ce fil signifie qu'une requête est en attente (le second composant est occupé), tandis qu'un 0 indique que le second composant est libre. Ce fil est manipulé aussi bien par l'émetteur que par le récepteur. L'émetteur met ce fil à 1 pour envoyer une donnée, le récepteur le remet à 0 une fois qu'il est libre.

## Le codage des bits

Avec les supports actuels, l'information à transmettre va être codée sous la forme d'une tension électrique ou de tout autre mesure électrique. Le transfert de cette information prend donc la forme d'ondes électromagnétiques qui se propagent de l'émetteur vers le récepteur, soit dans l’atmosphère (technologies sans-fils) soit sur un support matériel (câbles réseaux). Cette onde va représenter un flux de bits, la conversion entre flux de bits et onde électromagnétique étant appelé un codage en ligne. Nous allons commencer par voir comment un flux de bits peut être représenté/envoyé sur le support de communication avec des tensions/ondes électromagnétiques.
Généralement, un bit est codé avec une tension électrique, plus rarement avec un courant. Les méthodes pour faire la correspondance tension <-> bit envoyé sont assez nombreuses. On peut les classer grosso-modo en deux classes : les codes numériques, aussi appelés codes en ligne, et les codes analogiques. Les codes numériques transmettent un signal discontinu sur le support de transmission. Dit autrement, ils se bornent à représenter un bit par un certain niveau de tension, comme un +5 Volts ou -5 Volts. Le flux de bits peut donc être transmis tel quel sur le support de transmission. Les codes numériques sont à opposer aux codes analogiques, qui transmettent un signal continu. Généralement, ce signal est une tension sinusoïdale, qui est déformée selon le bit à transmettre.

### Le codage en ligne

Il existe des méthodes relativement nombreuses pour coder un bit de données. Toutes codent celui-ci avec une tension, qui peut prendre un état haut (tension forte) ou un état bas (tension faible, le plus souvent proche de 0 volts).

#### Les codages non-différentiels

Pour commencer, nous allons voir les codages qui permettent de transférer un bit sur un seul fil (nous verrons que d'autres font autrement, mais laissons cela à plus tard). Il en existe de toutes sortes, qui se distinguent par des caractéristiques électriques qui sont à l’avantage ou au désavantage de l'un ou l'autre suivant la situation : meilleur spectre de bande passante, composante continue nulle/non-nulle, etc. Les plus courants sont les suivants :
* Le codage NRZ-L utilise l'état haut pour coder un 1 et l'état bas pour le zéro (ou l'inverse).
* Le codage RZ est similaire au codage NRZ, si ce n'est que la tension retourne systématiquement à l'état bas après la moitié d'un cycle d'horloge. Celui-ci permet une meilleure synchronisation avec le signal d'horloge, notamment dans les environnements bruités.
* Le codage NRZ-M fonctionne différemment : un état haut signifie que le bit envoyé est l'inverse du précédent, tandis que l'état bas indique que le bit envoyé est identique au précédent.
* Le codage NRZ-S est identique au codage NRZ-M si ce n'est que l'état haut et bas sont inversés.
* Avec le codage Manchester, aussi appelé codage biphasé, un 1 est codé par un front descendant, alors qu'un 0 est codé par un front montant (ou l'inverse, dans certaines variantes).
Faisons une petite remarque sur le codage de Manchester : il s'obtient en faisant un OU logique entre l'horloge et le flux de bits à envoyer (codé en NRZ-L). Les bits y sont donc codés par des fronts montants ou descendants, et l'absence de front est censé être une valeur invalide. Si je dis censé, c'est que de telles valeurs invalides peuvent avoir leur utilité, comme nous le verrons dans le chapitre sur la couche liaison. Elles peuvent en effet servir pour coder autre chose que des bits, comme des bits de synchronisation entre émetteur et récepteur, qui ne doivent pas être confondus avec des bits de données. Mais laissons cela à plus tard.

#### Les codages différentiels

Pour plus de fiabilité, il est possible d'utiliser deux fils pour envoyer un bit (sur un bus série). Ces deux fils ont un contenu qui est inversé électriquement : le premier utilise une tension positive pour l'état haut et le second une tension négative. Ce faisant, on utilise la différence de tension pour coder le bit, ce qui est plus fiable que d'utiliser des tensions deux fois plus élevées. Ce codage permet une meilleure résistance aux perturbations électromagnétiques, aux parasite et autres formes de bruits qui peuvent modifier les bits transmis. L'intérêt d'un tel montage est que les perturbations électromagnétiques vont modifier la tension dans les deux fils, la variation induite étant identique dans chaque fil. La différence de tension entre les deux fils ne sera donc pas influencée par la perturbation. Un tel codage est appelé un codage différentiel.
    Évidemment, chaque codage a son propre version différentielle, à savoir avec deux fils de transmission.
Ce type de codage est, par exemple, utilisé sur le protocole USB. Sur ce protocole, deux fils sont utilisés pour transmettre un bit, via codage différentiel. Dans chaque fil, le bit est codé par un codage NRZ-L.

### Le codage par modulation

Généralement, les signaux analogiques les plus simples sont formés de tensions sinusoïdales ou cosinusoïdales. IL est possible de transmettre un signal numérique à travers un signal analogique comme une sinusoïde. Celle-ci doit simplement subir quelques transformations via des techniques dites de modulation. Cela peut consister à modifier l'amplitude de la sinusoïde selon le bit à transmettre, ou à modifier sa fréquence ou sa phase. La sinusoïde non-déformée est appelée la porteuse. Cette porteuse étant un signal cyclique, elle se reproduit à l'identique toutes les x microsecondes, la durée d'un cycle étant appelée la période. Et qui dit période dit aussi fréquence, comme pour les signaux numériques. Il va de soit que plus la fréquence de cette porteuse est importante, plus celle-ci pourra transmettre un grand nombre de bits par secondes. La différence avec les codes numériques est qu'un cycle de porteuse peut parfaitement transmettre plusieurs bits à la fois. D'où des performances parfois plus importantes avec la modulation qu'avec les codes en ligne, dans une certaine mesure.

#### Techniques de modulation les plus simples

La méthode de modulation la plus simple est la modulation d'amplitude. Elle consiste à modifier l'amplitude de la sinusoïde en fonction du bit à transmettre. L'amplitude est alors maximale pour un 1 et minimale pour un 0. Il est aussi possible de transmettre un paquet de bits en une seule période : l'amplitude dépend alors de la valeur de ce paquet de bits. Par exemple, prenons un paquet de 2 bits. L'amplitude pourra prendre quatre valeurs, chacune correspondant à un paquet bien précis. Elle sera maximale pour le paquet 11, minimale pour le paquet 00 et intermédiaire pour les deux autres. On peut aussi augmenter le nombre de paliers : de 4 paliers pour deux bits, on peut passer à 8 paliers pour 3 bits, 16 pour 4 bits, et ainsi de suite. Mais cela demande des circuits capables de déceler des différences de tension assez fines, vu que la différence de tension entre deux paliers diminue avec le nombre de paliers, à tension maximale fixe.
La modulation de fréquence consiste à modifier la fréquence de la porteuse en fonction du bit à transmettre. La porteuse peut donc prendre plusieurs valeurs en fréquences, chaque valeur correspondant à un bit ou paquet de bit précis. Cette fois-ci, on trouve plusieurs paliers de fréquence, au lieu de paliers d'amplitudes. Cette forme de modulation est moins sensible aux interférences électromagnétiques, qui perturbent surtout l'amplitude du signal. Par contre, les circuits de détection de la fréquence, qui extraient le signal numérique transmis, sont plus complexes.

#### Utilisation dans les réseaux

Généralement, ces signaux analogiques sont bien adaptés aux supports de transmission sans fils, qui fonctionnement à base d'ondes électromagnétiques. Il est facile de créer des ondes électromagnétiques sinusoïdales, ce qui facilite fortement leur usage. Mais il faut signaler que ces câbles téléphoniques en cuivre peuvent transmettre aussi bien un signal numérique (un flux de bits) qu'un signal analogique (codé avec des signaux sinusoïdaux). Que ce soit pour transmettre le signal téléphonique ou le signal Internet, le câble de cuivre est utilisé pour transmettre des tensions sinusoïdales, dans un intervalle de fréquence fixe. Avant l'invention de l'ADSL, les fréquences utilisées étaient celles qui transmettent le signal téléphonique. On ne pouvait donc pas utiliser le téléphone en même temps qu'Internet. Les fréquences du signal téléphoniques étant assez faibles, la vitesse de transmission ne pouvait pas être très bonne. L'Internet de l’époque était donc limité à 56 Kbits par secondes. Les technologies DSL utilisent des fréquences différentes de celles utilisées pour transmettre le signal téléphonique. Les fréquences utilisées par l'ADSL sont illustrées dans le schéma à droite.
Les technologies (A)DSL utilisent une forme de codage par modulation assez impressionnante techniquement. L'ADSL utilise précisément plusieurs porteuses, dont la fréquence est multiple de 4,3125 kHz. L'ADSL utilise un intervalle de fréquences la bande de fréquences entre 0 Hz et 1,1 MHz, découpé en 255 intervalles plus petits. Chaque intervalle est associé à une porteuse, sauf le tout premier : on a donc 254 porteuses en tout. Certaines porteuses sont réservées à l'upload (transfert client -> internet) et d'autres au download (téléchargement d'internet vers le client). Le nombre de porteuses étant plus grand pour le téléchargement que pour l'upload, on en déduit que la vitesse d'upload est naturellement plus limitée que celle du download. Chaque porteuse peut convoyer environ 2000 bits par secondes. La méthode de modulation varie selon le modem ou la technologie ADSL utilisée, aussi nous ne pouvons pas détailler plus. Parler plus en détail de ces techniques de modulation demanderait cependant de faire un véritable cours de traitement du signal analogique, chose qui pourrait rebuter beaucoup de nos lecteurs. Aussi, nous n'irons pas plus loin dans les explications.