Les adaptateurs réseau lisent-ils les bits entrants dans un seul flux?

9

Lorsqu'une carte réseau Gigabit reçoit des données, comment reçoit-elle les bits? Est-ce qu'il voit tout cela dans un flux de 0 et de 1? Ou y a-t-il en quelque sorte plusieurs flux de 0 et de 1 entrant en même temps?

Par exemple ... disons qu'il y a deux appareils émetteurs et un appareil récepteur.

Les périphériques 1 et 2 commencent à envoyer des données réseau vers le périphérique 3 en même temps.

Mon hypothèse est que du point de vue de l'adaptateur réseau de l'appareil 3, tous les 0 et les 1 se rencontrent dans un seul flux de données. Il peut déterminer quelles données proviennent du périphérique 1 ou 2, mais les données ne sont toujours qu'un flux de millions / milliards de bits.

Suis-je totalement faux? :)

shihku7
la source
1
Voulez-vous dire pour une connexion semi-duplex, ou en utilisant le duplex intégral? Il n'y a jamais eu de périphériques semi-duplex pour 1000Base-T, même s'il est toujours dans cette norme. Avec une connexion en duplex intégral, il n'y aurait pas de trames de deux appareils en concurrence pour le troisième appareil en même temps sur la liaison.
Ron Maupin
Un duplex plein. OK, donc, il y aurait toujours un seul flux de 0 et de 1 (ex: 01010101010001010010101001010100001101011010) et du point de vue de l'appareil 3 (le récepteur), tandis que les appareils 1 et 2 pourraient se relayer sur ce flux, ils n'auraient jamais les deux envoyer des 0 et des 1 en même temps, non?
shihku7
Une réponse vous a-t-elle aidé? Si c'est le cas, vous devez accepter la réponse afin que la question ne s'affiche pas indéfiniment, à la recherche d'une réponse. Alternativement, vous pouvez fournir et accepter votre propre réponse.
Ron Maupin

Réponses:

14

Ça dépend.

Alors que de nombreux PHY Ethernet transmettent des données de manière purement série (par exemple, 100BASE-TX, 1000BASE-SX, 10GBASE-SR), certains divisent le flux de données en plusieurs voies qui sont transmises en parallèle.

Le plus souvent, le 1000BASE-T - la variante commune gigabit sur cuivre - divise le flux de données codées en quatre voies et transmet chacune séparément sur l'une des quatre paires torsadées d'un câble Cat-5. Toutes les variantes à paire torsadée à partir du gigabit utilisent ces quatre voies.

Certains PHY à fibre haute vitesse (10G +) utilisent également plusieurs voies sur jusqu'à seize fibres (avec fibre multimode et courte portée) ou longueurs d'onde (avec fibre monomode et longue portée).

Cependant, tout est transmis dans des trames qui s'exécutent chacune à partir d'une seule source vers une seule destination. Les cadres sont généralement atomiques, c'est-à-dire. ils sont toujours transmis en un seul morceau. Chaque trame ne transporte que les données d'une seule connexion / application spécifique. Son en-tête contient les adresses source et de destination, afin qu'il puisse trouver son chemin sur le réseau.

Lorsque le réseau reçoit deux trames de sources différentes pour le même port de destination en même temps, l'une des trames doit être mise en file d'attente jusqu'à ce que le port de commutation vers la destination ait fini de transmettre la première trame.

Cela suppose que les sources et la destination fonctionnent à la même vitesse, ce qui n'est pas nécessairement vrai. Vous pouvez avoir un serveur de fichiers connecté par une liaison à 1 Gbit / s et dix clients envoyant chacun à pleine vitesse sur leurs liaisons à 100 Mbit / s sans file d'attente (significative). Cela se rapproche quelque peu de votre suggestion de "flux multiples", seulement que ces flux sont entrelacés au niveau de la trame, pas au niveau du bit.

Le débit sur un port réseau peut être de milliers voire de millions de trames en une seule seconde, donc d'un point de vue humain, il est impossible de différencier plusieurs flux - tout semble `` simultané ''.

Zac67
la source
Veuillez vous réunir avec un autre répondeur @jonathanjo et déterminer quelle description de 1000Base-T est correcte.
davidbak
1
Le "même support" de jonathanjo décrit un domaine de collision multiport qui n'existe pas (pratiquement) avec Gigabit Ethernet et est également obsolète pour 10/100 Mbit.
Zac67
2
@davidbak me semble tout à fait correct - Zac l'est généralement! - emphase juste différente. J'ai corrigé quelques points sur ma réponse, y compris la clarification des collisions qui ne se produisent pas dans 1000baseT pratique.
jonathanjo
2
Pour cela, vous devez également ajouter PAM16 et des codages similaires qui font que plusieurs bits arrivent à un.
PlasmaHH
1
@PlasmaHH 1000BASE-T utilise déjà quatre voies et PAM5, il y a donc environ 9,3 bits bruts à chaque étape de l'horloge (et bien sûr 8 bits "utilisateur" à 125 Mo pour L1).
Zac67
13

Ignorons pour l'instant la partie Gigabit et concentrons-nous un peu sur votre partie "2 appareils envoient en même temps".

Sur les médias partagés , cela peut réellement se produire et être un problème. La plupart des transmissions sans fil sont des médias partagés, et Ethernet, à l'époque, était:

  • 10base2 (coax) a utilisé ce qui était plus ou moins un seul câble avec chacun dessus. De toute évidence, deux stations (ou plus) ont pu transmettre en même temps;
  • 10baseT et 100baseT (basé sur une paire torsadée), avec des concentrateurs (plutôt que des commutateurs) signifiaient également que deux (ou plus) stations pouvaient transmettre en même temps, car le signal reçu de n'importe quel appareil connecté venait d'être répété à tous les autres.

Maintenant, si deux appareils envoient en même temps, deux choses peuvent se produire:

  • vous utilisez une certaine forme de multiplexage (division du temps, division de fréquence ...) qui permet des "canaux" séparés afin que l'on puisse écouter un canal spécifique et ne pas être dérangé par les autres. Ceci est beaucoup utilisé pour les transmissions sans fil, beaucoup moins pour les transmissions filaires (WDM / DWDM sur fibres étant une exception).

  • ou si deux ou plusieurs appareils envoient en même temps sur le même canal, alors vous obtenez ce qu'on appelle une collision : comme lorsque deux personnes parlent en même temps, vous ne pouvez pas comprendre ce qui est dit, les appareils récepteurs ne sont pas capable de décoder les données envoyées par l'un des appareils (ou plus souvent, ils peuvent le décoder, mais cela n'a aucun sens et ne passera pas les vérifications CRC).

C'est là qu'interviennent des systèmes comme CSMA-CD (Carrier-Sense Multiple Access, Collision Detection):

  • Avant d'essayer de transmettre, un appareil vérifierait si quelqu'un d'autre envoyait (détection de porteuse)
  • Si la chaîne est libre, elle commence à émettre.
  • Mais même avec cela, deux appareils peuvent démarrer exactement en même temps, vous pouvez donc toujours avoir une collision.
  • Pour éviter de perdre trop de temps sur le canal, les appareils détectent les collisions (en comparant ce qu'ils envoient avec ce qu'ils reçoivent: si cela ne correspond pas, cela signifie que quelqu'un d'autre envoie en même temps), abandonne la transmission, et réessayez après un délai aléatoire (pour essayer d'éviter une nouvelle collision).

C'était assez amusant, et sur les réseaux légèrement chargés, cela fonctionnait assez bien, mais dès que le trafic devenait important, vous vous retrouviez avec des tonnes de collisions, ce qui augmentait à son tour l'utilisation des médias partagés, ce qui entraînait à son tour plus de collisions, donc ça pourrait devenir assez mauvais.

La réponse à cette question a été la transition vers des réseaux commutés en duplex intégral . Les hubs ont juste répété le signal sans réfléchir. En revanche, les commutateurs reçoivent vraiment un cadre, puis le renvoient sur le lien de destination (bonus supplémentaire: le cadre n'est pas envoyé à tout le monde, juste à la destination dans la plupart des cas).

Si deux périphériques envoient vers le même périphérique de destination, le commutateur met en file d'attente l'une des trames, de sorte que les deux trames envoyées en même temps arrivent réellement l'une après l'autre à la destination.

Au-delà de cela, sur le plan physique, il est tout à fait possible que les données soient échangées sur plusieurs paires ou même plusieurs câbles en parallèle. Que cela soit fait au niveau du bit ou que des trames entières soient envoyées sur chaque paire / câble dépend de la technologie exacte utilisée. Mais je pense que ce n'était pas vraiment votre question.

jcaron
la source
1
C'est un excellent point - probablement la réponse la plus appropriée à la question. Je pourrais ajouter que lorsque vous atteignez des vitesses très élevées (fibre), ils sont généralement limités à un seul expéditeur et un seul récepteur sur une ligne pour éviter les collisions. Si une autre entrée doit être ajoutée, elle est reprise sur un autre canal et combinée avec le flux entrant, puis envoyée à un flux sortant. De nos jours, même Ethernet a tendance à être "commuté", ce qui évite les collisions - le principal endroit où vous voyez des collisions (2 appareils parlant à un comme dans la question) est le wifi - presque tout le reste est 1 expéditeur pour 1 récepteur
Bill K
12

Ce cas particulier est complexe.

Concernant 1000baseT.

Premièrement: lorsque nous disons en général que deux appareils transmettent en même temps, ils n'envoient normalement pas réellement de bits au même instant sur le même support. S'ils le font, il y a une collision et tous les appareils d'écoute fonctionnent (éventuellement, par le biais de divers schémas de détection de collision). Ainsi, deux appareils émetteurs auront accès au support à des moments légèrement différents. Mais dans 1000baseT, il n'y a que deux appareils sur un ensemble de paires donné; normalement, un périphérique est un commutateur et l'autre est un hôte.

Deuxièmement, 1000baseT transmet deux bits de données à la fois sur une paire, codés de manière complexe à cinq niveaux de tension. C'est donc une série de chiffres de base 4 sur le fil, pas une série de chiffres de base 2.

Troisièmement, 1000baseT peut transmettre dans les deux sens en même temps, sur la même paire. Il peut séparer le signal sortant de celui entrant par un circuit appelé hybride.

Ethernet Gigabit sur d'autres supports se comporte différemment. Des vitesses plus lentes, par exemple 10baseT et 100baseT, ont des schémas plus simples. 10baseT sur un hub a vraiment des collisions réelles; sur les commutateurs, il est normalement organisé par le commutateur afin que les trames sortantes soient mises en file d'attente; s'il s'agit d'un duplex intégral, il n'y a aucune collision.

jonathanjo
la source
Veuillez vous réunir avec un autre répondeur @ Zac67 et déterminer quelle description de 1000Base-T est correcte.
davidbak
@jonathanjo Vous avez raison sur les symboles à trois bits mais il n'y a que cinq niveaux PAM. En gros, il s'agit d'un symbole de 8 bits à quatre symboles de 3 bits plus un codage de brouillage où les symboles à 3 bits sont mappés à des niveaux PAM (décalés).
Zac67
@davidbak merci de l'avoir récupéré. J'ai simplifié la description pour couvrir le point principal (complexe et non binaire) et me débarrasser de l'erreur. Merci Zac pour la clarification.
jonathanjo
7

En supposant que tous les liens Ethernet câblés ici.

Lorsque deux appareils sur le même segment de réseau envoient en même temps, quel que soit le destinataire, cela s'appelle une collision . Aucun des deux messages ne passe lorsqu'une collision se produit. Heureusement, les expéditeurs ont la capacité de détecter les collisions. Lorsque cela se produit, chaque expéditeur choisit chacun une durée aléatoire (petites fractions de seconde) pour attendre et réessayer, et répéter le processus jusqu'à ce qu'un seul expéditeur soit finalement actif.

Mais cela n'arrive presque plus.

Au lieu de cela, la plupart des connexions câblées sont aujourd'hui établies sur des réseaux commutés , où chaque périphérique (émetteurs et récepteurs) est tous connectés à leur propre port séparé sur un commutateur. Les données sont divisées en paquets (en réalité: des trames ), et le commutateur s'assurera qu'un seul paquet est actif sur chaque port à la fois. Si une liaison est occupée, le commutateur stocke et transfère les autres trames au récepteur lorsque la liaison est à nouveau disponible.

Avec ce schéma, la seule façon d'avoir des collisions est lorsque plusieurs appareils sont connectés au commutateur ou entre eux via un concentrateur non commuté (les ports de certains modèles de «routeur» wifi domestique ne sont toujours pas commutés), ou lorsqu'un la liaison entre un commutateur et un périphérique fonctionne en mode semi-duplex .

Ce que nous traitons plutôt, c'est la congestion . Nous pouvons ne pas avoir de collisions, mais un hôte populaire sur le réseau peut avoir des appareils qui souhaitent envoyer plus de données et de paquets que le lien ne prendra en charge, de sorte que le tampon se remplit. Mais c'est un tout autre problème.

Joel Coehoorn
la source
1
Nitpicking, mais au niveau Ethernet, ce serait des trames plutôt que des paquets .
jcaron
1
@jcaron Nit-nit-picking: Bien sûr, nous utilisons normalement «paquet» pour signifier «paquet IP», qui est organisé selon la RFC 791, et qui est les «données client MAC» d'une trame Ethernet. Mais un «paquet Ethernet» est défini comme tout ce qui est transmis, y compris le début du préambule jusqu'à la fin des bits d'extension; et «trame» est la partie de celle de l'adresse de destination à la vérification de trame. (802.3-2015 Section 3.1.1 "Format de paquet"). J'aurais dit que le commutateur garantit qu'un paquet Ether est envoyé à la fois, et stocke et transfère les trames Ether .
jonathanjo
5

Je pense que vous devez avoir une compréhension de base du fonctionnement d'Ethernet. Par exemple, l'hôte émetteur enverra un préambule de zéros et de zéros alternés pour attirer l'attention de l'hôte récepteur. Lorsque l'hôte récepteur en voit deux de suite, il sait que la trame est la suivante. Une fois la trame transmise, il doit y avoir un silence sur la ligne pendant 96 bits avant d'envoyer une autre trame.

Différentes normes Ethernet utiliseront un codage différent. Par exemple, 100Base-T utilise 4B5B qui envoie cinq bits pour quatre bits de données.

Ron Maupin
la source
1

(Pour cette question, je suppose un réseau partagé Hub.)

Les adaptateurs réseau lisent-ils les bits entrants dans un seul flux?

Oui. Quelle que soit l'implémentation PHY, il s'agit d'un seul flux d'entrée. Les communications provenant de plusieurs périphériques ne peuvent pas parvenir à une seule carte réseau (adresse MAC) en même temps.

Mon hypothèse est que du point de vue de l'adaptateur réseau de l'appareil 3, tous les 0 et les 1 se rencontrent dans un seul flux de données "

"flux unique" oui, mais dans votre exemple de deux appareils envoyant simultanément, aucun flux de données n'arrivera pour un traitement ultérieur; les "images" de 1 et de 0 entreront en collision.

Il peut déterminer quelles données proviennent du périphérique 1 ou 2, mais les données ne sont toujours qu'un flux de millions / milliards de bits.

Ce n'est pas possible. Lorsque les signaux se combinent, une collision est détectée et la trame est rejetée.

Suis-je totalement faux?

Le titre de votre question est une déclaration correcte, mais votre discussion dans votre message Q suggère que votre compréhension et votre hypothèse étaient erronées.

Plus loin

  • Quel que soit le type d '"adaptateur réseau", ils ne reçoivent qu'un seul flux de bits.
  • Les moyens physiques pour transmettre un signal peuvent comprendre plusieurs sous-flux de données, mais ces sous-flux et ce traitement physique ne sont pas considérés comme la "carte réseau"; ces sous-flux sont dépendants du code, ils doivent être combinés pour avoir un sens; et ces sous-flux doivent provenir d'une seule source.
  • Si vous n'êtes pas sûr de cette réponse (et des autres réponses ici), vous devez apprendre les principes fondamentaux des réseaux Ethernet / IP à commutation de paquets.
Todd
la source
Pour cette question, je suppose un réseau partagé Hub - l'OP fait référence à une carte réseau Gigabit et le mode semi-duplex n'existe pas (pratiquement) pour GbE. ;-)
Zac67
@ Zac67 Je suis comme un étranger généreux et serviable. J'ai supposé que le PO avait choisi arbitrairement "Gigabit" et qu'il ne s'était pas rendu compte qu'il y aurait une contradiction. Cela m'a finalement permis de répondre directement et simplement au titre de la question. Le PO peut lire les autres réponses pour en savoir plus sur la contradiction.
Todd