Sehe ich es richtig, dass bei dem TCP/IP-stack keine Möglichkeit vorgesehen ist Pakete zu senden, ohne dass vorher ein anderes Paket empfangen wurde?
Was ich konkret interessant fände wäre z.B. telnet.c so umzubauen, dass es über die Socket Daten senden kann, ohne dass vorher in dem telnetclient eine taste gedrückt würde, z.B. für Datenlogger zwecke, o.ä.
Eine Möglichkeit dies ohne einen riesen Aufwand zu realisieren habe ich bisher nicht gefunden?!??
Korrekt! Du kannst umständlichermassen dieHeader von ACK-Paketen zwischenspeichern und aus der main raus neue Pakete auf Basis der ACK-Pakete erzeugen und senden, aber besonders einfach ist das nicht.
Es hakt aber noch an anderen Stellen:
Nicht acknowledge Pakete werden nicht neu gesendet (können sie auch nicht, da sie nicht zwischengespeichert werden), die window-angabe ist nicht korrekt, es gibt unverständliche Warteroutinen in den tcp_add_bla funktionen uvm... Im Prinzip kann man da besser gleich über UDP kommunizieren.
Dann kann man noch an allen möglichen stellen Buffer overflows erzeugen (siehe Thread von Arne, hab selber auch noch so einige Stellen gefunden)
Und dann wäre da noch die INT4-Geschichte, die hier so einige Probleme (in Netzwerken mit viel Traffic) bereitet.
Den Status des ganzen würde ich eher mit "Proof of concept" bezeichnen, wenigstens den TCP-Part des Projektes.