Windows ARP cache

Gast #4257331
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?
Gast #4257337
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.
#4257342
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?
Gast #4257346
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
        }
Gast #4257352
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.
Gast #4257365
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.
Gast #4262037
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.
Gast #4262163
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.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.