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.
quelle
Antworten:
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.
quelle
Der Artikel, den Sie wirklich beantworten möchten, ist http://en.wikipedia.org/wiki/Ethernet_II_framing ; was sagt:
quelle
Logischerweise gibt es nur drei Möglichkeiten:
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!
quelle
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