mkl a exprimé un souhait d'une explication sur le fonctionnement de l'Ethernet;
Quel câble réseau?Je m'y lance.
Ce n'est pas un cours sur Ethernet donc je vais oublier certains aspects et me concentrer sur ce que l'audiophile a besoin de comprendre sur ce qu'il se passe chez lui.
Commençons pas enfoncer des portes ouvertes:
L'ethernet c'est un protocole de communication entre deux appareils pour échanger de l'informations.
Alors on arrive super vite à la première difficulté , des gens seraient tenter de me répondre :" comment cela un protocole !, non Ethernet c'est du hardware pas un protocole" . Oui et non.....
En effet il faut pas confondre:
- la connectique. Par exemple RJ45 (ou RJ11 pour les téléphone)
- le câble .Par exemple : paire torsadé de catégorie 5 , 6 blindé ou pas
- le protocole qui gère l’envoi la réception des données : Ethernet
Maintenant que j'ai fait la distinction , je vais mélanger tout cela par la suite (c'est pas un cours , hein) et me contenter d'expliquer Ethernet sur câble paire torsadé avec connectique RJ45.
Déjà sur une liaison Ethernet , il y a exactement deux personnes : une a chaque bout du fil et il n'y a pas de distinction entre les deux
( Contrairement par exemple à l'USB, le HDMI, le firewire , etc etc).
Chaque personnes (appelons-les carte réseau) peut à la fois (i.e simultanément ) écouter et envoyer des informations le câble.
Le simultanément est important mais on le verra plus tard.
Ça veut dire quoi envoyer de l'information sur le câble ?
Déjà l'information est représenté comme une suite de 0 et de 1 (par paquet de 8 , appelé octet).
Sur le câble, il vas y avoir une tension qui peut prendre deux valeurs possibles (haute et basse on vas dire).
La carte réseau aussi envoi aussi une représentation de ces 0 et 1 en faisant varier la tension sur un (ou plusieurs) fils du câble.
Là, j’hésite dans mon explication , car j'ai pas envie de rentrer dans les détails mais entre l'information et ce qui est réellement envoyer sur le câbles ce n'est pas la même suite de 0 et 1, il y a un encodage spécifique.
Donc j'ai eu envie de passer cela sous silence (comme plein d'autres trucs) mais finalement si je vais m'attarder dessus .
Pourquoi, parce qu'il y a un truc qui vas plaire au audiophile : une horloge
Désolé ça vas être un peu ardu , accrocher les ceintures.
Ben oui, une suite de 0 et 1 comme cela, c'est aussi pas simple.
Prenons l'exemple, de nous voulons envoyer 10000 octet de 0 . Cela voudrait dire que la tension vas rester la même pendant longtemps sur le câble ? mais alors comment celui qui réceptionne sait que ce n'est pas 9999 ou 10001 0 qu'il doit recevoir ?
Une solution serait d'avoir des horloges hyper précises et le problème est réglé
Ouai mais ça coûte cher
Les ingénieurs ont donc inventé un système pas cher qui résout ce problème de façon fiable.
Attention c'est de la technologie moderne : 1949 codage de Manchester .
En fait l'astuce cela vas pas être de dire que une tension égale une valeur mais que c'est un changement de tension qui veut dire quelque chose.
Par exemple, si la tension change on appelle cela un 1, si elle change pas on appelle cela un 0.
Une horloge précise n'est pas requise.
Ouff , vous avez compris ? vous avez fait le plus dur
Cool maintenant, on sais comment sont représenté l'information sur le câble.
Ca y est vous savez tout.
Ha!, j'en vois un au fond de la salle qui me signale que cela marche pas car il n'y a pas d'horloge commune entre l’émetteur et le récepteur.
Bigre il a raison
Merdumm
Je sais , ce que l'on vas faire c'est que a chaque fois que je vais envoyer de l'information je vais commencer par envoyer mon horloge. C'est a dire une suite d'alternance de tension haut et basse à la fréquence de l'horloge de l'émetteur .
Comme cela le récepteur commence par voir ce préambule et peut en déduite mon horloge et donc interpréter les données suivantes avec cette horloge.
Bien sûr cela vas diverger a bout d'un temps mais en réalité , on ne se sert de cette synchronisation d'horloge que quelques millisecondes (beaucoup moins en réalité).
Ca y est , c'est fini
Zut, le gars au fond de la classe qui me dit que cela marche pas.
Il me dit que vu que les deux cartes réseaux sont égales , alors les deux peuvent parler en même temps sur le câble (faire varier la tension) et alors les messages sont brouillés.
Humm, pas faux
Alors, on vas dire que avant d'envoyer, la carte réseau vas écouter ce qu'il se passe sur câble.
S'il ne se passe rien , alors il vas décider d'envoyer le préambule d'horloge puis ses infos .
On pourrait répondre que , oui certes de son coté tout vas bien, mais peut-être que 100m plus loin l'autre carte a fait la même supposition et a envoyer aussi ses données.
En passant , vous voyer ici que le nombre de mètre de câble compte, non pas que pour des raisons électrique mais aussi du protocole qui gère l'envoi et la réception des données.
C'est pour cela que la carte réseau vas dans le même temps écouter ce qu'il se passe sur le câble (le simultané du début) et si ce qu'il reçoit c'est ce qu'il a émis. Il vas alors conclure que l'envoi c'est bien passer. Il est content.
Ok, maintenant l’envoi est OK mais 100m plus loin le signale a peut-être été corrompu lors du voyage.
Pas faux.....
On vas alors rajouter une information aux données envoyées qui vas permettre au récepteur de savoir si les données ont étés corrompu ou pas ( pour les curieux, on appelle cela un CRC).
Petite aparté : une donnée Ethernet arrive ou n'arrive pas mais si elle arrive elle n'a pas été modifié (donc les pertes d'aigu du aux problèmes Ethernet
)
On revient en arrière , on a vu que la carte réseau écoute ce qu'il envoi pour voir si c'est identique. Mais qu'est-ce qu'il se passe dans le cas contraire ?
Et ben, la carte vas conclure que quelqu'un d'autre est en train de causer aussi .
Elle vas donc attendre un certains temps avant d'essayer de renvoyer les données.
Comment cela, un "certain temps" !
Ben ouai , on tire une valeur au hasard et on attends cette valeur
Car dite vous que en face l'autre carte réseau fait la même chose , on peut pas prédéterminer une valeur.
Petite aparté , ça y est vous maîtriser la techno CSMA/CD
Carrier
Sens
Multiple
Acces/
Collision
Detection. Techno où les protagoniste sont plusieurs a avoir accès en même temps au médium et écoute en même temps qu'envoyer et savent détecter les collisions.
Cette technique a été inventé pour la communication radio à Hawai (donc rien a voir avec un câble RJ45) mais si vous réfléchissez c'est le même problème.
Alors pour simplifier j'ai dit que il n'y avait que deux protagonistes: un a chaque bout de câble.
Mais en fait on peut en avoir plusieurs , mais il faut en appareil au centre , un switch avec plein de port RJ45.
Le switch copie ce qu'il se passe sur un câble sur les autres câbles (avec des optimisations dont je ne parlerais pas).
Vous pouvez alors avoir des centaines de cartes réseau sur le même réseau local Ethernet.
Là on a besoin de savoir qui cause a qui . On rajoute donc deux informations : l'identité de l’émetteur et du destinataire.
Donc dans nos informations Ethernet on a maintenant :
- le préambule pour gérer l'horloge
- le nom de l'émetteur et du destinataire
- l'info utile
- le CRC qui permet de vérifier que toute les données sont correctes .
De la bonne réception des données : j'ai expliqué que les données Ethernet sont reçut de façon correcte ou pas.
Donc on ne peut pas avoir de transmission fiable de donnée ?
Si mais ce n'est pas gérer par Ethernet, c'est gérer par d'autres protocoles , notamment TCP/IP qui est un autre sujet.
Passons aux travaux pratiques.
Voici l’état de ma carte réseau (sous linux) cela ressemble a cela :
enp3s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.58 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::16da:e9ff:fef3:fe79 prefixlen 64 scopeid 0x20<link>
ether 14:da:e9:f3:fe:79 txqueuelen 1000 (Ethernet)
RX packets 4065545 bytes 4717025368 (4.7 GB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 3061196 bytes 524585945 (524.5 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Incompréhensible, non?
Regardons de plus prés.
On voit
ether 14:da:e9:f3:fe:79 c'est en fait l'identité (unique au monde) de ma carte réseau , c'est cela qu'elle envoi dans chaque paquet qu'elle envoit
On voit aussi RX et TX c'est pour Réception et Transmission
J'ai reçu 4.7Go de données et envoyé 4.7Go
RX errors 0 dropped 0 overruns 0 frame 0 cela corresponds au compteur d'erreur .
Si vous êtes attentif, vous voyez qu'il y a une erreur supplémentaire à TX: collision . C'est en effet spécifique à l'émetteur d’écouter à l'envoi.
Voyez aussi que d'erreur il n'y en a pas en fait.
c'est le cas dans des réseau simple comme une maison, en réseau d'entreprise c'est plus compliqué.
Il y a aussi
mtu 1500 je n'ai pas abordé ce point (comme plein d'autres). et oui sur Ethernet on ne peut envoyer que des petits bouts , il y a une taille maximum des paquet (MTU Maximum Transmision Unit) , en général 1500 octet . C'est de la responsabilité de TCP/IP de découper l'information en paquet de 1500.
Bon, c'était une courte et légère introduction à Ethernet.
Olivier
PS :
Dans le même style (plus digeste toutefois):
Re: Un petit Dac entre un Mac et un ampli ?...Re: USB : sa vie , son oeuvrePPS: j'ai mis trop de smiley donc j'ai pas le droit de poster mon message. Désolé si je doit le rendre encore moins digeste
Dernière édition par
shal le 10 Aoû 2019 à 13:20, édité 1 fois.