woran erkennt man bei einem hexdump wo der ethernet header aufhört und der IP header beginnt?
Hallo, frage im Titel, danke für eure antworten
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
Jo, richtig. Die Variante mit 802.1Q und PPPoE wäre auch noch eine Betrachtung wert ...
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.
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.
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.)
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.
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.