Hallo, normalerweise senden Ethernet-Teilnehmer eine ARP-Probe nach dem Link-up um herauszufinden, dass niemand anderes die eigene IP-Adresse verwendet. Beim LWIP-Stack scheint das nicht der Fall zu sein. Muss man dies als Option erst irgendwo aktivieren? (ARP ist bereits aktiviert und ARP-Anfragen warden auch vom LWIP-Stack beantwortet) Oder gibt es eine Möglichkeit ARP-Probes manuell zu versenden? Vielen Dank im Voraus. Stefan
Stefan K. schrieb: > normalerweise senden Ethernet-Teilnehmer eine ARP-Probe nach dem Link-up > um herauszufinden, dass niemand anderes die eigene IP-Adresse verwendet. Das Senden von "Gratitious ARP Responses" und das Hören auf fremde ARP Messages ist nirgendwo in den RFCs vorgeschrieben und damit auch kein Mangel. LWIP verhält sich in diesem Punkt völlig konform. fchk
>normalerweise senden Ethernet-Teilnehmer eine ARP-Probe nach dem Link-up >um herauszufinden, dass niemand anderes die eigene IP-Adresse verwendet. Nein!??!! Eine ARP-Anfrage wird gebroadcastet und hat als Absenderadresse die IP des anfragenden Rechners. Die Antwort geht als Unicast zurueck. Ein "Gratuitous ARP" wird in der Praxis bei HA-Konzepten verwendet, in denen Adressen "wandern" koennen, da muss dem (Layer2-)Netzwerk bekannt gemacht werden, dass eine gecachte (IP/MAC)-Adresse von einem Rechner zum anderen wandert. Die Gratuitous ARPs sieht man ohne ARP-Anfrage im realen Leben. Einige DHCP-Server machen einen ARP-Check, ob bei Vergabe einer IP diese nicht belegt ist. Dann nimmt man ARP, weil ARP kann man schlecht blocken, ICMP echo requests (aka "ping") schon. Vermutlich hast Du das Verhalten beim DHCP Server gesehen? (So zumindest bei IPv4.)
Hallo, ich habe die ARP-Probe (Source IP-Adresse = 0.0.0.0) bei einem Standard Windows Rechner und einem Standard Ethernet Switch gesehen (siehe Anhang, wireshark). Wisst ihr zufällig, wie der richtige Weg ware, solch eine ARP-Probe im LWIP-Stack zu initiieren? Die Idee wäre,die Funktion etharp_raw in etharp.c aufzurufen und Sender IP-Adresse 0.0.0.0 sowie Target MAC Adresse 00:00:00:00:00:00 zu übergeben. Ich brauche die Abfrage deshalb, weil ich mich mit meinem Ethernet Gerät in ein LAN verbinde, dessen IP-Subnetz ich zwar kenne, aber nicht weiß, welche IP-Adressen bereits verwendet werden. Ich suche mir also eine IP-Adresse aus und möchte sie per ARP-Probe dann testen, ob sie noch verfügbar ist. DHCP ist in diesem Netzwerk nicht verfügbar. Vielen Dank und Viele Grüße, Stefan
um deine idee zu festigen: Ich habe genau das in meinem TCP/IP-Stack implementiert, als fallback-lösung, wenn kein DHCP-Server verfügbar ist. Ich mache einfach einen ARP-Scan über einen IP-Bereich, und nehme die erste, von der ich keine Antwort erhalte. Ob und wie man das im lwIP implementiert/aktiviert, weiß ich jedoch nicht. Vieleicht ist das Thema "Zeroconf" für dich hilfreich. Das übernimmt genau deine gewünschte Funktion.
Nachtrag für alle mit Halbwissen: RFC2131 - Dynamic Host Configuration Protocol Section 2.2 [...] In some environments it will be necessary to reassign network addresses due to exhaustion of available addresses. In such environments, the allocation mechanism will reuse addresses whose lease has expired. The server should use whatever information is available in the configuration information repository to choose an address to reuse. For example, the server may choose the least recently assigned address. As a consistency check, the allocating server SHOULD probe the reused address before allocating the address, e.g., with an ICMP echo request, and the client SHOULD probe the newly received address, e.g., with ARP. [...] Die Adresse wird mittels ARP geprobed, natürlich mit Absender 0.0.0.0
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.