Warum wird die Präambel nicht als Teil des Ethernet-Headers betrachtet?

7
  1. Wenn ich suche, wo meine Daten in einem Ethernet-Frame beginnen, erhalte ich eine allgemeine Antwort: TCP-Header (20 Byte) + IP-Header (20 Byte) + Ethernet-Header (SA + DA + Typ), dh 14 Byte. Kurz gesagt, die Antwort auf diese Frage lautet 52-54 Byte. Die Daten beginnen in einem Ethernet-Frame. Sollten wir nicht auch 8 Byte Präambel hinzufügen?

  2. Außerdem habe ich nach der Ethernet-Frame-Größe gesucht, die für Ethernet-Frames 1514 beträgt. Warum ignorieren wir hier Präambel und CRC?

Anshul Choudhary
quelle

Antworten:

10

Hinzufügen zu Jonathanjos Antwort:

Ethernet hat Komponenten in beiden Schichten 1 (weil es über verschiedene Medien ausgeführt werden kann) und 2 (weil die Frames auf den verschiedenen Medien gleich sind).

Die Präambel, der SoF-Begrenzer und die Inter-Packet-Lücke befinden sich tatsächlich in Schicht 1 (Aufwecken des Empfängers usw.), während sich der Frame (einschließlich Header, Nutzlast und FCS) in Schicht 2 befindet.

Die Daten in einem Ethernet-Frame sind die Nutzdaten eines Ethernet-Frames. In Ihrer Frage 1 wird davon ausgegangen, dass jedes Layer-3-Protokoll IPv4 und jedes Layer-4-Protokoll TCP ist. Dies sind schlechte Annahmen. Ethernet weiß nicht, welches Layer-3-Protokoll es trägt (IPv4, IPX, IPv6, AppleTalk usw.), daher sind die Daten des Frames die Nutzdaten. Beispielsweise beträgt der IPv4-Paket-Header 20 bis 60 Oktette, während der IPv6-Paket-Header immer 40 Oktette beträgt. Ethernet weiß das nicht, es weiß nur, dass es ein Nutzlastfeld hat, nicht was sich in diesem Feld befindet.

Der Ethernet-Frame-Header besteht normalerweise aus 14 Oktetten, es sei denn, Sie haben einen getaggten Frame, dann sind es 18 Oktette. Die MTU ist die maximale Nutzlastgröße. Ethernet hat auch eine minimale Frame-Größe von 64 Oktetten, einschließlich FCS, sodass die Nutzlast von 42 (mit Tag) oder 46 (ohne Tag) Oktetten bis zu einer maximalen Nutzlastgröße von 1500 Oktetten reichen kann. Das bedeutet, dass Ethernet-Frames (Header und Payload) zwischen 60 Oktetten und 1514 (ohne Tag) oder 1518 (mit Tag) Oktetten liegen.

Wenn mit dem Ort, an dem die Daten beginnen, Anwendungsdaten gemeint sind, hängt dies wirklich von allen Protokollen ab. Der UDP-Header besteht nur aus 8 Oktetten, und die UDP-Nutzdaten können die Anwendungsdaten sein, oder es kann sich um ein Datagramm für ein Protokoll auf Anwendungsebene handeln, das über einen eigenen Header verfügt, der möglicherweise nicht als Anwendungsdaten gezählt wird. In Ihrem Beispiel für TCP führen Sie möglicherweise einen Webbrowser auf einem Webserver aus. Zählen Sie HTTP (ein Anwendungsschichtprotokoll) oder HTML als Daten (HTML sind die Daten für HTTP)? Wenn Sie sich auf die Daten beziehen, beziehen sie sich auf das Protokoll, auf das Sie sich beziehen.

Ron Maupin
quelle
Übrigens gibt es auch doppelt getaggte Frames mit 22-Oktett-Headern. Und dann gibt es noch Provider Backbone Bridging, mit dem Sie Ethernet-Header rekursiv verschachteln können. (Beides wäre in Consumer- oder Unternehmensanwendungen ziemlich ungewöhnlich)
user253751
7

Die Präambel besteht aus 7 Oktetten, gefolgt von einem Rahmenoktett, dem Startframe-Begrenzer (SFD). Sie markieren nur, dass ein Frame kommt und dienen Synchronisationszwecken. Sie sind nicht Teil des Frames. Genau wie die Interframe-Lücke zählt sie nicht als Teil des Frames. Präambel und SFD gehen niemals in den Speicher, und daher gibt es niemals einen Speicheroffset, der diese 8 enthält.

Ethernet-Frames werden manchmal als 1514-Oktette bezeichnet, da die Hardware den FCS normalerweise berechnet / überprüft und die CPU ihn nie sieht oder in den Speicher legt: nur src, dest, type, payload. Der Rahmen ist jedoch so definiert, dass er das FCS gemäß dem Standard eindeutig enthält. Der Grundrahmen hat eine maximale Clientdatenfeldlänge von mindestens 1500 Oktetten, zuzüglich 14 plus 4 FCS = 1520.

PS. Vergessen Sie nicht das optionale 802.1q-Tag, weitere 4 Oktette für Pakete auf Amtsleitungen. und es gibt einige andere spezielle Typen.

BEARBEITEN Der Standard spricht hauptsächlich von Frames , die so definiert sind, dass sie das FCS enthalten (danke Richard für den Kommentar). Es handelt sich auch um Pakete, die vom Anfang der Präambel bis zum Ende der Erweiterungsbits reichen (die manchmal nach dem FCS benötigt werden, um eine gute Kollisionserkennung zu gewährleisten). Dieses Paket enthält alle Bits, die die Hardware auf dem Draht überträgt. (Diese Verwendung von "Paket" kann verwirrend sein, da wir normalerweise von IP- Paketen innerhalb des Ethernet- Frames sprechen .)

Letztendlich geht es nur um Definitionen, und wir können sie dankenswerterweise nachschlagen. Wenn Sie sich nicht bewusst waren, ist der Standard frei verfügbar. Der Kern ist 4.000 Seiten lang (!), Aber die meisten Dinge wie Definitionen sind sehr einfach zu lesen und absolut eindeutig. Es wird dringend empfohlen, zumindest Abschnitt 3.1.1 Paketformat gelesen zu haben. http://www.ieee802.org/3/

Jonathanjo
quelle
2
Tatsächlich besteht ein 802.1Q-Tag aus vier Oktetten. Das VLAN ist 12 Bit, aber es gibt auch andere Felder.
Ron Maupin
Natürlich hast du recht; bearbeitete Antwort mit Korrektur
Jonathanjo
1
Streng genommen sollte man die CRC als Teil des Frames zählen: "1.4.248 MAC-Frame: Besteht aus der Zieladresse, der Quelladresse, dem Feld Länge / Typ, den MAC-Client-Daten, dem Pad (falls erforderlich) und der Frame-Check-Sequenz."
Richard B
Danke Richard, auch du hast natürlich recht! Bearbeitete Antwort zur Verdeutlichung.
Jonathanjo
2

Neben den bereits vorhandenen guten Antworten:

Die Präambel ist eine wesentliche Funktion der physikalischen Schicht. Beachten Sie, dass Sie beim Serialisieren von Daten zu einem einzelnen Bit oder Symbolstrom eine Form der Synchronisation bereitstellen müssen - zuerst zu Bits / Symbolen, dann zu Wörtern.

Das Symbolmuster, das die Präambel auf dem Kabel erzeugt (es ist wirklich nur 01010 ... mit 10BASE-x Manchester-Code), ermöglicht es dem Empfänger, seine Symboluhr auf die exakte Geschwindigkeit des Senders abzustimmen. Es wird wissen, wie viele Symbole es gerade erhalten hat, auch wenn sich am Draht nichts geändert hat. (Alle physischen Schichten bieten auch Mittel für die Zwischensynchronisation, es handelt sich also um einen kontinuierlichen Prozess.)

Das SOF-Muster hinter der Präambel markiert den Anfang des ersten Wortes (oder Oktetts / Bytes). Der Empfänger aktiviert seinen Puffer und taktet die decodierten Bits hinein, deserialisiert die aus dem Decoder kommenden Bits und sendet sie Wort für Wort an den Puffer. Es spielt keine Rolle, ob es sich jeweils um ein Byte oder ein 32-Bit-Wort handelt, aber es ist wichtig, dass die Bytegrenzen korrekt sind.

Präambel und SOF sind also notwendigerweise Teil des physikalischen Transportmechanismus und gehören somit zur physikalischen Schicht. Aus der Perspektive von Ebene 2 benötigt ein Frame keine Startmarkierung - es beginnt nur mit dem ersten Oktett.

Zac67
quelle
1

Zusätzlich zu den hervorragenden Antworten anderer zum Thema Layering befinden sich einige Protokolle direkt über dem L2-Ethernet-Frame, von denen die bekanntesten ARP, RARP, CDP usw. sind, die sich direkt auf den Link beziehen (auch, wie ich daran erinnere Zac, andere Protokolle wie LLDP und STPs BPDUs.)

Es ist sehr ungewöhnlich, aber gelegentlich finden Sie Anwendungen, die ihre Daten im Ethernet-Frame senden, obwohl die einzigen Gründe, die ich dafür gesehen habe, entweder a) proprietäre Protokolle sind, die dunkel oder rein lokal wie Lizenzverwaltung sind, b ) Experimentieren, insbesondere Echtzeitübertragungen oder Auswertung der Protokollstapel-Timimg. Vor- und Nachteile davon liegen weit außerhalb des Rahmens dieser Antwort!

Dies wird von einem Timing-Testpaket ausgegeben, dessen "Daten" bei 0x0e beginnen.

14:54:29.698140 34:02:86:9f:f2:fc > 00:04:75:c8:28:e5, 802.3, length 64: length 50
    0x0000:  0004 75c8 28e5 3402 869f f2fc 0000 4041  ..u.(.4.......@A
    0x0010:  4243 4445 4647 4849 4a4b 4c4d 4e4f 5051  BCDEFGHIJKLMNOPQ
    0x0020:  5253 5455 5657 5859 5a5b 5c5d 5e5f 6061  RSTUVWXYZ[\]^_`a
    0x0030:  6263 6465 6667 6869 6a6b 6c6d 6e6f 7071  bcdefghijklmnopq
Jonathanjo
quelle
Tatsächlich gibt es sehr häufige Anwendungen, die direkt auf Schicht 2 sitzen, z. B. LLDP oder STP mit seinen BPDUs.
Zac67
Ich hätte diese Protokolle im Zusammenhang mit der Linkverwaltung und nicht mit Anwendungen aufgerufen und sie meiner Antwort hinzugefügt, da sie natürlich wichtig sind. Kennen Sie die eigentlichen Anwendungen, die sich direkt über Ethernet befinden?
Jonathanjo