Nechat příjemce poslat zpět potvrzení je nejlepší způsob, i když se to "cítí trapně". Pamatujte, že IP může rozdělit vaše data do více paketů a znovu je sestavit, a to by se dalo udělat vícekrát během přenosu, pokud různé směrovače v cestě mají různé MTU, takže vaše pojetí „paketu“ a TCP se nemusí lišit.
Mnohem lepší je poslat svůj „paket“, ať už je to řetězec, serializovaný objekt nebo binární data, a nechat přijímače, aby provedl všechny kontroly, které potřebuje, aby tam byl, a pak poslat zpět potvrzení.
Odesílající TCP ví, kdy jsou data potvrzena druhým koncem, ale jediným důvodem, proč to dělá, je to, že ví, kdy může data zlikvidovat (protože někdo jiný je nyní zodpovědný za to, že je dostane do aplikace na druhé straně). ).
Obvykle tyto informace odesílající aplikaci neposkytuje, protože (navzdory zdání) by to ve skutečnosti neznamenalo hodně k odesílající aplikaci. Potvrzení neznamená, že přijímající aplikace data získala a udělala s nimi něco rozumného – znamená pouze to, že se o to odesílající TCP již nemusí starat. Data mohou být stále přenášena – například v rámci zprostředkujícího proxy serveru nebo v přijímajícím zásobníku TCP.
„Úspěšně přijatá data“ je ve skutečnosti koncept na úrovni aplikace – to, co znamená, se liší v závislosti na aplikaci (například pro mnoho aplikací by mělo smysl považovat data za „přijatá“ až poté, co byla synchronizována na disk na přijímajícím zařízení. postranní). To znamená, že to musíte implementovat sami, protože jako vývojář aplikace jste opravdu jediný, kdo může vědět, jak to pro vaši aplikaci dělat rozumně.