Am Fri den 28 Aug 2009 um 03:13:44PM +0200 schrieb Marcus Obst:
Hallo,
bisher habe ich (anscheinend) in dem Irrglauben gelebt, dass IP-Pakete (UDP, ICMP), wenn man sie an die ,,Broadcast''-Adresse 255.255.255.255 schickt, auf *ALLEN* physikalischen Netzwerkkarten ausgesendet werden...
...
(Auch wenn es fast Off-Topic ist, unter Windows scheint das ganze anders gelöst zu sein. Dort existiert per Default eine 255.255.255.255-Route für jedes Network-Device und der IP-Stack scheint auch dafür zu sorgen, dass ein Broadcast-Paket dann auf allen Geräten gesendet wird)
Letzteres kann ich nicht bestätigen, man muß auch dort auf jedem Interface seinen Broadcast absetzen. Die robusteste Lösung ist, das Paket auf allen Interfaces zu senden und anschließend alle mehrfach empfangenen Antworten auszusortieren (die Antwort wird von jedem Interface empfangen).
In unserem Fall ging es darum, einen Dienst bzw. ein Gerät zu erkennen, ähnlich wie das Konrad schon geschrieben hat. Ein schöner Implementierungsfehler ist in diesem Zusammenhang das Gerät mittels eines normalen Datagramms an die Absenderadresse antworten zu lassen anstelle ebenfalls einen Broadcast zu senden (haben unsere Kollegen in den Staaten so gemacht). Sehen sich beide Geräte nicht auf direktem Wege schlägt so die Erkennung fehl.
Hat jemand da andere Erfahrungen gemacht, kann man vielleicht in /proc oder /sys etwas einstellen?
Selbst wenn man das könnte, wäre es nicht sonderlich portabel, oder?
Tschau, andre