Lesen Netzwerkadapter eingehende Bits in einem einzigen Stream?


9

Wie empfängt ein Gigabit-Netzwerkadapter Daten, wenn er Daten empfängt? Wird alles in einem Strom von Nullen und Einsen angezeigt? Oder kommen irgendwie mehrere Ströme von Nullen und Einsen gleichzeitig herein?

Zum Beispiel ... Nehmen wir an, es gibt zwei Sendegeräte und ein Empfangsgerät.

Die Geräte 1 und 2 senden gleichzeitig Netzwerkdaten an Gerät 3.

Ich gehe davon aus, dass aus Sicht des Netzwerkadapters von Gerät 3 alle Nullen und Einsen in einem einzigen Datenstrom angezeigt werden. Es kann herausfinden, welche Daten von Gerät 1 oder 2 stammen, aber die Daten sind immer noch nur ein Strom von Millionen / Milliarden von Bits.

Bin ich total falsch :) :)


1
Meinen Sie eine Halbduplex-Verbindung oder die Verwendung von Vollduplex? Es gab nie Halbduplex-Geräte für 1000Base-T, obwohl es immer noch in diesem Standard ist. Bei einer Vollduplex-Verbindung würden keine Frames von zwei Geräten gleichzeitig auf der Verbindung um das dritte Gerät kämpfen.
Ron Maupin

Vollduplex. OK, es würde also immer noch einen einzigen Stream von Nullen und Einsen geben (z. B. 01010101010001010010101001010100001101011010) und aus Sicht von Gerät 3 (Empfänger), während Gerät 1 und 2 diesen Stream abwechseln könnten, würden sie niemals beide Sende 0 und 1 genau zur gleichen Zeit, oder?
Shihku7

Hat dir eine Antwort geholfen? Wenn ja, sollten Sie die Antwort akzeptieren, damit die Frage nicht für immer auftaucht und nach einer Antwort sucht. Alternativ können Sie Ihre eigene Antwort bereitstellen und akzeptieren.
Ron Maupin

Antworten:


14

Es hängt davon ab, ob.

Während viele Ethernet-PHYs Daten rein seriell übertragen (z. B. 100BASE-TX, 1000BASE-SX, 10GBASE-SR), teilen einige den Datenstrom in mehrere Spuren auf, die parallel übertragen werden.

Am häufigsten teilt 1000BASE-T - die übliche Gigabit-über-Kupfer-Variante - den codierten Datenstrom in vier Spuren auf und überträgt sie jeweils separat auf einem der vier verdrillten Paare in einem Cat-5-Kabel. Alle Twisted-Pair-Varianten ab Gigabit nutzen diese vier Spuren.

Einige Hochgeschwindigkeits-PHYs (10G +) verwenden auch mehrere Spuren über bis zu 16 Fasern (mit Multimode-Faser und kurzer Reichweite) oder Wellenlängen (mit Single-Mode-Faser und großer Reichweite).

Es wird jedoch alles in Frames übertragen , die jeweils von einer einzelnen Quelle zu einem einzelnen Ziel ausgeführt werden. Rahmen sind im Allgemeinen atomar, dh. Sie werden immer in einem Stück übertragen. Jeder Frame transportiert nur Daten von einer bestimmten Verbindung / Anwendung. Sein Header enthält Quell- und Zieladressen, damit er sich über das Netzwerk zurechtfinden kann.

Wenn das Netzwerk zwei Frames von verschiedenen Quellen für denselben Zielport gleichzeitig empfängt, muss einer der Frames in die Warteschlange gestellt werden, bis der Switch-Port in Richtung des Ziels die Übertragung des ersten Frames beendet hat.

Dies setzt voraus, dass Quellen und Ziel mit derselben Geschwindigkeit ausgeführt werden, was nicht unbedingt der Fall ist. Sie könnten einen Dateiserver haben, der über eine 1-Gbit / s-Verbindung verbunden ist, und zehn Clients, die jeweils ihre 100-Mbit / s-Verbindungen mit voller Geschwindigkeit ohne (signifikante) Warteschlange senden. Dies kommt Ihrem Vorschlag "Mehrere Streams" etwas nahe, nur dass diese Streams auf Frame-Ebene und nicht auf Bitebene verschachtelt sind.

Die Rate an einem Netzwerkport kann Tausende oder sogar Millionen von Frames in einer Sekunde betragen. Aus menschlicher Sicht ist es daher unmöglich, mehrere Streams zu unterscheiden - alles scheint "gleichzeitig" zu sein.


Bitte treffen Sie sich mit einem anderen Antwortenden @jonathanjo und finden Sie heraus, welche Beschreibung von 1000Base-T korrekt ist.
Davidbak

1
jonathanjos "gleiches Medium" beschreibt eine Multiport-Kollisionsdomäne, die mit Gigabit-Ethernet (praktisch) nicht existiert und auch für 10/100 Mbit veraltet ist.
Zac67

2
@davidbak scheint mir hier alles richtig zu sein - Zac ist es normalerweise! - nur andere Betonung. Ich habe einige Dinge in meiner Antwort behoben, einschließlich der Klärung von Kollisionen, die in der praktischen 1000baseT nicht auftreten.
Jonathanjo

2
Dazu müssen Sie auch PAM16 und ähnliche Codierungen hinzufügen, wodurch im Grunde mehrere Bits zu einem gelangen.
PlasmaHH

1
@PlasmaHH 1000BASE-T verwendet bereits vier Spuren und PAM5, sodass in jedem Taktschritt ungefähr 9,3 Rohbits vorhanden sind (und natürlich 8 "Benutzer" -Bits bei 125 MBd für L1).
Zac67

13

Lassen Sie uns den Gigabit-Teil vorerst ignorieren und uns ein wenig auf Ihren Teil "2 Geräte senden gleichzeitig" konzentrieren.

Auf freigegebenen Medien kann dies tatsächlich passieren und ein Problem darstellen. Die meisten drahtlosen Übertragungen sind gemeinsam genutzte Medien, und Ethernet war früher:

  • 10base2 (Koax) verwendete mehr oder weniger ein einzelnes Kabel mit jedem darauf. Offensichtlich konnten zwei (oder mehr) Stationen gleichzeitig senden;
  • 10baseT und 100baseT (Twisted-Pair-basiert) mit Hubs (anstelle von Switches) bedeuteten auch, dass zwei (oder mehr) Stationen gleichzeitig senden konnten, da das von einem angeschlossenen Gerät empfangene Signal nur an alle anderen wiederholt wurde.

Wenn nun zwei Geräte gleichzeitig senden, können zwei Dinge passieren:

  • Sie verwenden eine Form des Multiplexens (Zeitteilung, Frequenzteilung ...), die separate "Kanäle" ermöglicht, so dass man einen bestimmten Kanal hören kann und nicht von den anderen gestört wird. Dies wird häufig für drahtlose Übertragungen verwendet, viel weniger für drahtgebundene Übertragungen (WDM / DWDM auf Fasern ist eine Ausnahme).

  • oder wenn zwei oder mehr Geräte gleichzeitig auf demselben Kanal senden, erhalten Sie eine sogenannte Kollision : Wenn beispielsweise zwei Personen gleichzeitig sprechen, können Sie nicht verstehen, was auch gesagt wird, Empfangsgeräte nicht in der Lage, die von einem der Geräte gesendeten Daten zu dekodieren (oder häufiger, sie können sie dekodieren, aber es macht keinen Sinn und besteht keine CRC-Prüfungen).

Hier kamen Schemata wie CSMA-CD (Carrier-Sense Multiple Access, Kollisionserkennung) ins Spiel:

  • Vor dem Versuch zu senden, prüft ein Gerät, ob jemand anderes sendet (Carrier Sense).
  • Wenn der Kanal frei ist, beginnt er zu senden.
  • Aber auch damit können zwei Geräte genau zur gleichen Zeit starten, sodass Sie immer noch eine Kollision haben können.
  • Um zu vermeiden, dass zu viel Zeit auf dem Kanal verschwendet wird, erkennen die Geräte Kollisionen (indem sie vergleichen, was sie senden und was sie empfangen: Wenn es nicht übereinstimmt, bedeutet dies, dass gleichzeitig jemand anderes sendet), brechen Sie die Übertragung ab. und versuchen Sie es nach einer zufälligen Verzögerung erneut (um eine neue Kollision zu vermeiden).

Das hat sehr viel Spaß gemacht und in leicht ausgelasteten Netzwerken hat es ganz gut funktioniert, aber sobald der Datenverkehr erheblich wurde, kam es zu Unmengen von Kollisionen, die wiederum die Nutzung der gemeinsam genutzten Medien erhöhen, was wiederum zu mehr Kollisionen führt. so könnte es ziemlich schlimm werden.

Die Antwort darauf war die Umstellung auf Vollduplex-Switched-Netzwerke . Hubs wiederholten das Signal nur ohne nachzudenken. Switches hingegen empfangen wirklich einen Frame und senden ihn dann erneut über den Ziellink (zusätzlicher Bonus: Der Frame wird nicht an alle gesendet, sondern in den meisten Fällen nur an das Ziel).

Wenn zwei Geräte an dasselbe Zielgerät senden, stellt der Switch einen der Frames in die Warteschlange, sodass die beiden Frames, die gleichzeitig gesendet wurden, tatsächlich nacheinander am Ziel ankommen.

Darüber hinaus ist es auf physikalischer Ebene durchaus möglich, dass Daten über mehrere Paare oder sogar mehrere Kabel parallel ausgetauscht werden. Ob dies auf Bitebene erfolgt oder ganze Frames auf jedem Paar / Kabel gesendet werden, hängt von der genauen verwendeten Technologie ab. Aber ich denke, das war nicht wirklich deine Frage.


1
Dies ist ein ausgezeichneter Punkt - wahrscheinlich die am besten geeignete Antwort auf die Frage. Ich könnte hinzufügen, dass bei wirklich hohen Geschwindigkeiten (Glasfaser) diese im Allgemeinen auf einen einzelnen Sender und einen einzelnen Empfänger in einer Leitung beschränkt sind, um Kollisionen zu vermeiden. Wenn ein weiterer Eingang hinzugefügt werden muss, wird er auf einem anderen Kanal aufgenommen und mit dem eingehenden Stream kombiniert und dann an einen ausgehenden Stream gesendet. Heutzutage wird sogar Ethernet eher "geschaltet", wodurch Kollisionen vermieden werden - der Hauptort, an dem Kollisionen auftreten (2 Geräte sprechen wie in der Frage mit einem), ist heutzutage WLAN - fast alles andere ist 1 Absender zu 1 Empfänger
Bill K.

12

Dieser besondere Fall ist komplex.

In Bezug auf 1000baseT.

Erstens: Wenn wir allgemein sagen, dass zwei Geräte gleichzeitig senden, senden sie normalerweise nicht tatsächlich Bits zum gleichen Zeitpunkt auf demselben Medium. Wenn dies der Fall ist, liegt eine Kollision vor, und alle Abhörgeräte lösen dies aus (eventuell durch verschiedene Kollisionserkennungsschemata). So erhalten zwei Sendegeräte zu leicht unterschiedlichen Zeitpunkten Zugriff auf das Medium. In 1000baseT gibt es jedoch nur zwei Geräte in einem bestimmten Satz von Paaren. Normalerweise ist ein Gerät ein Switch und das andere ein Host.

Zweitens überträgt 1000baseT zwei Datenbits gleichzeitig auf einem Paar, das auf komplexe Weise bei fünf Spannungspegeln codiert ist. Es handelt sich also um eine Reihe von Basis-4-Ziffern auf dem Draht, nicht um eine Reihe von Basis-2-Ziffern.

Drittens kann 1000baseT gleichzeitig in beide Richtungen auf demselben Paar senden. Es kann das ausgehende Signal durch eine als Hybrid bezeichnete Schaltung vom eingehenden trennen.

Gigabit-Ethernet über andere Medien verhält sich anders. Langsamere Geschwindigkeiten, z. B. 10baseT und 100baseT, haben einfachere Schemata. 10baseT über einen Hub hat tatsächlich tatsächliche Kollisionen. Über Switches wird es normalerweise vom Switch so organisiert, dass ausgehende Frames in die Warteschlange gestellt werden. Wenn es Vollduplex ist, gibt es überhaupt keine Kollisionen.


Bitte setzen Sie sich mit anderen Antwortenden @ Zac67 zusammen und finden Sie heraus, welche Beschreibung von 1000Base-T korrekt ist.
Davidbak

@jonathanjo Sie haben Recht mit den Drei-Bit-Symbolen, aber es gibt nur fünf PAM-Ebenen. Grob gesagt handelt es sich um ein 8-Bit- bis vier 3-Bit-Symbol plus Verschlüsselungscodierung, bei der die 3-Bit-Symbole auf (verschobene) PAM-Pegel abgebildet werden.
Zac67

@ Davidbak danke für die Abholung. Ich habe die Beschreibung vereinfacht, um den Hauptpunkt (komplex und nicht binär) abzudecken und den Fehler zu beseitigen. Danke Zac für die Klarstellung.
Jonathanjo

7

Angenommen, alle kabelgebundenen Ethernet-Verbindungen hier.

Wenn zwei Geräte im selben Netzwerksegment gleichzeitig senden, unabhängig davon, an wen sie senden, spricht man von einer Kollision . Keine der Nachrichten kommt durch, wenn eine Kollision auftritt. Glücklicherweise können Absender Kollisionen erkennen. In diesem Fall wählt jeder Absender eine zufällige Zeitspanne (kleine Sekundenbruchteile) aus, um zu warten und es erneut zu versuchen, und wiederholt den Vorgang, bis schließlich nur noch ein Absender aktiv ist.

Das passiert aber kaum noch.

Stattdessen werden heutzutage die meisten Kabelverbindungen über Switched-Netzwerke hergestellt , bei denen jedes Gerät (sowohl Sender als auch Empfänger) an einem Switch an einen eigenen Port angeschlossen ist. Die Daten werden in Pakete (wirklich: Frames ) aufgeteilt, und der Switch stellt sicher, dass jeweils nur ein Paket an jedem Port aktiv ist. Wenn eine Verbindung besetzt ist, speichert der Switch andere Frames und leitet sie an den Empfänger weiter, wenn die Verbindung wieder verfügbar ist.

Bei diesem Schema können Kollisionen nur dann auftreten, wenn entweder mehr als ein Gerät über einen nicht geschalteten Hub mit dem Switch verbunden ist oder wenn die Ports einiger Modelle des WLAN-Routers zu Hause noch nicht geschaltet sind oder wenn a Die Verbindung zwischen einem Switch und einem Gerät arbeitet im Halbduplexmodus .

Wir beschäftigen uns stattdessen mit Überlastung . Möglicherweise haben wir keine Kollisionen, aber ein beliebter Host im Netzwerk verfügt möglicherweise über Geräte, die mehr Daten und Pakete senden möchten, als die Verbindung unterstützt, sodass der Puffer voll ist. Aber das ist ein ganz anderes Thema.


1
Nitpicking, aber auf Ethernet-Ebene wären es eher Frames als Pakete .
JCaron

1
@jcaron Nit-nit-Picking: Normalerweise verwenden wir normalerweise "Paket", um "IP-Paket" zu bedeuten, das gemäß RFC 791 organisiert ist und die "MAC-Client-Daten" eines Ethernet-Frames sind. Ein "Ethernet-Paket" ist jedoch definiert als alles, was übertragen wird, einschließlich des Beginns der Präambel bis zum Ende der Erweiterungsbits. und "Rahmen" ist der Teil davon von der Zieladresse bis zur Rahmenprüfung. (802.3-2015 Abschnitt 3.1.1 "Paketformat"). Ich hätte gesagt, der Switch stellt sicher, dass jeweils ein Ether- Paket gesendet wird, und speichert Ether- Frames und leitet sie weiter .
Jonathanjo

5

Ich denke, Sie müssen ein grundlegendes Verständnis dafür bekommen, wie Ethernet funktioniert. Beispielsweise sendet der sendende Host eine Präambel mit abwechselnden Einsen und Nullen, um die Aufmerksamkeit des empfangenden Hosts zu erhalten. Wenn der empfangende Host zwei in einer Reihe sieht, weiß er, dass der Frame der nächste ist. Sobald der Rahmen übertragen wurde, muss 96 Bit lang Stille auf der Leitung sein, bevor ein anderer Rahmen gesendet wird.

Unterschiedliche Ethernet-Standards verwenden unterschiedliche Codierungen. Beispielsweise verwendet 100Base-T 4B5B, das fünf Bits pro vier Datenbits sendet.


1

(Für diese Frage gehe ich von einem gemeinsam genutzten Hub-Netzwerk aus.)

Lesen Netzwerkadapter eingehende Bits in einem einzigen Stream?

Ja. Unabhängig von der PHY-Implementierung handelt es sich um einen einzelnen Eingabestream. Die Kommunikation von mehreren Geräten kann nicht erfolgreich ankommt an einer einzigen NIC (MAC - Adresse) zur gleichen Zeit.

Ich gehe davon aus, dass aus Sicht des Netzwerkadapters von Gerät 3 alle Nullen und Einsen in einem einzigen Datenstrom angezeigt werden. "

"Einzelstrom" ja, aber in Ihrem Beispiel von zwei Geräten, die gleichzeitig senden, kommt kein Datenstrom zur weiteren Verarbeitung an. Die "Frames" von 1s und 0s kollidieren.

Es kann herausfinden, welche Daten von Gerät 1 oder 2 stammen, aber die Daten sind immer noch nur ein Strom von Millionen / Milliarden von Bits.

Nicht kann es nicht. Wenn die Signale kombiniert werden, wird eine Kollision erkannt und der Rahmen wird verworfen.

Bin ich total falsch

Ihr Fragentitel ist eine korrekte Aussage, aber Ihre Diskussion in Ihrem Q-Beitrag deutet darauf hin, dass Ihr Verständnis und Ihre Hypothese falsch waren.

Des Weiteren

  • Unabhängig vom Typ des "Netzwerkadapters" empfangen sie nur einen einzigen Bitstrom.
  • Das physikalische Mittel zum Übertragen eines Signals könnte mehrere Teilströme von Daten enthalten, aber diese Teilströme und eine solche physikalische Verarbeitung werden nicht als "Netzwerkadapter" betrachtet; Diese Teilströme sind codependent. Sie müssen kombiniert werden, um einen Sinn zu ergeben. und diese Teilströme müssen aus einer einzigen Quelle stammen.
  • Wenn Sie sich über diese Antwort (und andere Antworten hier) nicht sicher sind, müssen Sie die Grundlagen von Switched Packet Ethernet / IP-Netzwerken kennenlernen.

Für diese Frage gehe ich von einem gemeinsam genutzten Hub-Netzwerk aus - das auf eine Gigabit- Netzwerkkarte bezogene OP und der Halbduplex-Modus existieren für GbE (praktisch) nicht. ;-)
Zac67

@ Zac67 Ich bin wie ein großzügiger und hilfsbereiter Fremder. Ich nahm an, dass das OP "Gigabit" willkürlich gewählt hatte und dass sie nicht realisierten, dass es einen Widerspruch geben würde. Dies ließ mich letztendlich den Titel der Frage direkt und einfach beantworten. Das OP kann die anderen Antworten lesen, um mehr über den Widerspruch zu erfahren.
Todd
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.