Ich brauche Hilfe bei der Umsetzung einer Netzwerküberwachung!
Wir haben einen File-Server auf dem die Daten der Familie gespeichert sind. Dieser Läuft aktuell Tag und Nacht.
Ich möchte mit meinem Adrduino und Ethernet Shield das Netzwerküberwachen und so bald ein Gerät im Netzwerk vorhanden ist den Server starten und auch wieder runterfahren. Das runterfahren und starten funktioniert bereits.
Die Überwachung würde ich gerne per Ping durchführen. Der Arduino soll die Geräte anpingen und das Ergebnis auswerten. Leider konnte ich bisher keine Möglichkeit zum Senden eines Ping Signals finden! Ich hoffe Ihr könnt mir weiter helfen.
Ping oder ICMP ist sogar schon eine "Schicht" zu hoch. Denn viele Geräte blocken auch pings ganz gerne (Stichwort Personal Firewall).
Es reicht aber schon ein erfolgreicher ARP-Request aus. Zumindest, wenn sich die Geräte im gleichen Netz befinden.
Bei einem ARP-Request (der im übrigen einem lokalen Ping immer vorausgeht) wird per Broadcast gefragt, welcher Host im lokalen Netz auf die (zu pingende) IP (x.x.x.x) reagiert. Der betroffene Host antwortet dann auf diesen Request mit seiner MAC-Adresse, an die dann die weitere Kommunikation erfolgen kann.
Der Vorteil ist, ARP kann nicht geblockt werden, da es integraler Bestandteil der lokalen Netzwerk-Kommunikation ist.
Super Danke. Ping geht so weit! Gibts für ARP auch eine Lib?
Jetzt habe ich nur noch folgendes Problem ich bin ein wenig zu Doof um das mit den Bytes zu verstehen. Bräuchte da mal einen denk Anstoß.
Ich habe die IP Adresse ja in Byte Form: byte pingAddr[] = {192,168,0,100};
jetzt möchte ich die letzte Zahl ja hochlaufen lassen bis 150. Wie stelle ich das am besten an?
ARP wird nicht im Arduino gemacht, sondern direkt im WizNet-Chip, also: nein, es gibt keine Bibliothek und wird auch keine geben.
Übrigens: In Deinem Netz gibt's bestimmt einen DHCP-Server (der vergibt die IP-Adressen), meist ist der im Router eingebaut. Die meisten Router haben eine Administrationsseite, auf welcher die vergegebenen Leases (also die benutzten IP-Adressen) aufgelistet werden. Wenn Du Dir diese greifst, kommst Du ohne das Pingen an die gewünschte Information und es funktioniert auch, wenn auf einem Rechner der sog. Echo-Reply (also die Ping-Antwort) per Firewall unterbunden wird.
pylon:
ARP wird nicht im Arduino gemacht, sondern direkt im WizNet-Chip, also: nein, es gibt keine Bibliothek und wird auch keine geben.
Wenn es ein WIZnet5100 ist, dann hast Du recht, wobei man ggf. trotzdem an die Informationen kommen könnte. Ist es ein ENC28J60 dann macht der Arduino ARP und das Ganze wäre relativ einfach.