Forum: PC-Programmierung Windows ARP cache


von netzwerk (Gast)


Lesenswert?

Guten Morgen,

unter Windows 7 im Kommandofenster habe ich folgendes zum ARP cache 
festgestellt:

Wenn ich den ARP cache mit "arp -a" auslese, dann werden alle Einträge 
angezeigt.

 192.168.0.10          02-00-00-00-00-00     dynamisch
 192.168.0.15          01-02-03-04-05-06     dynamisch

Sobald ich aber einen ARP Eintrag von einer bestimmten IP Adresse 
192.168.0.12 auslesen möchte, dann erhalte ich einen ARP Eintrag.

 arp -a 192.168.0.12

 192.168.0.12          00-00-0c-07-ac-bd     dynamisch

Warum kann dies sein? Der ARP Eintrag für die IP Adresse 192.168.0.12 
müsste doch leer sein oder?

von Robert L. (lrlr)


Lesenswert?

vielleicht macht arp in diesem fall (nur eine IP angegeben) ja 
automatisch eine "loockup" (who has)

von netzwerk (Gast)


Lesenswert?

Wenn ich meine C# Applikation das erstemal starte, dann werden dreimal 
ARP request packete (192.169.0.10; 192.168.0.12; 192.168.0.15) gesendet. 
Dies passiert mit der Funktion SendARP.
1
[DllImport("iphlpapi.dll", ExactSpelling = true)]
2
        public static extern int SendARP(int DestIP, int SrcIP, byte[] pMacAddr, ref int PhyAddrLen);

Bei der IP Adresse 192.168.0.12 ist das erstemal auch kein ARP Eintrag 
vorhanden. Ist auch richtig so. Nur wenn ich dann das zweitemal die 
Applikation starte, dann erhalte ich einen ARP Eintrag bei dieser IP 
Adresse.

von Michael S. (e500)


Lesenswert?

netzwerk schrieb:
> Bei der IP Adresse 192.168.0.12 ist das erstemal auch kein ARP Eintrag
> vorhanden. Ist auch richtig so. Nur wenn ich dann das zweitemal die
> Applikation starte, dann erhalte ich einen ARP Eintrag bei dieser IP
> Adresse.

Das ist wie Kaffeesatz lesen, woher sollen wir wissen, was Dein Programm 
alles schönes macht!?

Erklär doch mal, wieso es beim erste Mal richtig ist, dass für die .12 
kein ARP-Eintrag kommt und beim zweiten Mal ist es dann falsch!?
Gibt es in dem Moment kein System mit der IP .12 und es ist deshalb 
falsch?
Wie wäre es, einfach mal einen Wireshark / tcpdump zu verwenden?

von netzwerk (Gast)


Lesenswert?

Send arp request Methode:
1
[DllImport("iphlpapi.dll", ExactSpelling = true)]
2
        public static extern int SendARP(int DestIP, int SrcIP, byte[] pMacAddr, ref int PhyAddrLen);
3
4
        public string SendMACAddress(string ipAddress)
5
        {
6
            IPAddress dstIP = IPAddress.Parse(ipAddress);
7
            byte[] macAddr = new byte[6];
8
            int maxAddrLen = macAddr.Length;
9
            int retValue = SendARP((int)dstIP.Address, 0, macAddr, ref maxAddrLen);
10
            string macAddress = BitConverter.ToString(macAddr, 0, maxAddrLen);
11
            return macAddress;
12
        }

von netzwerk (Gast)


Lesenswert?

Erste Durchlauf:

1. Aufruf: mMacAddr = SendMACAddress("192.168.0.10"); --> mac addr 
vorhanden
2. Aufruf: mMacAddr = SendMACAddress("192.168.0.12"); --> mac addr leer
3. Aufruf: mMacAddr = SendMACAddress("192.168.0.15"); --> mac addr 
vorhanden

Zweiten Durchlauf:

1. Aufruf: mMacAddr = SendMACAddress("192.168.0.10"); --> mac addr 
vorhanden
2. Aufruf: mMacAddr = SendMACAddress("192.168.0.12"); --> mac addr 
vorhanden
3. Aufruf: mMacAddr = SendMACAddress("192.168.0.15"); --> mac addr 
vorhanden

Im zweiten Durchlauf müsste bei der IP Adresse 192.168.0.12 kein arp 
Eintrag auszulesen sein.

von Michael S. (e500)


Lesenswert?

netzwerk schrieb:
> Im zweiten Durchlauf müsste bei der IP Adresse 192.168.0.12 kein arp
> Eintrag auszulesen sein.

WARUM NICHT?????

Schreib doch einfach mal, WARUM da keiner sein darf und nimm Dir nen 
Wireshark, dann siehst Du mit 99,9999999%iger Sichherheit, weshalb da 
plötzlich einer ist!

von netzwerk (Gast)


Lesenswert?

Ich habe ganz vergessen zu erwähnen, dass der Teilnehmer 192.168.0.12 
absichtlich nicht am Rechner angeschlossen ist. Nur die anderen beiden 
Teilnehmer sind mit dem Rechner via Hub verbunden. Das ist genau das 
Problem. Trotzdem das der Teilnehmer mit der IP 192.168.0.12 nicht mit 
dem Rechner verbunden ist, erhalte ich beim zweiten Ausführen der 
Funktion SendMACAddress eine ungültige MAC Adresse.

von netzwerk (Gast)


Lesenswert?

In der Kommandozeile unter Windows kann ich bei zweiten Durchlauf keinen 
ARP Eintrag zur IP Adresse 192.168.0.12 sehen.

arp -a

Dies ist auch richtig so.

von Robert L. (lrlr)


Lesenswert?

google sagt:

https://de.wikipedia.org/wiki/Hot_Standby_Router_Protocol

was auch immer das ist..

von Michael S. (e500)


Lesenswert?

Wenn die angegebenen MAC-Adressen stimmen suchst Du nach einem Gerät von 
Cisco. Vielleicht hilft Dir das ja!? Evt. könnte es auch Proxy-ARP sein 
...

von netzwerk (Gast)


Lesenswert?

Danke für eure Unterstützung.

Bei zweiten Auslen erhalte ich nämlich folgende MAC Adresse:

"00-00-0C-07-AC-BD"

Laut wikipedia Artikel 
(https://de.wikipedia.org/wiki/Hot_Standby_Router_Protocol) müsste es 
sich hier um eine virtuelle MAC Adresse handeln. Aber so ganz habe ich 
das nicht verstanden.

von netzwerk (Gast)


Lesenswert?

Ich komme nochmals auf das Thema zurück.

Ist es ratsam, dann die virtuelle MAC Addresse in der Applikation zu weg 
zu filtern?

von Eddy C. (chrisi)


Lesenswert?

Dazu müsste man wissen, warum Du Dich überhaupt mit ARP beschäftigst, 
bzw. wofür Du ARP vergewaltigen willst.

Vielleicht solltest Du einfach wieder ein paar OSI-Layer hochkommen.

von Planlos (Gast)


Lesenswert?

Eddy C. schrieb:
> Dazu müsste man wissen, warum Du Dich überhaupt mit ARP beschäftigst,
> bzw. wofür Du ARP vergewaltigen willst.

Die letzten paar Kerle, die hier was mit Visual-Basic, Windows, ARP und 
DHCP machen wollten, hatten vor irgendwelche ESP8266/Arduinos im lokalen 
Netz zu finden.
Vielleicht ist der TE hier auch so einer, ist da irgendwo ein Nest?

> Vielleicht solltest Du einfach wieder ein paar OSI-Layer hochkommen.

Seh ich auch so. DHCP-Client auf die ESPs, Auffinden per UDP-Broadcast.

Einfach, sicher und portabel. Kein Gefrickel mit ARP-Caches, kein 
Screen-Scraping von Router-Configurations-Webseiten.

von netzwerk (Gast)


Lesenswert?

Hallo, mir geht es eigentlich nur darum, dass ich beim zweiten Senden 
vom ARP Request eine falsche MAC Adresse erhalte. Die ersten fünf Bytes 
von der MAC Adresse siehen dann so aus: "00-00-0C-07-AC"
Es handelt sich dabei um eine virtuelle MAC Adresse. Ich verstehe trotz 
dem Wikipedia nicht, wie dazu kommen kann.

von Robert L. (lrlr)


Lesenswert?

du wurdest gefragt WARUM du "ARP Request" sendest..

diese Frage zu beantworte wäre u.U: sinnvoll, weil du dich vielleicht! 
mit sachen quälst die du überhaupt nicht bräuchtest..

aber egal: es scheint ja um HSRP zu gehen, hast du sowas überhaupt?

: Bearbeitet durch User
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.