woran erkennt man bei einem hexdump wo der ethernet header aufhört und der IP header beginnt?

2 Antworten

Ein Standard-Ethernet-II-Header hört mit dem Typenfeld auf, welches bei bei IPv4 mit 0800 gefüllt ist. Anschließend kommt das Versionsfeld des IP-Headers, danach die Header-Länge, die in der Regel auf 5 gesetzt ist:

08 00 45

mit der 4 beginnt der IPv4 Header. Das trifft in den meisten Fällen, aber natürlich nicht in jedem Fall. Bei ARP hast Du z. B. 0806 im Typenfeld stehen. Bei IPv6 lautet das Typenfeld 86dd, die Versionsnummer ist natürlich 6:

86 dd 6

Der IPv6 Header beginnt mit der 6.

Du kannst natürlich auch einfach die Bytes zählen: Der Ethernet Header hat 14 Bytes vor dem IP-Header. Bei VLAN-Tagging sind es 4 Byte mehr. Beim VLAN-Tagging hast Du im Type Field die 8100:

81 00 xx xx 08 00 45


KarlRanseierIII  04.10.2022, 20:54

Oder 88a8 bei 802.1ad (Q-in-Q), dann sind es (insgesamt) 8 Bytes.

Also erste 4er Gruppe 88a8, zweite 8100.

Nur der Vollständigkeit halber, auch wenn man das 'in the wild' wohl noch wenig zu sehen bekommt.

1

Kommt darauf an, ob in dem Netzwerk ein 802.1Q-Tag verwendet wird oder nicht.

Ohne den Tag sind die ersten 22 Bytes der Ethernet-Header, dann kommt der Payload in dem der IP-Header zu Beginn steht.
Mit dem Tag sind die ersten 26 Byte der Ethernet-Header.

Heisst also, dass die Startposition im Datenframe immer konstant ist. Aber wo der Beginn sich genau befindet, hängt davon ab, ob VLAN-Tagging genutzt wird oder nicht.


franzhartwig  04.10.2022, 14:47
Ohne den Tag sind die ersten 22 Bytes der Ethernet-Header, dann kommt der Payload in dem der IP-Header zu Beginn steht.

Der Ethernet-Header hat 18 Byte Länge: Absender- und Ziel-MAC-Adresse mit je 12 Byte, Type mit 2 Byte, 4 Byte FCS. Da die FCS am Ende hängt, hat man vor dem IP-Header nur 14 Byte. Du hast wohl die Präambel mitgezählt, die jedoch in Mitschnitten in der Regel nicht enthalten ist.

1
Xandros0506  04.10.2022, 15:14
@franzhartwig
Du hast wohl die Präambel mitgezählt

Richtig. Es ging in der Frage ja darum an welcher Stelle der IP-Header im Ethernet-Frame beginnt. Und da gehört rein vom Aufbau die Präambel dazu.
Wenn das in den Logs nicht enthalten ist, muss man eben die ersten vier Byte abziehen. (Ich hab das bisher noch nicht automatisiert auswerten müssen, wodurch ich da nicht drauf geachtet habe, ob das enthalten ist oder nicht.)

0
KarlRanseierIII  04.10.2022, 20:45
@Xandros0506

EIn Ethernetpaket enthält Preamble und SFD (L1), ein Ethernetframe (l2) nicht.

Der Fragesteller hat nicht explizit gesagt,, was von beiden gewünscht ist. Davon ab bräuchte es für ein L1 Sampling (also unterhalb des MAC-Blockes) sehr spezielle HW.

Insofern ist es naheliegend, daß ein einfacher Hexdump L2 Frames beinhaltet, die direkt mit Dst-MAC beginnen.

0