Forum: Mikrocontroller und Digitale Elektronik Ping, ARping oder was sonst ist hier die Frage...


von BastelFix (Gast)


Lesenswert?

Moin,


ich versuche gerade eine Ethernet-Kommunikation aufzubauen. Der 
Einfachheit halber, wollte ich zuerst eine Ping-Kommunikation 
realisieren.

Es gibt ja auch schon einige Projekte dazu.

Vom Windows-PC aus also ein "ping 192.168.178.30" generiert....

Beim meinem Empfänger kommt nun folgendes an:

ByteNr.
[1] 0xFF ; TARGET MAC START  <- versteh ich ;)
[2] 0xFF
[3] 0xFF
[4] 0xFF
[5] 0xFF
[6] 0xFF  ; Target MAC (Broadcast) end
[7] 0x00  ; SRC MAC START    <- ist auch klar ;)
[8] 0x50
[9] 0x70
[10] 0xAA
[11] 0x22
[12] 0x00  ; SRC MAC END
[13] 0x08  ; <- so dachte ich mir das (0x0800 = IP, 0x0806  = ARP )
[14] 0x06  ; ARP Frame??? (Ich hätte hier 0x00 erwartet)
[15] 0x00
[16] 0x01
[17] 0x08  ; <- Oder hier IP-Kennung und die 4 Byte davor VLAN-TAG??
[18] 0x00
[19] 0x06
[20] 0x04
[21] 0x00
[22] 0x01
[23] 0x00
[24] 0x50   ; <- und hier hätte ich jtzt den IP-Type 01 -> ICMP erwartet
[25] 0x70   ; scheint aber die SRC-MAC zu sein grübel
[26] 0xAA
[27] 0x22
[28] 0x00
..........

Meine Fragen an euch:
- Ist das ein ARping? Wenn ja, hat einer eine gute Beschreibung dazu 
gefunden?
- Wie starte ich von einem WIndows 2000 Rechner dann einen (IP) ICMP 
ping?
- Gibt es ein Proggi, um unter Windows einen klar definierten 
Ethernet-Frame zu versenden? <- zum debuggen

Bin wirklich gespannt auf die Antworten!!

Viele Grüße
BastelFix

von Michael U. (Gast)


Lesenswert?

Hallo,

wenn die MAC des Interfaces, dem Deine gewünschte IP gehört (hier 
192.168.178.30) dem Rechner noch nicht bekannt ist, wird erstmal ein 
ARP-Request geschickt, um die MAC in Erfahrung zu bringen. Die 
Kommunikation im Ethernet ist ausschließlich MAC-basiert, erst darüber 
liegende Protokolle benutzen dann die IP.

Du mußt also erstmal ein ARP-Reply basteln, dann klappts auch mit ICMP.

PS: alles sehr verkürzt, bin kein Super-Netzwerker, habe aber den Kram 
mit dem ENC am AVR schon bis dahin und etwas weiter durchgekämpft.

Gruß aus Berlin
Michael

von Benny S. (b_stark)


Lesenswert?

> ...
>[13] 0x08  ; <- so dachte ich mir das (0x0800 = IP, 0x0806  = ARP )
>[14] 0x06  ; ARP Frame??? (Ich hätte hier 0x00 erwartet)
>[15] 0x00
>..

Ich kenn mich mit IP/TCP nicht wirklich gut aus aber du hast doch genau 
das was du beschreibst.

13 & 14 = 0x0806
15 = 0x00
also
>[13] 0x08  ; <- so dachte ich mir das (0x0800 = IP, 0x0806  = ARP )
>[14] 0x06  ;
>[15] 0x00  ; ARP Frame???

du bist nur verrutscht.

von Michael U. (Gast)


Lesenswert?

Hallo,

Nachtrag... 
http://www.tomshardware.de/lexikon/Address_Resolution_Protocol
oder Wiki haben mir da merklich weiter geholfen.

Gruß aus Berlin
Michael


von Daniel M. (usul27)


Lesenswert?

Für solche Sachen sollte man mal einen ordentlichen Sniffer 
installieren, dann siehst du auch genauer, welches Byte was tut.
Ziemlich brauchbar:
 http://www.networkchemistry.com/products/packetyzer.php

von Michael U. (Gast)


Lesenswert?

Hallo,

Wireshark (ehem. Ethereal) unter Windows hilft da schon viel weiter.

Allerdings habe ich den erst wirklich gebraucht, als ich mit TCP 
angefangen habe, da bin ich leider immernoch... :( Für ARP, ICMP, IP ist 
der Ablauf einer Verbindung und der Aufbau der Header eigentlich noch 
überschaubar.

Ich sollte eigentlich mal weitermachen damit. ;)

Gruß aus Berlin
Michael

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.