Es ist der beste Weg, den Empfänger eine Bestätigung zurücksenden zu lassen, auch wenn es sich "unangenehm" anfühlt. Denken Sie daran, dass IP Ihre Daten möglicherweise in mehrere Pakete aufteilt und sie wieder zusammensetzt. Dies könnte während einer Übertragung mehrmals erfolgen, wenn verschiedene Router auf dem Weg unterschiedliche MTUs haben und Ihr Konzept von "einem Paket" und TCPs möglicherweise nicht übereinstimmen.
Es ist viel besser, Ihr "Paket" zu senden, egal ob es sich um eine Zeichenfolge, ein serialisiertes Objekt oder binäre Daten handelt, und den Empfänger alle erforderlichen Überprüfungen durchführen zu lassen, damit es da ist, und dann eine Bestätigung zurückzusenden.
Das sendende TCP weiß zwar, wann die Daten vom anderen Ende bestätigt werden, aber der einzige Grund dafür ist, dass es weiß, wann es die Daten verwerfen kann (weil jetzt jemand anderes dafür verantwortlich ist, sie an die Anwendung auf der anderen Seite zu bringen ).
Normalerweise werden diese Informationen nicht an die sendende Anwendung weitergegeben, da dies (trotz des Anscheins) nicht wirklich bedeuten würde viel zu der sendenden Anwendung. Die Bestätigung bedeutet nicht, dass die empfangende Anwendung die Daten bekommen und etwas Sinnvolles damit gemacht hat – es bedeutet lediglich, dass sich das sendende TCP nicht mehr darum kümmern muss. Die Daten könnten noch unterwegs sein – beispielsweise innerhalb eines zwischengeschalteten Proxy-Servers oder innerhalb des empfangenden TCP-Stacks.
"Daten erfolgreich empfangen" ist wirklich ein Konzept auf Anwendungsebene - was es bedeutet, hängt von der Anwendung ab (z. B. wäre es für viele Anwendungen nur sinnvoll, die Daten als "empfangen" zu betrachten, sobald sie auf der empfangenden Festplatte synchronisiert wurden Seite). Das bedeutet, dass Sie es selbst implementieren müssen, denn als Anwendungsentwickler sind Sie wirklich der einzige, der weiß, wie es für Ihre Anwendung sinnvoll ist.