Woher weiß Ethernet, wie lang ein Frame ist?

17

Wenn ich mir den Ethernet- Eintrag auf Wikipedia anschaue, kann ich nicht herausfinden, wie lang der Ethernet-Frame ist. Das EtherType / Length-Header-Feld kann anscheinend entweder einen Rahmentyp oder eine explizite Länge angeben, und ich vermute, dass im Fall eines Rahmentyps eine andere Logik erforderlich ist, um herauszufinden, wie lang das Paket ist. Wenn das EtherType-Feld beispielsweise 0x0800 ist, zeigt dies eine IPv4-Nutzlast an, und die empfangende Netzwerkkarte müsste daher die ersten 32 Bits der Nutzlast untersuchen, um die Länge des IP-Pakets zu ermitteln und daher die Gesamtlänge von zu ermitteln den Ethernet-Frame und wissen, wann nach der Prüfsumme für das Frame-Ende und der Lücke zwischen den Frames gesucht werden muss.

Klingt das richtig? Ich habe mir auch die IEEE 802.3-Spezifikation für Ethernet (Teil 1) angesehen, die dies zu bestätigen scheint, aber sie ist ziemlich undurchsichtig.

dirtside
quelle

Antworten:

21

Die physikalische Codierungsunterschicht ist dafür verantwortlich, die Rahmen zu begrenzen und sie an die MAC-Schicht zu senden.

In Gigabit-Ethernet verwendet das 8B / 10B-Codierschema beispielsweise eine 10-Bit-Codegruppe, um ein 8-Bit-Byte zu codieren. Die zusätzlichen zwei Bits geben an, ob es sich bei einem Byte um Steuerinformationen oder Daten handelt. Die Steuerinformationen können Konfiguration, Start_des_Pakets, Ende_des_Pakets, IDLE, Trägererweiterung, Fehlerausbreitung sein.

Auf diese Weise weiß eine Netzwerkkarte, wo ein Frame beginnt und endet. Dies bedeutet auch, dass die Länge des Frames nicht bekannt ist, bevor er vollständig decodiert wurde, analog zu einer mit NULL abgeschlossenen Zeichenfolge in C.

Hroi Sigurdsson
quelle
1
Dies ist in IEEE Std 802.3-2015 (Abschnitt 3), 36.2.4.2 und 36.2.4.15 spezifiziert (unter anderem in dieser unlesbaren Sache, die sie als Standard bezeichnen;).
Stefanct
1

Der Artikel, den Sie wirklich beantworten möchten, ist http://en.wikipedia.org/wiki/Ethernet_II_framing ; was sagt:

Während dieser von der Industrie entwickelte Standard einen formalen IEEE-Standardisierungsprozess durchlief, wurde das EtherType-Feld im neuen 802.3-Standard in ein (Daten-) Längenfeld geändert. (Ursprüngliche Ethernet-Pakete definieren ihre Länge mit dem Rahmen, der sie umgibt, und nicht mit einer expliziten Längenzählung.) Da der Paketempfänger immer noch wissen muss, wie das Paket zu interpretieren ist, erforderte der Standard einen IEEE 802.2-Header, um der Länge zu folgen und anzugeben der Pakettyp.

womble
quelle
Ich denke, ich bin nicht sicher, was "Original Ethernet-Pakete definieren ihre Länge mit dem Rahmen, der es umgibt" bedeutet. Die Präambel / Start-Frame-Bits sind ziemlich klar, aber woher weiß der Client, dass das Ende des Frames erreicht wurde? Wie unterscheidet es zwischen der CRC und der Interframe-Lücke? Ist das zufällige elektrische Rauschen des IFG leicht vom realen Signal zu unterscheiden?
Dirtside
Das Ende eines Frames im "klassischen Ethernet" wird durch eine unzulässige Codierung angezeigt.
Vatine
@womble, Der Artikel, den Sie verlinkt haben, ist gut, aber das Bit, das Sie zitiert haben, ist sehr irreführend. Die meisten Frames in einem Ethernet-Netzwerk verwenden heutzutage kein explizites Längenfeld.
Peter Green
-3

Logischerweise gibt es nur drei Möglichkeiten:

  1. Verwenden einer statischen Rahmengröße wie in.
  2. Festlegen der Bildgröße in der Kopfzeile oder an einer anderen Stelle oder sogar Begrenzen mit einigen Flags.
  3. Kein Versenden von Frames

Eine davon funktioniert in Ethernet, da es derzeit keine anderen Optionen für moderne Netzwerke gibt;) 1. und 3. sind für Ethernet falsch, Sie haben also Recht!

kolypto
quelle
-3

Es hat eine Weile gedauert, bis ich das herausgefunden habe und jetzt wieder. Es sind nicht viele Informationen verfügbar, was überrascht, da es sich um eine so offensichtliche Frage handelt. Ich habe mich schließlich für die Lösung entschieden, dass die Längenfelder in den Paketköpfen verwendet werden. Siehe folgenden Link

http://www3.rad.com/networks/infrastructure/lans/etherform.htm#_ieee


quelle