Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Indy UDP Client sendet manchmal doppelt (https://www.delphipraxis.net/167431-indy-udp-client-sendet-manchmal-doppelt.html)

Poolspieler 29. Mär 2012 11:44

Indy UDP Client sendet manchmal doppelt
 
Hallo,
auf manchen Laptops mit aktivierten LAN und aktivierten WLAN tritt folgendes auf:

Beispiel:
LAN-Adresse des Laptops: 192.168.1.10
WLAN-Adresse des Laptops: 172.20.1.10
Kommunikationspartner im LAN: 192.168.1.20

Vom Laptop wird per UDP-Client ein UDP-Paket an 192.168.1.20 geschickt. Normalerweise geht das Paket EINMAL raus. Die Source-Address (aufgezeichnet mit Wireshark) ist dabei die 192.168.1.10.

PROBLEM:
Manchmal (unter welchen Umständen weiß ich noch nicht) wird das Paket ZWEIMAL verschickt. Einmal mit Source-Adress 192.168.1.10 UND nocheinmal mit Source-Adress 172.20.1.10 --> Der Kommunikationsparter erhält beide Pakete und kommt mit dem Zweiten Paket nicht klar (hier werde ich auch noch nach einer robusteren Lösung suchen, das ist aber eine andere Baustelle...)

Kann mir jemand sagen, warum das Paket MANCHMAL zweimal raus geht? Ist das ein Windows-Problem (WinXP) oder doch ein Software-Problem (Delphi...)???

Viele Grüße,

Poolspieler

Klaus01 29. Mär 2012 12:07

AW: Indy UDP Client sendet manchmal doppelt
 
Hallo,

warum das manchmal auftritt - ist mir auch ein Rätsel.
.. aber kannst Du den UDP Client nicht fest an eine IP-Adresse binden?
.. oder das Routing so einrichten, dass die 192.168.xx.yy nicht über das 172er Netz erreichbar ist?

Nachtrag:
Haben beide Interfaces eine default-route?
Pro Rechner sollte meines Wissens immer nur eine existieren.

Grüße
Klaus

Poolspieler 29. Mär 2012 12:51

AW: Indy UDP Client sendet manchmal doppelt
 
Hallo Klaus,
vielen Dank für Deine Antwort!

Für das WLAN (ist über DHCP angebunden) ist ein Standardgateway und DNS-Servereintrag vorhanden.

Das LAN hat eine feste IP ohne Gateway und DNS.

Das mit dem "fest an eine IP-Adresse binden" könnte kompliziert werden, weil die Software auf vielen unterschiedlichen PCs/Laptops läuft und ich (nicht ohne weiteres...) feststellen kann, an welche(s) Interface/IP der Kommunikationspartner angeschlossen ist. Dies könnte zwar der User über einen Dialog einstellen, dann muss ich aber davon ausgehen, dass der User weiß was er tut. Und wir wissen ja, dass dies oft nicht der Fall ist... :-) und dann klingelt das Telefon bei mir... :-)


Die Routingeinstellungen sollten eigentlich gepasst haben. Der User hat unter den Netzwerkeinstellungen von WinXP nur die feste IP für LAN und DHCP für WLAN vergeben. Weitere Routingeinstellungen wurden nicht vorgenommen.


Ich bin gerade dabei, das Problem auf meinem Laptop zu reproduzieren - habe es aber (noch) nicht geschafft... Wie immer...

Viele Grüße,

Poolspieler

shmia 29. Mär 2012 13:29

AW: Indy UDP Client sendet manchmal doppelt
 
Bei UDP ist das grundsätzlich so, dass das gleiche Pakete zweimal (oder noch öfter) empfangen werden kann.

Deshalb benötigt man innerhalb der UDP-Daten eine Paket-Zähler damit der Empfänger feststellen kann, dass er das Paket schon einmal bekommen hat.
Wenn die Datenpakete so durchnumeriert werden, dann kann der Empfänger feststellen, ob ein Paket verloren gegangen ist oder ob es doppelt angekommen ist.
Manchmal können sich die Pakete bei UDP sogar überholen.
Der Sender schickt P1,P2,P3 und der Empfänger bekommt P1,P3,P2.

Aphton 29. Mär 2012 14:31

AW: Indy UDP Client sendet manchmal doppelt
 
Oder vlt
P1,P3,P3, P1

(P2 fehlt, P3 und P1 kommen doppelt vor)

Poolspieler 29. Mär 2012 15:31

AW: Indy UDP Client sendet manchmal doppelt
 
Hallo zusammen,
vielen Dank für Eure Antworten!

Die Risiken eines nicht verbindungsorientierten Protokolls sind mir schon bewußt.

Das Pakete nicht in der Reihenfolge ankommen, in der sie gesendet wurden, sollte (davon ging ich bisher aus...) NUR dann auftreten können, wenn sich Router (oder "intelligente" Layer3-Switches) zwischen den Kommunikationspartnern befinden.
Dies trifft in meinem Fall aber nicht zu.


Mein Problem:
Das Delphi-Programm (bzw. der Windows-Rechner) schickt ein Paket, auf dem LAN-Netz mit der Source-Adresse des WLAN-Netzes raus --> und das darf/kann doch nicht sein. Der Teilnehmer im LAN-Netz kann unmöglich die Antwort an das WLAN-Netz schicken (er hat ja kein Gateway und ist mit WLAN nicht verbunden...)
Ich bin etwas Ratlos... :roll:


Gruß,

Poolspieler

shmia 29. Mär 2012 17:07

AW: Indy UDP Client sendet manchmal doppelt
 
Zitat:

Zitat von Poolspieler (Beitrag 1159273)
Die Risiken eines nicht verbindungsorientierten Protokolls sind mir schon bewußt.

Trotzdem versuchst immer noch auf Netzwerk- / Routungsebene einen Fehler zu finden.
Denk' einfach nicht darüber nach und akzeptiere die Eigenschaften von UDP.

Wenn ein Notebook sowohl per Ethernet als auch per WLAN mit einem LAN verbunden ist, dann gibt es 2 aktive Netzwerkadapter und damit auch zwei Wege über den jedes Ziel im LAN erreicht werden kann.

Poolspieler 29. Mär 2012 17:22

AW: Indy UDP Client sendet manchmal doppelt
 
Zitat:

Zitat von shmia (Beitrag 1159287)
Wenn ein Notebook sowohl per Ethernet als auch per WLAN mit einem LAN verbunden ist, dann gibt es 2 aktive Netzwerkadapter und damit auch zwei Wege über den jedes Ziel im LAN erreicht werden kann.

Das ist schon richtig. Nur (eigentlich) darf/sollte auf dem LAN kein Paket mit der Source-IP des WLAN verschickt werden. Umso genauer ich darüber nachdenke, umso mehr glaube ich an einen BUG in Windows - oder im Treiber der Netzwerkkarte.
Soweit ich dies jetzt überblicken kann, ist es mir NICHT möglich:
1. Den Fehler auf meiner Hardware zu reproduzieren
2. Für Abhilfe auf Windowsseite zu sorgen. --> Ich werde im Kommunikationspartner (ein Embedded-System) wohl oder übel das Subnet der Source-IP mit dem Subnet des Embedded-Systems vergleichen müssen. NUR wenn diese identisch sind, wird eine Antwort auf diese Anfrage gesendet (bzw. diese Anfrage überhaupt ausgewertet...)

Vielen Dank für Euere Anregungen! :thumb:


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:09 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz