Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Netzwerk Latenz simulieren (https://www.delphipraxis.net/172941-netzwerk-latenz-simulieren.html)

ddcool 29. Jan 2013 20:21

Netzwerk Latenz simulieren
 
hallo liebe DPler,

ich hätte da mal eine Frage an die Super-Gehirne hier im Forum.
Ich bin gerade dabei ein kleines Tool zu schreiben, welches via Sockets als Server agiert und TCP Verbindungen entgegen nimmt.
Auf der anderen Seite hat es einen Client Socket der sich wiederum zu einem vordefinierten Server verbindet und den Datenverkehr
vom Socket Server transparent durchschleusen soll (und natürlich auch anders herum). Dies klappt soweit auch problemlos.
Ziel ist es dann, dass mein Tool die Pakete mit einem vordefinierten Delay verschickt, um eine Latenz im Netzwerk zu simulieren.

Mein Problem besteht darin, dass ein Client sich verbindet und natürlich sofort seinen TCP Handshake mit dem Server vollzieht.
Nun muss aber mein Tool erst die Verbindung (Client Socket) hergestellt haben um die Daten weiterleiten zu können, bevor der eigentliche
Client überhaupt Daten senden darf. Dies ist meiner Meinung nach nur zu bewerkstelligen, wenn man den TCP Handshake beim Server Socket
irgendwie verzögern kann. Also das SYN-ACK sollte so lange aufgehalten werden, bis der Client Socket seine Verbindung hat.

Ist das mit Sockets überhaupt möglich und wenn ja, wie?

Hier eine kleine Zeichnung, falls meine Beschreibung nicht einleuchtend ist ^^
Zur Info,

Programm XY ---> (ServerSocket:1477)MeinProgramm(ClientSocket:3389) ---> Server XY

Viele Grüße,
ddcool

BUG 29. Jan 2013 21:04

AW: Netzwerk Latenz simulieren
 
Wenn ich dich richtig verstanden habe, möchtest du den Handshake erst zwischen deinem Proxy und dem Client erst beenden, wenn der Proxy die Verbindung zum Server aufgebaut hat.
Das sollte möglich sein, indem du die Verbindung des Clients erst annimmst (accept), wenn du die Verbindung zum Server hergestellt hast.
Andererseits könntest du die Daten einfach zwischenspeichern.

Außerdem:
  • Ich könnte mir vorstellen, dass du für dein Tool auch mit den Größen der Sende/Empfangs-Buffer herumspielen möchtest.
  • Wenn du ernsthaft etwas testen möchtest, würde ich überlegen, ob eine fertige Lösung vielleicht besser wäre.

ddcool 30. Jan 2013 06:34

AW: Netzwerk Latenz simulieren
 
Guten Morgen BUG,

vielen Dank für die schnelle Antwort.
Wenn das also möglich ist den "accept" zu verzögern, würde ich dich bitten mir einmal kurz zu erläutern,
wie dies mit den Sockets funktioniert (TClientSocket & TServerSocket).

Zu deinen Bemerkungen:

1. Japp das soll aber erst viel später mal realisiert werden und trotzdem soll die Verbindung auch hier erst akzeptiert werden,
wenn die Verbindung Proxy->Server hergestellt ist.

2. Ich habe schon nach freier Software gesucht und auch ein Tool gefunden, welches aber nicht mehr so richtig weiterentwickelt wird.
Zudem verursacht dieses Tool selbst bei der Einstellung von 0ms Delay eine spürbare Latenz. Das ist unschön und man kann so nicht testen.


Grüße,
ddcool


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:42 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