Einzelnen Beitrag anzeigen

Assertor

Registriert seit: 4. Feb 2006
Ort: Hamburg
1.296 Beiträge
 
Turbo C++
 
#19

Re: [idUDPClient] Broadcast auf allen Interfaces raus senden

  Alt 9. Mär 2009, 15:54
Hi,

Zitat von gsh:
Ich habe das Gefühl wir reden aneinander vorbei
Mag sein, bin gerade am Arbeiten

Zitat von gsh:
PC1 <--> PC2 <--> PC3 (PC1 kann nur mit PC2 reden, PC3 kann nur mit PC2 reden, PC2 mit beiden)

PC1:
LAN: IP: 192.168.1.100

PC2: (zwei Netzwerkadapter)
LAN1: Höhere Priorität, IP: 192.168.1.200
LAN2: Niedrigere Priorität, IP: 192.168.2.200

PC3:
LAN: IP: 192.168.2.100

Wenn PC2 jetzt einen Broadcast auf allen Adapter sendet (wie du richtig gesagt hast auch der Sinn der Sache ist), dann wird (ohne spezielle Config) die Source IP 192.168.1.200 verwendet. PC1 filtert die Source IP heraus und kann nun ein Antwort Packet an PC2 schicken. PC3 erhält das Packet zwar auch kann aber keine Antwort schicken da die Ziel Adresse (192.168.1.200) für Ihn nicht erreichbar ist.

Wenn ich die IP zum senden explicit auf 192.168.2.200 setze dann würde das ganze gleich sein nur umgekehrt. (PC1 könnte nicht zurücksenden, PC3 schon).
Ja, richtig - aber das Problem hat nichts mit Indy oder Delphi zu tun. Das ist Netzwerktechnik Sowas wird entweder über die 1) Subnetzmaske (Subnetting/Supernetting) oder 2) Routen/Forwarding gelöst (letzteres wäre nur am PC2 möglich).

Das ist ja das bekannte Spiel wenn man LANs verbindet: Wenn alle Rechner aus 192.168.0.0 - 192.168.255.255 sich "sehen" können müssen, muß die Netzmaske 255.255.0.0 sein. Mit der üblichen 255.255.255.0 wären z.B. 192.168.100.x und 192.168.200.x nicht im gleichen Subnetz.

Es gäbe auch noch die o.g. Directed Broadcasts, die aber in RFC2644 wegen DoS-Attacken per Default nicht mehr von Routern weitergeleitet werden (sollen).

Als Problem sehe ich auch, daß Ethernet-Broadcast mit der Zieladresse 255.255.255.255 von Routern nicht weitergeleitet werden. Dann müßte man in Richtung Multicast gehen.

Zitat von gsh:
Einen Broadcast für jede IP zu versenden ist auch ihn meinen Augen nicht zielführend.

Ich weiß nicht genau wie ihr diese Broadcast Routine implementiert habt und deshalb wäre es interessant zu wissen ob die Indys alle Adapter selber durchgehen und dann bei jedem Adapter einen Broadcast raus senden oder ob die diese Aufgabe von einer tieferen Ebene erledigt wird?
Indy durchläuft die Adapter nicht selbst. Unter Windows läuft das im Endeffekt über die WinSocks.

Aber zurück zu Deinem Problem, geh das anders an: Der Broadcast sollte unabhängig von der Source-IP überall ankommen (ist ja eben ein 255.255.255.255 Broadcast wenn kein BoundIP vorliegt). Die Source-IP ist für den Broadcast vollkommen egal - der Client kann ja seinerseits mit einem Broadcast antworten und teilt seine IP mit. Das kann man auch schön in ein kleines Datenpacket/format (Record streamen) packen. Vielleicht noch verschlüsseln und gut ist.

Ich verstehe einfach noch nicht, was das genaue Problem ist - das ist alles mit Netzwerktechnik lösbar und hat wenig speziell mit Indy oder sogar Windows zu tun. Das ist nicht böse gemeint. Das ein VPN-Tunnel bzw. -Router Broadcasts überträgt, hängt von dessen Einstellungen ab. Genauso das entsprechende Routing.

Kannst Du etwas genauer beschreiben, was Du exakt machen möchtest (falls ich es überlesen habe)?

Gruß Assertor
Frederik
  Mit Zitat antworten Zitat