Hallo Netzwerkexperten, wie kann ich meine eigenen Schaltungen mit Netzwerkanschluss im Netztwerk bekannt machen, so dass sie von angeschlossenen Rechnern gefunden werden? Meine Schaltungen bezieht die IP Adresse per DHCP. Für lwip gibt ein es kleines NetBIOS Addon, damit gelingt es unter Windows, die Karte unter ihrem NetBIOS Namen anzupingen. Da ich aber mehrere Geräte mit Seriennummer als NetBIOS Name (z.B. SCHALTUNG0815) im Netzwerk habe, klappt das auch nicht, denn ich kennen den Namen inkl. willkürlicher Seriennummer ja vorher nicht. Wenn ich den ARP- oder NetBIOS-Cache anschaue (arp -a bzw. nbstat) tauchen meine Geräte immer erst auf, wenn ich sie (nach manueller Adresssuche) angepingt habe. Gibt es einen Weg, dass meine Geräte im Netzwerk automatisch sichtbar werden? Z.b. dass mein Gerät zyklisch einen Broadcast verschickt "hallo es gibt mich und ich heisse SCHALTUNG4711". Aufgrund der Komplexität möchte ich uPnP gerne vermeiden, wisst Ihr einen anderen Weg?
Sollte es nicht genügen, den Namen beim Anfordern der IP-Adresse via DHCP anzugeben?
Das mache ich bereits; ich sehe im Sniffer auch, dass der Name beim Aushandeln der IP Adresse korrekt gesendet wird. Der DHCP Server sitzt im Router. Die Windows Stationen im Netz kümmern sich anscheinend nicht darum, denn der ping über Gerätename funktioniert erst bei Verwendung von NetBIOS. Haben diese kleinen Router für's Heimnetz einen DNS eingebaut? Und falls ja, was bewegt den dazu, meine Geräte aufzunehmen?
Die Namen lassen sich innerhalb eines Netzes auch ansprechen, wenn sie in den diversen Windows Listen nicht auftauchen. Netbios (on TCP) nutzt dazu einen Broadcast. Es geht auch per DNS, wenn der DHCP-Server mit dem DNS-Server identisch ist, wie bei den üblichen DSL-Routern.
Sven schrieb: > Der DHCP Server sitzt > im Router. Die Windows Stationen im Netz kümmern sich anscheinend nicht > darum, denn der ping über Gerätename funktioniert erst bei Verwendung > von NetBIOS. bei der fitz.box muss man die domaine mit dran hängen. ping HW0815.fritz.box ein ping HW0815 ist eigentlich falsch, weil es kein vollständiger (FQN) ist.
TCP/IP ist ja "nur" das Protokoll, welches die Daten transportiert. Das baut nunmal darauf auf, daß derjenige, der eine Verbindung aufbauen will, Namen oder Adresse des Verbindungspartsners kennt. Du wirst nicht drumrumkommen, oberhalb von TCP/IP eine weitere Schicht aufzusetzen, die die automatische Verwaltung neu hinzukommender oder sich wieder abmeldender Teilnehmer innerhalb deines Systems übernimmt. Oliver
Es gibt einen ARP modus, bei dem das Gerät seine Mac Addresse periodisch broadcastet. Unsolicited ARP request frames, on the other hand, are broadcast ARP requests initiated by a host owning an IP address. Example 2.3. Unsolicited ARP request frames [root@tristan]# arping -q -c 3 -U -I eth0 192.168.99.35 [root@masq-gw]# tcpdump -c 3 -nni eth2 arp tcpdump: listening on eth2 06:28:23.172068 arp who-has 192.168.99.35 (ff:ff:ff:ff:ff:ff) tell 192.168.99.35 06:28:24.167290 arp who-has 192.168.99.35 (ff:ff:ff:ff:ff:ff) tell 192.168.99.35 06:28:25.167250 arp who-has 192.168.99.35 (ff:ff:ff:ff:ff:ff) tell 192.168.99.35 [root@masq-gw]# ip neigh show Bei meinen Geräten, wenn Link up, für 5 Minuten werden diese ARP jede 30 Sekunden gesendet, aber nach jedem Senden wird der Interwall um 30 Sekunden erhöht. Also 30 Sek, 60 Sek, 90 Sek, 120 Sek usw bis 300 Sekunden überschritten werden. Logischer Link, nicht HW Link, da ja die Addresse bezogen werden muss.
Apple verwendet dazu folgendes: http://de.wikipedia.org/wiki/Bonjour_%28Apple%29 Ich denke, das baut auf allgemeinen und dokumentierten Standards auf und liesse sich nachbauen.
pic user schrieb: > Es gibt einen ARP modus, bei dem das Gerät seine Mac Addresse periodisch > broadcastet. Das hat er aber nichts von, weil der Name darin nicht vorkommt.
Ja, das stimmt, aber die eigene Mac-Adressen sind bekannt und so kann ein Installer darauf zugreifen, sei es HTTP, ..., und es funktioniert auch oder speziell wenn noch keine IP-Adresse konfiguriert ist. Z.b. Ich kaufe meine Mac-Adressen in 1000 Stück und dementsprechend sind sie mir, bzw meinem Installer als Range bekannt. Weiters ist es so, daß z.B. ein Ethernet Paket minimum 46byte haben muss, ein Ping Paket hat 32 byte, also kann man hinter einem Ping Paket den Identifier usw anhängen, sowie auch größere Ping Pakte (64byte) senden. Das Padding geschieht automatisch, im embedded Bereich werden da aber gerne Daten angehängt.
Danke für die vielen Antworten. Nun, selbst wenn dem DNS (also üblicherweise dem Heim-Router) mein Gerät mit Namen bekannt ist, weiß deswegen die Windows-Station im Netz noch nichts von der Existenz meines Geräts. Und wie gesagt, die Namensauflösung ist eh nicht das Problem, das funktioniert, sei es nun über den DNS im Router oder NetBIOS. Meine Windows-Station weiß nur leider nicht, welchen Namen sie anfragen soll. Das was Apple macht ist auch unter AutoIP und uPnP bekannt. Wenn ein DHCP Server vorhanden ist, wird eh nicht auf AutoIP zurückgegriffen. Und uPnP ist mir wie gesagt zu komplex für meine embedded Lösung. Insofern klingt der Vorschlag von pic user ziemlich interessant, zyklisch solche ARP Broadcasts rauszuschicken. Heisst das, dass meine Geräte-MAC-Adresse nebst IP irgendwann von selbst im arp Cache meiner Windows Station auftaucht? Das wäre super, dann könnte ich anhand der MAC Adressbereichs meine eigenen Geräte rausfiltern. Das werd ich mir mal ansehn! ps. @pic user: wo kaufst du deine Adressen 1000er Weise? Ich kenne nur ein 4096 Stück Paket für 600$
Ich kaufe Microchip 2Kbit Speicher mit MAC Addresse. Gibt es in verschiedenen Ausführungen, auch die mit nur einer I/O. Ist zwar teurer als verschiedenen Blöcke kaufen, aber auch flexibler und teilweise ist eine kleines EEProm auch praktisch. Ich verwende meistens den 24AA02E48T-I/OT , kostet mich 12€cent aber schon bei 100 Stück ist er glaube ich 13-14€cent.
Nochwas, wenn du keine DHCP Addresse bekommst, oder auch keine IP-Addresse konfiguriert ist, dann ist es auch wichtig den Braodcast zu machen, dann scheint nähmlich ein Incomplete Eintrag auf und du kannst, da du die Mac-Addresse angezeigt bekommst, einen statischen ARP-Eintrag machen, um dann eine IP-Addresse zu configurieren. Auch das Padding der 32byte Addresse ist interessant. Ein Ansatz aus der Praxis: 16byte padding: Padding is defined as data[1:0] xor mac[2:1] xor Checksum(header) + mac[2:1] - Checksum(header) + encrypted_word[(index-1)&7] padding: byte0 : Checksum (byte*9+byte) byte1-4 : MAGIC pattern byte3-15: Payload 7bit data ascii + 4bit flags. 12 char string. Optional the data[1:15] is xored with Checksum in order to hide the magic pattern.
DU hast geschrieben, dass du auf Upnp verzichten möchtest, aber ein SSDP Paket zu verschicken ist doch recht easy und für deine Zwecke vollkommen ausreichend.
Danke Archie, ich dachte dieses uPnP ist ne riesen Protokoll Suite, und davon wollte ich die Finger lassen. Aber diese SSDP alive Botschaft ist ja nur ein HTTP über UDP, das hab ich schnell hingekriegt und es funktioniert auch. Mein Gerät taucht nun im arp Cache der angeschlossenen Rechner auf. Allerdings müssen die Rechner uPnP unterstützen, bei WinXP SP2 muss man das erst aktivieren. Evtl. ist der Tipp von pic_user also doch noch einen Versuch Wert, auch wenn es im ersten Moment noch etwas verwirrend klingt, die Beschreibung.
Hast du mal was über Ping tunneling was gehört ? Das geht auch mit ARP und ermöglicht deiner SW unabhänging von IP addressen usw dein Gerät zu finden, also ideal für eine Konfiguriersw um deine Produkte zu erkennen und ev. auch etwas mehr. Wie du hier siehst, http://www.erg.abdn.ac.uk/~gorry/eg3561/inet-pages/arp.html im blauen Padding kannst du reinschreiben was du willst, wird aber bei Ethernet-sniffern angezeigt. Deshalb wird der Bereicht gerne etwas versteckt, wie oben beschrieben. Der Aufbau für deine Implementierung ist hier beschrieben, http://wiki.wireshark.org/Gratuitous_ARP Upnp ist ein extremer Sicherheitsgau. Im privaten Umfeld ev. tragbar, im betrieblichen generell nicht.
Ich würde ja wirklich gern auf ein zusätzliches Protokoll wie SSDP verzichten wenn es auch mit ARP geht, aber ich krieg's nicht hin. pic_user, du sprichst oben von Unsolicited ARP, ich denke du meinst das, was auf den meisten Seiten als Gratuitous ARP bezeichnet wird? Wenn ich mir das durchlese klingt das in der Theorie sehr gut: einfach einen ARP Request zur eigenen IP senden, und fertig. Ich habe das in meinem Gerät eingebaut, siehe Screenshot. Der Sniffer erkennt das ganze auch als Gratuitous Paket. Die Windows Rechner im Netzwerk (XP und Win7) sind davon aber unbeeindruckt. In deren ARP-Cache tut sich gar nichts (arp -a) Was mache ich falsch - sollte das Gerät von alleine im ARP Cache auftauchen, oder muss ich hier noch eine Aktualisierung antriggern? Ich habe auch versucht, ausser einem gratuitous Request eine gratuitous Reply zu senden, und als destination MAC 000000000000 statt FFFFFFFFFFFF. Macht alles keinen Unterschied. Oder muss ich irgendwas in die Padding Bytes schreiben? Ich habe eigentlich keinen Bedarf, Zusatzinformationen zu übertragen. Wenn mein Device im ARP Cache auftaucht, erkenne ich es anhand des von mir genutzten MAC Adressbereichs.
Oh, also laut diesem Artikel komme ich mit Gratuitous ARP doch nicht weiter: Beitrag "Wieso lernt Windows XP nicht aus einem Gratuitous ARP Paket?" Die Pakete werden wohl nur verarbeitet, wenn die Absenderstation eh schon im ARP Cache steht :-(
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.