Was ist die „In-the-Wire“-Größe eines Ethernet-Frames? 1518 oder 1542?

Was ist die „In-the-Wire“-Größe eines Ethernet-Frames? 1518 oder 1542?

Entsprechenddie Tabelle hierheißt es, dass MTU = 1500 Bytes und der Nutzlastteil 1500 - 42 Bytes oder 1458 Bytes beträgt (<- das ist tatsächlich falsch!). Jetzt müssen Sie noch IPv4- und UDP-Header hinzufügen, die 28 Bytes betragen (20 IP + 8 UDP). Das lässt meine maximal mögliche Anwendungsnachricht auf 1430 Bytes zurück! Aber wenn ich im Internet nach dieser Zahl suche, sehe ich stattdessen 1472. Mache ich diese Berechnung hier falsch?

Ich möchte nur die maximale Anzahl an Anwendungsnachrichten herausfinden, die ich über das Kabel senden kann, ohne dass das Risiko einer Fragmentierung besteht. 1500 sind es auf keinen Fall, da darin die Frame-Header enthalten sind. Kann jemand helfen?


Die Verwirrung besteht darin, dass die Nutzlast tatsächlich bis zu 1500 Bytes groß sein kann und das ist die MTU. Wie groß ist also nun die In-the-Wire-Größe für eine Nutzlast von 1500? Laut dieser Tabelle kann sie bis zu 1542 Bytes groß sein.

Die maximale Anzahl von App-Nachrichten, die ich senden kann, beträgt also 1472 (1500 - 20 (IP) - 8 (UDP)), bei einer maximalen Leitungsgröße von 1542. Es erstaunt mich, wie kompliziert Dinge werden können, wenn sie eigentlich einfach sind. Und ich habe keine Ahnung, wie jemand auf die Zahl 1518 gekommen ist, wenn in der Tabelle 1542 steht.

Antwort1

Das Diagramm auf Wikipedia ist schrecklich. Hoffentlich ist das, was ich jetzt schreibe, klarer.


Das MaximumNutzlastbei 802.3 Ethernet sind es 1500 Bytes.
Das sind die Daten, die Sie über das Kabel senden möchten (und worauf sich die MTU bezieht).
[payload]<- 1500 Bytes

Die Nutzlast ist eingekapselt in einemEthernet-Frame(dadurch werden Quell-/Ziel-MAC, VLAN-Tag, Länge und CRC-Prüfsumme hinzugefügt. Das sind insgesamt 22 Bytes zusätzliches „Zeug“
[SRC+DST+VLAN+LENGTH+[payload]+CRC]<- 1522 Bytes

Der Frame wird über das Kabel übertragen -- bevor Ihre Ethernet-Karte das tut, steht sie im Grunde auf und schreit laut, um sicherzustellen, dass niemand anderes das Kabel benutzt (CSMA/CD) -- Dies ist diePräambelUndStart-of-Frame-Trennzeichen(SFD) -- zusätzliche 8 Bytes, so dass wir jetzt haben:
[Preamble+SFD+[Ethernet Frame]]<- 1530 Bytes

Wenn ein Ethernet-Transceiver mit dem Senden eines Frames fertig ist, muss er gemäß 802.3 12 Bytes Stille übertragen („Interframe Gap“), bevor er seinen nächsten Frame senden darf.
[Preamble+SFD+[Ethernet Frame]+Silence]<- 1542 Bytes über die Leitung übertragen.


Präambel, SFD und Interframe Gap zählen nicht als Teil des Frames. Sie dienen als Unterstützungsstruktur für das Ethernet-Protokoll selbst.

Die MTU bezieht sich auf die Nutzlast – sie ist die größte Dateneinheit, die Sie in das Paket packen können. Ein Ethernet-Paket mit einer MTU von 1500 Bytes ist also tatsächlich ein 1522-Byte-Frame und 1542 Bytes auf dem Kabel (vorausgesetzt, es gibt ein vLAN-Tag).

Die Antwort auf Ihre Frage lautet also:Was ist das größte Paket, das ich ohne Fragmentierung über 802.3-Ethernet senden kann?- Ist1500 Byte Nutzdaten.

JEDOCHDie Ethernet-Schicht ist möglicherweise nicht Ihr limitierender Faktor. Um herauszufinden, ob etwas unterwegs die MTU auf weniger als 1500 Byte Nutzdaten beschränkt, verwenden Sie eine der folgenden Möglichkeiten:

  • Windows: ping hostname -f -l sizeofdata(Technik, die John K erwähnt hat)
  • BSD:ping -D -s sizeofdata hostname
  • Linux:ping -M do -s sizeofdata hostname

Der größte Wert sizeofdatahierfür ist die MTU (über den jeweiligen Pfad, den Ihre Daten nehmen).

Antwort2

Dies hängt von der Datenmenge ab, die Sie in den Frame packen. Wenn Sie 1500 Byte Daten in einen Frame packen, beträgt Ihre gesamte Framegröße 1518 Byte. Bei 1472 Byte Daten ergibt sich eine gesamte Framegröße von 1500.

http://en.wikipedia.org/wiki/Ethernet_Frame

Wenn Sie die Fragmentierung wirklich testen möchten, können Sie dies am besten mit einem guten alten Ping mit ein paar Flags testen:

ping hostname -f -l datengröße

Das Flag -f führt dazu, dass der Ping fehlschlägt, wenn das Paket fragmentiert ist. Der Schlüssel zum Verständnis ist, dass „sizeofdata“ die Datenmenge ist, die Sie in eine Nachricht packen können, ohne dass diese fragmentiert wird. Wenn Sie also eine Nutzlast von 1500 senden, beginnt die Fragmentierung, sobald Sie über 1500 Bytes hinausgehen. Wenn Sie den Wert jedoch auf 1472 verringern (1500 – der 18-Byte-Overhead), werden Sie sehen, dass die Pings durchgehen.

Antwort3

Für den grundlegenden Ethernet_II-Frame beträgt die Frame-Größe 1518 Bytes (über oder abseits der Leitung). Diese besteht aus jeweils 6 Bytes für die Ziel- und Quelladresse, 2 Bytes für das Typfeld zwischen 46 und 1500 Bytes für die Nutzlast (in Ihrem Fall das gesamte IP-Paket mit seinem IP-Header und UDP-Header) und 4 Bytes für das FCS. Darüber hinaus gibt es eine Beschränkung, wie klein ein Frame sein darf (64 Bytes). Aus diesem Grund reicht der Bereich von 46 Bytes (addieren Sie dies zu den beiden Adressen und dem Typ und dem FCS und Sie erhalten 64 Bytes - 46+6+6+2+4=64).

Wenn sich der Frame in einem Netzwerk befindet, das mehrere VLANs unterstützt, und Sie den Frame mit einem VLAN-Tag versehen müssen, wird vor dem Typfeld ein zusätzliches Feld hinzugefügt. Dieses ist 4 Byte lang. Dies bedeutet nun, dass der Größenbereich für die Nutzlast am unteren Ende um 4 Bytes reduziert werden kann und immer noch mindestens 64 Bytes beträgt. Daher die 42. (Also 42+6+6+2+4 + 4 für den VLAN-Tag = 64)

Wenn also der Bereich 1500-42 angegeben wird, bedeutet das nicht 1500 minus 42, sondern dass alles zwischen 1500 und 42 Byte gültig ist. Auf dem Draht könnte dieser getaggte Frame bis zu 1522 Byte groß sein (wenn nur ein Tag verwendet wird, oder 1526, wenn zwei Tags verwendet werden). Nichts davon erklärt die Zahl 1542.

Um diese Zahl zu ermitteln, müssen Sie berücksichtigen, wie ein Frame über Ethernet gesendet werden kann. In einem Ethernet-LAN ​​gibt es keine Uhr, daher sendet der Sender eines Frames eine Reihe von Einsen und Nullen, um eine Uhr einzustellen. Dies wird als Präambel bezeichnet. Nicht jeder Zuhörer wird die gesamte Präambel „hören“, aber die meisten sollten einen Teil davon hören. Um das Ende der Präambel zu signalisieren, wird eines der letzten 8 gesendeten Bits umgedreht, sodass es statt 10101010 zu 10101011 wird. Dieses Byte wird als Start of Frame Delimiter (SDF) bezeichnet. Dies ist technisch nicht sinnvoll, um es außerhalb des Kabels zu erfassen, daher werden die 7 Bytes der Präambel und das 1-Byte-SDF normalerweise nicht gezählt, aber wenn sie gezählt würden, wäre unsere ursprüngliche 1518 jetzt 1526. Immer noch nicht 1542.

Nachdem ein Frame gesendet wurde, herrscht auf der Leitung eine erzwungene Stille, die als Inter-Frame-Gap bezeichnet wird. Dies entspricht einer Übertragung von 12 Bytes. Dies wird ebenfalls nicht gezählt oder erfasst, aber wenn dies der Fall wäre, kämen wir auf 1538 Bytes. Die einzige Möglichkeit, jetzt von 1538 auf 1542 zu kommen, besteht darin, zu sagen, dass der Frame markiert ist (d. h. er enthält den 4-Byte-Plan-Tag). Puh, endlich 1542.

Es liegt alles an der Terminologie. Ein Standard-Frame hat eine Länge von 1518 Bytes auf der Leitung (soweit es ein Erfassungsgerät betrifft). Ein getaggter Frame (einzelnes Tag) hat eine Länge von 1522 Bytes auf der Leitung. Diese belegen 1538 Bytes oder 1542 Bytes Übertragungsspeicherplatz auf der Leitung.

Hoffe, das trägt zur Klärung bei.

Antwort4

nein, Sie wollen eine Fragmentierung, deshalb müssen die Pakete fragmentiert werden, aber DF-Set sieht das so aus: eine zweispurige Autobahn mit einer ganzen Reihe von Sattelschleppern im Vergleich zur gleichen Autobahn mit einer ganzen Reihe kleiner Smart Cars, die beide zum gleichen Ziel fahren Sattelschlepper transportieren mehr Ladung, sind aber langsamer und können leichter verstopft werden Kleinere Autos transportieren weniger, sind aber schneller MSS ist auch nicht dasselbe wie MTU

verwandte Informationen